Revision: 201027
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 06 Jul 2010 15:36:38 +0300
changeset 49 f50f4094acd7
parent 48 14460bf2a402
child 54 7f274f99c152
child 62 8ef833fbf5aa
Revision: 201027 Kit: 2010127
cbsref/csyrefplugins/csy27010/.cproject
cbsref/csyrefplugins/csy27010/.project
cbsref/csyrefplugins/csy27010/Bmarm/GSM0710U.def
cbsref/csyrefplugins/csy27010/Bwins/GSM0710U.def
cbsref/csyrefplugins/csy27010/Bwins/csy27010u.def
cbsref/csyrefplugins/csy27010/group/BLD.INF
cbsref/csyrefplugins/csy27010/group/Csy27010.iby
cbsref/csyrefplugins/csy27010/group/Csy27010.mmp
cbsref/csyrefplugins/csy27010/group/Csy27010UnitTest.iby
cbsref/csyrefplugins/csy27010/group/GSM0710.UID.CPP
cbsref/csyrefplugins/csy27010/inc/ChannelMgrBase.h
cbsref/csyrefplugins/csy27010/inc/ChannelMgrCmdData.h
cbsref/csyrefplugins/csy27010/inc/ChannelMgrCtrl.h
cbsref/csyrefplugins/csy27010/inc/CommFrameReaderAo.h
cbsref/csyrefplugins/csy27010/inc/CommFrameWriterAo.h
cbsref/csyrefplugins/csy27010/inc/CommReadWriteBaseAo.h
cbsref/csyrefplugins/csy27010/inc/CsyDebugLogger.h
cbsref/csyrefplugins/csy27010/inc/CsyGlobals.h
cbsref/csyrefplugins/csy27010/inc/CsyMsgBufBPFrame.h
cbsref/csyrefplugins/csy27010/inc/Mux0710Protocol.h
cbsref/csyrefplugins/csy27010/inc/PortC32Interface.h
cbsref/csyrefplugins/csy27010/inc/PortC32InterfaceBase.h
cbsref/csyrefplugins/csy27010/inc/PortC32InterfaceIp.h
cbsref/csyrefplugins/csy27010/inc/Portfactory.h
cbsref/csyrefplugins/csy27010/inc/etools.h
cbsref/csyrefplugins/csy27010/inc/timeouter.h
cbsref/csyrefplugins/csy27010/src/ChannelMgrBase.cpp
cbsref/csyrefplugins/csy27010/src/ChannelMgrCmdData.cpp
cbsref/csyrefplugins/csy27010/src/ChannelMgrCtrl.cpp
cbsref/csyrefplugins/csy27010/src/CommFrameReaderAo.cpp
cbsref/csyrefplugins/csy27010/src/CommFrameWriterAo.cpp
cbsref/csyrefplugins/csy27010/src/CommReadWriteBaseAo.cpp
cbsref/csyrefplugins/csy27010/src/CsyDebugLogger.cpp
cbsref/csyrefplugins/csy27010/src/CsyMsgBufBpFrame.cpp
cbsref/csyrefplugins/csy27010/src/DllMain.cpp
cbsref/csyrefplugins/csy27010/src/Mux0710Protocol.cpp
cbsref/csyrefplugins/csy27010/src/PortC32Interface.cpp
cbsref/csyrefplugins/csy27010/src/PortC32InterfaceBase.cpp
cbsref/csyrefplugins/csy27010/src/PortC32InterfaceIp.cpp
cbsref/csyrefplugins/csy27010/src/PortFactory.cpp
cbsref/csyrefplugins/csy27010/src/timeouter.cpp
cbsref/csyrefplugins/csy27010/test/Csy27010UnitTest.cpp
cbsref/csyrefplugins/csy27010/test/Csy27010UnitTest.h
cbsref/csyrefplugins/csy27010/test/Csy27010UnitTest.mmp
cbsref/csyrefplugins/csy27010/test/unit_test_base/unitTestBase.cpp
cbsref/csyrefplugins/csy27010/test/unit_test_base/unitTestBase.h
cbsref/csyrefplugins/group/bld.inf
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/allcallreleasecompleteobserver.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atanswer.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atchld.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atclcc.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atdialvoice.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atdtmfvts.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/athangup.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/athangupcommandrecords.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atring.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atwaitforcallhandler.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/callinformationquerycompletenotify.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/unsolicitedcommandcallcontrolhandler.h
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atanswer.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atchld.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atclcc.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atdialvoice.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atdtmfvts.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/athangup.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/athangupcommandrecords.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atring.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atwaitforcallhandler.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/unsolicitedcommandcallcontrolhandler.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/activecommandstore.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/asynchelperrequest.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandbase.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandcontrolbase.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandexecuteobserver.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandtype.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/athelpercommand.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atipcrequestcompleteobserver.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atmanager.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atswitchonlinemode.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atunsolicited.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atunsolicitedobserver.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/globalphonemanager.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/ltsycallinformation.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/ltsycallinformationmanager.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/ltsycommondefine.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/mslogger.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/panic.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/requestbase.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/respondbufparser.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/tsyconfg.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/unsolicitedeventmonitor.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/unsolicitedparams.h
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/activecommandstore.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/asynchelperrequest.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atcommandbase.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atcommandcontrolbase.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/athelpercommand.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atmanager.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atswitchonlinemode.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atunsolicited.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/globalphonemanager.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/ltsycallinformation.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/ltsycallinformationmanager.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/mslogger.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/panic.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/requestbase.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/respondbufparser.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/tsyconfg.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/unsolicitedeventmonitor.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/unsolicitedparams.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atdetectnetwork.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetbatteryinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetcellinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetfdnstatus.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetfdnsupport.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetimei.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetmanufacturer.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetmodel.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetmodemstatus.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetnetworkinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetnetworkregistrationstatus.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetphonecellinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetrevision.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetsignalstrength.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetsimstatusready.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atnetworkregstatuschange.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atnotifycellinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atselectnetwork.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atselectnetworkmode.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atsetnotifycell.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getcurrentnetworkinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getfdnstatus.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getoperatorname.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getphoneid.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/initializephone.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/notifybatteryandsignal.h
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atdetectnetwork.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetbatteryinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetcellinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetfdnstatus.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetfdnsupport.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetimei.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetmanufacturer.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetmodel.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetmodemstatus.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetnetworkinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetnetworkregistrationstatus.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetphonecellinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetrevision.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetsignalstrength.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetsimstatusready.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atnetworkregstatuschange.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atnotifycellinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atselectnetwork.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atselectnetworkmode.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atsetnotifycell.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getcurrentnetworkinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getfdnstatus.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getoperatorname.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getphoneid.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/initializephone.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/notifybatteryandsignal.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkgetphonestoreinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstorecache.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstoredelete.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstoreinitialise.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstoreread.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstorewrite.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkgetphonestoreinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorecache.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstoredelete.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstoreinitialise.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstoreread.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorewrite.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/inc/atphbkengetinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/inc/atphbkenread.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/inc/atphbkenreadall.h
cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/src/atphbkengetinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/src/atphbkenread.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/src/atphbkenreadall.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/activatecontextandgetaddr.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsattach.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsconfig.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextactivate.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextconnect.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextdeactivate.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextdelete.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsdetach.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsgetcontextaddr.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsntwkregstatus.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsntwkregstatuschange.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsqosprofile.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/initialisepdpcontext.h
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/activatecontextandgetaddr.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsattach.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsconfig.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextactivate.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextconnect.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextdeactivate.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextdelete.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsdetach.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsgetcontextaddr.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsntwkregstatus.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsntwkregstatuschange.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprssetqosprofile.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/initialisepdpcontext.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atmessagestoreinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsack.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsreceive.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmssend.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstoredelete.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstoreinfo.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstoreread.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstorereadall.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstorewrite.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/smsatutil.h
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atmessagestoreinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsack.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsreceive.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmssend.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstoredelete.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstoreinfo.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstoreread.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstorereadall.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstorewrite.cpp
cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/smsatutil.cpp
cbsref/telephonyrefplugins/atltsy/bwins/licenseeskeletontsyu.def
cbsref/telephonyrefplugins/atltsy/bwins/stltsyu.def
cbsref/telephonyrefplugins/atltsy/comms/inc/commengine.h
cbsref/telephonyrefplugins/atltsy/comms/inc/commreader.h
cbsref/telephonyrefplugins/atltsy/comms/inc/commwriter.h
cbsref/telephonyrefplugins/atltsy/comms/inc/mcommobserver.h
cbsref/telephonyrefplugins/atltsy/comms/inc/stringparser.h
cbsref/telephonyrefplugins/atltsy/comms/src/commengine.cpp
cbsref/telephonyrefplugins/atltsy/comms/src/commreader.cpp
cbsref/telephonyrefplugins/atltsy/comms/src/commwriter.cpp
cbsref/telephonyrefplugins/atltsy/comms/src/stringparser.cpp
cbsref/telephonyrefplugins/atltsy/config/AT-LTSY(default).cfg
cbsref/telephonyrefplugins/atltsy/config/AT-LTSY(wavcom).cfg
cbsref/telephonyrefplugins/atltsy/config/AT-LTSY.cfg
cbsref/telephonyrefplugins/atltsy/config/configatmodem.bat
cbsref/telephonyrefplugins/atltsy/config/modifycenrep.pl
cbsref/telephonyrefplugins/atltsy/config/modifycommdb.pl
cbsref/telephonyrefplugins/atltsy/config/modifyfeaturedb.pl
cbsref/telephonyrefplugins/atltsy/data/snap.cfg
cbsref/telephonyrefplugins/atltsy/data/systemtest.cfg
cbsref/telephonyrefplugins/atltsy/eabi/licenseeskeletontsyu.def
cbsref/telephonyrefplugins/atltsy/eabi/stltsyu.def
cbsref/telephonyrefplugins/atltsy/group/bld.inf
cbsref/telephonyrefplugins/atltsy/group/stltsy.mmp
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsycallcontrolhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsycallcontrolmultipartyhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsycellbroadcasthandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyfactoryv1.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsypacketserviceshandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonebookenhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonebookhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonebookonhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonehandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysathandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysecurityhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysimhandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysmshandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysupplementaryserviceshandler.h
cbsref/telephonyrefplugins/atltsy/handler/inc/ltsymacros.h
cbsref/telephonyrefplugins/atltsy/handler/inc/misdispatchinterfacesupported.h
cbsref/telephonyrefplugins/atltsy/handler/src/cltsycallcontrolhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsycallcontrolmultipartyhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsycellbroadcasthandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsyfactoryv1.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsypacketserviceshandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonebookenhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonebookhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonebookonhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonehandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsysathandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsysecurityhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsysimhandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsysmshandler.cpp
cbsref/telephonyrefplugins/atltsy/handler/src/cltsysupplementaryserviceshandler.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/group/bld.inf
cbsref/telephonyrefplugins/atltsy/integrationtest/group/te_integration_stltsysuite.iby
cbsref/telephonyrefplugins/atltsy/integrationtest/group/te_integration_stltsysuite.mmp
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/te_integration_stltsysuitedefs.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/te_integration_stltsysuiteserver.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/te_integration_stltsysuitestepbase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyasyncoperation.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolbase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolcustomapiterminateallcalls.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialbadcall.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialemergencycall.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialemergencycallstopallcalls.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialhangupcase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialselfcall.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolnotifyincomingcallcase1.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolnotifyincomingcallcase2.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolnotifyincomingcallcase3.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolphoneterminateallcalls.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolswapcalls.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallshareddata.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyclosephone.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyclosesms.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyclosesmsstore.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetmessagestoreinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonebatterycap.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonebatteryinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonesignalcap.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonesignalstrength.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsymodel.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsymodel.inl
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyopenphone.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyopensms.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyopensmsstore.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkclose.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkdelete.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkdeleteinvalidindex.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkgetstoreinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkopen.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkread.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkreadinvalidindex.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkwrite.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkwriteinvalidindex.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetcellinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetcurrentnetworkinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetdetectednetworks.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetdetectednetworkscancel.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetfdnstatus.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegethomenetwork.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetnetworkregistrationstatus.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetphoneid.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphoneregistercellinfochangenotification.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphoneselectnetwork.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonesetnetworkselectionsetting.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonestepbase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonestorebase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonestoreshareddata.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktactivatecontext.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktattachnetwork.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktclosecontext.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktclosecontextqos.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktclosepacket.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktdeactivatecontext.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktdeletecontext.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktdetachnetwork.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetcontextconfig.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetcontextinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetcontextqosprofile.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetdefaultparams.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetdynamiccapabilities.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetnwkregistrationstatus.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetservicestatus.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetstaticcapabilities.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktinitialisecontext.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktopencontext.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktopencontextqos.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktopenpacket.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktsetcontextconfig.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktsetcontextqosprofile.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktsetdefaultparams.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktshareddata.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktshareddata.inl
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktteststepbase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyshareddata.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsack.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsatutil.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsbase.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmscontrolreceivesmscase1step.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmscontrolsendsmscase1step.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsdelete.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsdeleteall.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsdeleteinvalidindex.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsnack.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsread.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsreadinvalidindex.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsreceive.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmssend.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmssendinvalidparam.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsshareddata.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsstore.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsstoregetinfo.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmswrite.h
cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmswriteinvalidparam.h
cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stllsycallcontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stllsysmscontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsySuite.script
cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsyphonebook.script
cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsyphonecontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsypktcontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/src/te_integration_stltsysuiteserver.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/te_integration_stltsysuitestepbase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyasyncoperation.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolbase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolcustomapiterminateallcalls.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialbadcall.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialemergencycall.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialemergencycallstopallcalls.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialhangupcase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialselfcall.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolnotifyincomingcallcase1.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolnotifyincomingcallcase2.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolnotifyincomingcallcase3.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolphoneterminateallcalls.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolswapcalls.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallshareddata.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyclosephone.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyclosesms.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyclosesmsstore.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetmessagestoreinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonebatterycap.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonebatteryinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonesignalcap.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonesignalstrength.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsymodel.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyopenphone.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyopensms.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyopensmsstore.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkclose.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkdelete.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkdeleteinvalidindex.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkgetstoreinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkopen.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkread.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkreadinvalidindex.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkwrite.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkwriteinvalidindex.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonedetectednetworks.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonedetectednetworkscancel.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetcellinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetcurrentnetworkinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetfdnstatus.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegethomenetwork.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetnetworkregistrationstatus.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetphoneid.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphoneregistercellinfochangenotification.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphoneselectnetwork.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonesetnetworkselectionsetting.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonestepbase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonestorebase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonestoreshareddata.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktactivatecontext.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktattachnetwork.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktclosecontext.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktclosecontextqos.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktclosepacket.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktdeactivatecontext.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktdeletecontext.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktdetachnetwork.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextconfig.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextqosprifile.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextqosprofile.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetdefaultparams.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetdynamiccapabilities.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetnwkregistrationstatus.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetservicestatus.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetstaticcapabilities.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktinitialsecontext.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktopencontext.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktopencontextqos.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktopenpacket.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktsetcontextconfig.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktsetcontextqosprofile.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktsetdefaultparams.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktshareddata.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktteststepbase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyshareddata.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsack.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsatutil.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsbase.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmscontrolreceivesmscase1step.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmscontrolsendsmscase1step.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsdelete.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsdeleteall.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsdeleteinvalidindex.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsnack.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsread.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsreadinvalidindex.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsreceive.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmssend.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmssendinvalidparam.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsshareddata.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsstore.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsstoregetinfo.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmswrite.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmswriteinvalidparam.cpp
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsycallcontrol.ini
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsycallcontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsysmscontrol.ini
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsysmscontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsyphonebook.script
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsyphonecontrol.ini
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsyphonecontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsypktcontrol.ini
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsypktcontrol.script
cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsysuite.ini
cbsref/telephonyrefplugins/atltsy/integrationtest/xml/te_integration_stltsysuite.xml
cbsref/telephonyrefplugins/atltsy/integrationtest/xml/te_integration_stltsysuite/te_integration_stltsytest.xml
cbsref/telephonyrefplugins/atltsy/integrationtest/xml/te_integration_stltsysuite/testexecuteservers/te_integration_stltsysuite.xml
cbsref/telephonyrefplugins/group/bld.inf
package_definition.xml
smsprotocols/smsstack/gsmu/src/Gsmumsg.cpp
smsprotocols/smsstack/test/smsstackbaseteststeps.cpp
telephonyprotocols/pdplayer/group/pdp.mmp
telephonyprotocols/pdplayer/inc/PDPCPR.h
telephonyprotocols/pdplayer/src/102822EF.rss
telephonyprotocols/pdplayer/src/PDPCPR.cpp
telephonyprotocols/pdplayer/src/PDPSCPR.cpp
telephonyprotocols/pdplayer/src/ecom_impl.cpp
telephonyprotocols/pdplayer/traces/fixed_id.definitions
telephonyprotocols/pdplayer/umts/spudtel/inc/meteldriverstrategy.h
telephonyprotocols/pdplayer/umts/spudtel/src/eteldriverstrategies.cpp
telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/configs/te_umtsgprsscpr_captest.cfg
telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/configs/te_umtsgprsscpr_captest2.cfg
telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/group/bld.inf
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/TE_RawIpSize.cfg
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_SpudNetworkSide.xml
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6.cfg
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6_pdpcpr.cfg
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_spudNetworkSide_r4_and_r5.xml
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/group/BLD.INF
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.cpp
telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.h
telephonyprotocols/qosextnapi/src/sblpextn.cpp
telephonyprotocols/qosextnapi/traces/fixed_id.definitions
telephonyprotocols/rawipnif/src/Receiver.cpp
telephonyprotocols/rawipnif/src/Sender.cpp
telephonyserver/etelpacketdata/dtsy/dpcktlog.cpp
telephonyserver/etelsimtoolkit/dtsy/Dsatlog.cpp
telephonyserver/etelsimtoolkit/tetel/TSatLog.cpp
telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmphonefactorytsy.h
telephonyserverplugins/common_tsy/group/bld.inf
telephonyserverplugins/common_tsy/group/ctsy.iby
telephonyserverplugins/common_tsy/phonetsy/data/ltsydata.ini
telephonyserverplugins/common_tsy/phonetsy/group/phonetsy.mmh
telephonyserverplugins/common_tsy/phonetsy/src/cmmphonefactorytsy.cpp
telephonyserverplugins/common_tsy/test/component/group/bld.inf
telephonyserverplugins/common_tsy/test/component/group/te_ctsy_component.iby
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/bwins/licenseetsyu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/bwins/mocklicenseetsyu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/data/ltsydata_mock.ini
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/licenseetsyu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/mocklicenseetsyu.def
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/group/bld.inf
telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/group/mockltsy.mmp
telephonyserverplugins/common_tsy/test/component/scripts/mockltsy_copy_ini_file.script
telephonyserverplugins/common_tsy/test/component/scripts/mockltsy_remove_ini_file.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_airtimeduration_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_alternatelineservice_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_alternatingcall_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_apncontrollist_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_authorisation_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_broadcastmessaging_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callbarring_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcompletion_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcost_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callemergency_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callforwarding_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callinformation_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callownership_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callwaiting_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_conferencecallcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_customipc_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_datacallcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_dtmf_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_eapauthentication_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_enstore_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fax_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_featmgr_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fixeddialling_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fullrun.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ims_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_indicator_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_knownfailures_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_lbs_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_linecontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mailboxnumbers_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mbmscontext_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_messagewaiting_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mms_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_multicallcallcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_multimediacallcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networkcontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networksecurity_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_onstore_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetcontext_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetcontext_individual_no_adaptive_tcp_receive_window.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetqos_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetservice_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_personalisation_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonebookstore_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonebookstore_individual_fail.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonecapability_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonecontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phoneidentity_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonepower_hwrm_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonepower_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonesecurity_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonestore_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_privacy_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_sessionmanagement_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_signalstrength_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smartcardapplication_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smsmessaging_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smspstore_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smsstore_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_subscriberinfo_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_supplementaryservicecaps_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_systemstate_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_telephonyaudiocontrol_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_timeout_all.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_trafficchannel_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usernetworkaccess_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usertousersignalling_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usimapplication_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ussdmessaging_individual.script
telephonyserverplugins/common_tsy/test/component/scripts/te_ctsyintegration_mbms_auto.script
wapstack/wapmessageapi/bmarm/WAPMSGCLIU.DEF
wapstack/wapmessageapi/bwins/WAPMSGCLIU.DEF
wapstack/wapmessageapi/client/wapmessage.cpp
wapstack/wapmessageapi/client/wapmsgclisource.mmpi
wapstack/wapmessageapi/eabi/wapmsgcliU.DEF
wapstack/wapmessageapi/group/bld.inf
wapstack/wapmessageapi/group/hwWapStackConfig.ini
wapstack/wapmessageapi/group/releasenote.txt
wapstack/wapmessageapi/group/swapmsg.mmp
wapstack/wapmessageapi/group/wap-stack_wapmessage.history.xml
wapstack/wapmessageapi/group/wap-stack_wapmessage.mrp
wapstack/wapmessageapi/group/wapmessage.iby
wapstack/wapmessageapi/group/wapmsgcli.mmp
wapstack/wapmessageapi/inc/wapmessage.h
wapstack/wapmessageapi/inc/wapmsgerr.h
wapstack/wapmessageapi/sws/101fbb36.rss
wapstack/wapmessageapi/sws/ActiveSocket.cpp
wapstack/wapmessageapi/sws/ActiveSocket.h
wapstack/wapmessageapi/sws/CLWSPPduHandler.cpp
wapstack/wapmessageapi/sws/CLWSPPduHandler.h
wapstack/wapmessageapi/sws/WapBoundCLPush.cpp
wapstack/wapmessageapi/sws/WapBoundCLPush.h
wapstack/wapmessageapi/sws/WapBoundCLWSP.cpp
wapstack/wapmessageapi/sws/WapBoundCLWSP.h
wapstack/wapmessageapi/sws/WapBoundWDP.cpp
wapstack/wapmessageapi/sws/WapBoundWDP.h
wapstack/wapmessageapi/sws/WapFullySpecCLPush.cpp
wapstack/wapmessageapi/sws/WapFullySpecCLPush.h
wapstack/wapmessageapi/sws/WapFullySpecCLWSP.cpp
wapstack/wapmessageapi/sws/WapFullySpecCLWSP.h
wapstack/wapmessageapi/sws/WapFullySpecWDP.cpp
wapstack/wapmessageapi/sws/WapFullySpecWDP.h
wapstack/wapmessageapi/sws/WapMessageApiAgent.cpp
wapstack/wapmessageapi/sws/WapMessageApiAgent.h
wapstack/wapmessageapi/sws/WapMsgUtils.cpp
wapstack/wapmessageapi/sws/WapMsgUtils.h
wapstack/wapmessageapi/sws/WapSwsLog.cpp
wapstack/wapmessageapi/sws/WapSwsLog.h
wapstack/wapmessageapi/sws/WapSwsTimeOut.h
wapstack/wapmessageapi/sws/WapSwsTimeout.cpp
wapstack/wapmessageapi/sws/swswapmsg.cpp
wapstack/wapmessageapi/sws/swswapmsgsource.mmpi
wapstack/wapmessageapi/te_wapstack/bmarm/wapstacksuiteu.def
wapstack/wapmessageapi/te_wapstack/bwins/wapstacksuiteu.def
wapstack/wapmessageapi/te_wapstack/group/CdmaWapStackSuite.iby
wapstack/wapmessageapi/te_wapstack/group/WapStackSuite.iby
wapstack/wapmessageapi/te_wapstack/group/WapStackSuite.mmp
wapstack/wapmessageapi/te_wapstack/scripts/Te_WapStackSuite.script
wapstack/wapmessageapi/te_wapstack/scripts/UDPPush.script
wapstack/wapmessageapi/te_wapstack/scripts/WSP.script
wapstack/wapmessageapi/te_wapstack/scripts/WapBoundPush.script
wapstack/wapmessageapi/te_wapstack/scripts/WapBoundWDP.script
wapstack/wapmessageapi/te_wapstack/scripts/WapBoundWSP.script
wapstack/wapmessageapi/te_wapstack/scripts/WapFullySpecPush.script
wapstack/wapmessageapi/te_wapstack/scripts/WapFullySpecWDP.script
wapstack/wapmessageapi/te_wapstack/scripts/WapFullySpecWSP.script
wapstack/wapmessageapi/te_wapstack/src/WapBoundCLPushSteps.cpp
wapstack/wapmessageapi/te_wapstack/src/WapBoundCLPushSteps.h
wapstack/wapmessageapi/te_wapstack/src/WapBoundWDPSteps.cpp
wapstack/wapmessageapi/te_wapstack/src/WapBoundWDPSteps.h
wapstack/wapmessageapi/te_wapstack/src/WapBoundWSPSteps.cpp
wapstack/wapmessageapi/te_wapstack/src/WapBoundWSPSteps.h
wapstack/wapmessageapi/te_wapstack/src/WapFullySpecCLPushSteps.cpp
wapstack/wapmessageapi/te_wapstack/src/WapFullySpecCLPushSteps.h
wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWDPSteps.cpp
wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWDPSteps.h
wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWSPSteps.cpp
wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWSPSteps.h
wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteDefs.h
wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteServer.cpp
wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteServer.h
wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteStepBase.cpp
wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteStepBase.h
wapstack/wapmessageapi/te_wapstack/testdata/UDPPush.ini
wapstack/wapmessageapi/te_wapstack/testdata/WSP.ini
wapstack/wapmessageapi/te_wapstack/testdata/WapSIMTSY.txt
wapstack/wapmessageapi/te_wapstack/testdata/WapStackSuite.ini
wapstack/wapmessageapi/te_wapstack/testdata/WapStackSuite.xml
wapstack/wapmessageapi/te_wapstack/testdata/WapStackSuite_Config.ini
wapstack/wapmessageapi/te_wapstack/testdata/pushpdu.bin
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/.cproject	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,257 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?fileVersion 4.0.0?>
+
+<cproject>
+<storageModule buildFromInf="true" buildingTestComps="true" cleanLevel="0" concurrentBuildJobs="4" defaultMMPChangedAction="0" infBuildComponents="" infFileLocation="group\BLD.INF" macrosFile="" makeEngineToUse="make" manageDependencies="true" moduleId="com.nokia.carbide.cdt.builder.carbideCPPBuilder" overrideMakeEngine="false" overrideWorkspaceSettings="false" promptForMMPChangedAction="true" useConcurrentBuilding="true" useDebugMode="false" useIncrementalBuilder="false" useKeepGoing="false" useMMPMacros="true"/>
+<storageModule moduleId="org.eclipse.cdt.core.settings">
+<cconfiguration id="Emulator Debug (WINSCW) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Emulator Debug (WINSCW) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Emulator Debug (WINSCW) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MWLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MWCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__WINSCW__;__SUPPORT_CPP_EXCEPTIONS__;__SYMBIAN32__;_UNICODE;_DEBUG;__WINS__;__CW32__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787458" useMmpMacrosCache="true"/>
+<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+</cconfiguration>
+<cconfiguration id="Emulator Release (WINSCW) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Emulator Release (WINSCW) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Emulator Release (WINSCW) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MWLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MWCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__WINSCW__;__SUPPORT_CPP_EXCEPTIONS__;__SYMBIAN32__;_UNICODE;NDEBUG;__WINS__;__CW32__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787489" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Debug (ARMV5) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Debug (ARMV5) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Debug (ARMV5) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__GENERIC_MARM__;__SUPPORT_CPP_EXCEPTIONS__;__SYMBIAN32__;_UNICODE;__ARMCC_2_2__;__EPOC32__;__ARMCC_2__;__EABI__;_DEBUG;__MARM_ARMV5__;__ARMCC__;__MARM__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787520" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Release (ARMV5) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Release (ARMV5) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Release (ARMV5) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__GENERIC_MARM__;__SUPPORT_CPP_EXCEPTIONS__;__SYMBIAN32__;_UNICODE;__ARMCC_2_2__;__EPOC32__;__ARMCC_2__;__EABI__;__MARM_ARMV5__;NDEBUG;__ARMCC__;__MARM__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787551" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Debug (ARMV6) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Debug (ARMV6) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Debug (ARMV6) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__GENERIC_MARM__;__SYMBIAN32__;__SUPPORT_CPP_EXCEPTIONS__;__EPOC32__;__EABI__;__ARMCC_2__;__ARMCC__;__MARM__;__ARMCC_2_2__;_UNICODE;_DEBUG;__ARMV6__;__MARM_ARMV5__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787583" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Release (ARMV6) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Release (ARMV6) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Release (ARMV6) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__GENERIC_MARM__;__SYMBIAN32__;__SUPPORT_CPP_EXCEPTIONS__;__EPOC32__;__EABI__;__ARMCC_2__;NDEBUG;__ARMCC__;__MARM__;__ARMCC_2_2__;_UNICODE;__ARMV6__;__MARM_ARMV5__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787614" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Debug (ARMV7) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Debug (ARMV7) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Debug (ARMV7) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__GENERIC_MARM__;__ARMV7__;__SYMBIAN32__;__SUPPORT_CPP_EXCEPTIONS__;__EPOC32__;__EABI__;__ARMCC_2__;__ARMCC__;__MARM__;__ARMCC_2_2__;_UNICODE;_DEBUG;__MARM_ARMV5__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787645" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Release (ARMV7) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Release (ARMV7) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Release (ARMV7) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__GENERIC_MARM__;__ARMV7__;__SYMBIAN32__;__SUPPORT_CPP_EXCEPTIONS__;__EPOC32__;__EABI__;__ARMCC_2__;NDEBUG;__ARMCC__;__MARM__;__ARMCC_2_2__;_UNICODE;__MARM_ARMV5__;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787676" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Debug (ARMV9E) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Debug (ARMV9E) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Debug (ARMV9E) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__SUPPORT_CPP_EXCEPTIONS__;__SYMBIAN32__;_UNICODE;_DEBUG;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787708" useMmpMacrosCache="true"/>
+</cconfiguration>
+<cconfiguration id="Phone Release (ARMV9E) [cenrep]">
+<storageModule buildSystemId="com.nokia.carbide.cdt.builder.CarbideConfigurationDataProvider" id="Phone Release (ARMV9E) [cenrep]" moduleId="org.eclipse.cdt.core.settings" name="Phone Release (ARMV9E) [cenrep]">
+<externalSettings/>
+<extensions>
+<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.cdt.debug.cw.symbian.SymbianE32" point="org.eclipse.cdt.core.BinaryParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTCompilerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakeDefErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.SBSv2ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RVCTLinkerErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.CarbideMakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.RCOMPErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.Elf2E32ErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+<extension id="com.nokia.carbide.cdt.builder.MakmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+</extensions>
+</storageModule>
+<storageModule moduleId="CarbideConfigurationDataProvider">
+<ENV_VAR_DATA_ID/>
+<ARGUMENTS_DATA_ID ABLDFREEZEARGSSTORAGE="-r"/>
+<ROM_BUILDER_DATA_ID ROMBUILDWORKINGDIRECTORYSTORAGE="G:\epoc32\rom\"/>
+</storageModule>
+<storageModule filesCache="G:\Csy27010\group\Csy27010.mmp;G:\Csy27010\test\Csy27010UnitTest.mmp;G:\Csy27010\group\BLD.INF;" includesCache="G:/Csy27010/inc[LOCAL];G:/Csy27010/test[LOCAL];G:/Csy27010/test/unit_test_base[LOCAL];G:/epoc32/include;" macrosCache="__SUPPORT_CPP_EXCEPTIONS__;__SYMBIAN32__;_UNICODE;NDEBUG;" moduleId="configDataCache" sourcesCache="/Csy27010/inc;/Csy27010/src;/Csy27010/test;/Csy27010/test/unit_test_base;" timestampCache="1258543787739" useMmpMacrosCache="true"/>
+</cconfiguration>
+</storageModule>
+</cproject>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/.project	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>Csy27010</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>com.nokia.carbide.cdt.builder.carbideCPPBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.core.ccnature</nature>
+		<nature>com.nokia.carbide.cdt.builder.carbideCPPBuilderNature</nature>
+		<nature>com.nokia.carbide.cdt.builder.carbideSBSv2BuilderNature</nature>
+	</natures>
+</projectDescription>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/Bmarm/GSM0710U.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+; NEW:
+	LibEntry__Fv @ 1 NONAME R3UNUSED ; LibEntry(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/Bwins/GSM0710U.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntry@@YAPAVCSerial@@XZ @ 1 NONAME ; class CSerial * __cdecl LibEntry(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/Bwins/csy27010u.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntry@@YAPAVCSerial@@XZ @ 1 NONAME ; class CSerial * LibEntry(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/group/BLD.INF	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,28 @@
+// BLD.INF
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:
+//
+
+PRJ_EXPORTS
+
+../group/Csy27010.iby	/epoc32/rom/include/csy27010.iby
+
+PRJ_MMPFILES
+
+../group/Csy27010.mmp
+
+PRJ_TESTMMPFILES
+
+../test/Csy27010UnitTest.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/group/Csy27010.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,25 @@
+#ifndef __CSY27010_IBY__
+#define __CSY27010_IBY__
+
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:
+//
+// CSY 3GPP 27.010
+
+// #include <c32.iby>
+
+file=ABI_DIR\BUILD_DIR\GSM0710.CSY			System\Libs\GSM0710.CSY
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/group/Csy27010.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,64 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: Top-level project file for CSY 3GPP 27.010
+//
+
+/** @Csy27010.mmp
+ *
+ * Top-level project file for CSY 3GPP 27.010
+ *
+ */
+
+TARGET			csy27010.csy
+TARGETTYPE		dll
+
+UID			0x10005054 0x10202903
+VENDORID 0x70000001
+
+CAPABILITY PowerMgmt CommDD ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData
+
+// Do not add the non-callable exports to the DEF files
+// Remove this line temporarily if we need to add new exports
+NOEXPORTLIBRARY
+
+SOURCEPATH		../src
+SOURCE			DllMain.cpp
+SOURCE			PortFactory.cpp
+SOURCE			PortC32InterfaceBase.cpp
+SOURCE			PortC32Interface.cpp
+SOURCE			PortC32InterfaceIp.cpp
+SOURCE			CsyMsgBufBpFrame.cpp
+SOURCE			Mux0710Protocol.cpp
+SOURCE			ChannelMgrBase.cpp
+SOURCE			ChannelMgrCtrl.cpp
+SOURCE			ChannelMgrCmdData.cpp
+SOURCE			CommReadWriteBaseAo.cpp
+SOURCE			CommFrameWriterAo.cpp
+SOURCE			CommFrameReaderAo.cpp
+SOURCE			CsyDebugLogger.cpp
+SOURCE			timeouter.cpp
+
+
+USERINCLUDE		../inc
+
+SYSTEMINCLUDE	/epoc32/include
+
+LIBRARY			euser.lib  c32.lib  efsrv.lib
+DEBUGLIBRARY		flogger.lib
+
+LIBRARY		commsdat.lib
+
+START WINS
+	BASEADDRESS   0x47D00000
+END
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/group/Csy27010UnitTest.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,21 @@
+#ifndef __CSY27010UNITTEST_IBY__
+#define __CSY27010UNITTEST_IBY__
+
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: CSY 3GPP 27.010 Unit Test
+//
+
+file=ABI_DIR\BUILD_DIR\Csy0710UnitTest.Exe			System\Programs\Csy0710UnitTest.Exe
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/group/GSM0710.UID.CPP	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,5 @@
+// Makmake-generated uid source file
+#include <E32STD.H>
+#pragma data_seg(".E32_UID")
+__WINS_UID(0x10000079,0x10005054,0x00000000)
+#pragma data_seg()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/ChannelMgrBase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,219 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file contains the declaration for class CChannelMgrBase.
+// *              Class CChannelMgrBase is an abstract class that is inherted by
+// *              classes that define a single 3GPP 27.010 based logical channel (DLC).
+// *              Derived classes are either control, command and data channels.
+//
+
+// ChannelMgrBase.h
+
+/** @file ChannelMgrBase.h
+ *
+ * This file contains the declaration for class CChannelMgrBase.
+ * Class CChannelMgrBase is an abstract class that is inherted by
+ * classes that define a single 3GPP 27.010 based logical channel (DLC).
+ * Derived classes are either control, command and data channels.
+ */
+
+#ifndef _CHANNELMGRBASE_H_
+#define _CHANNELMGRBASE_H_
+
+#include <e32base.h>
+#include <c32comm.h>
+#include "CsyGlobals.h"
+#include "timeouter.h"
+
+class CPortFactory;
+class CMux0710Protocol;
+class CPortC32InterfaceBase;
+class CPortC32Interface;
+class CFrameToBPQueue;
+class CFrameToClientQueue;
+class CChannelObserverAo;
+class CCsyMsgBufBpFrame;
+
+/** 
+ *  CChannelMgrBase is an abstract class that is inherted by
+ *  classes that define a single 3GPP 27.010 based logical channel (DLC).
+ *  Derived classes are either control or cmd/data channels.
+ */
+class CChannelMgrBase : public CBase, public MTimeoutObserver
+	{
+public:
+	enum TCsyChannelState
+		{
+		ECsyChannelStateDisconnected,    // Channel is Disconnected
+		ECsyChannelStateParameterNegotiating, // Channel was disconnected and has sent Parameter Negotiation
+		ECsyChannelStateConnecting,      // Channel was disconnected and has sent a SABM to be connected
+		ECsyChannelStateMSCsent,         
+		ECsyChannelStateWaitingForChannelReady, 
+		ECsyChannelStateConnected,       // Channel is Connected, Data can be transmitted
+		ECsyChannelStateDisconnecting,   // Channel was connected and is now waiting to be disconnected
+		ECsyChannelStateFlowControlOff,  // Channel has been Xoff'd by the baseband
+		ECsyChannelStateTransmitError    // Not receive after timeout and retransmite, Link error
+		};
+
+public:
+    CChannelMgrBase(const TUint8 aDlcNum,
+					CPortFactory& aPortFactory, 
+					CMux0710Protocol& aMux0710Protocol);
+
+    virtual ~CChannelMgrBase();
+
+    TInt Connect();
+    TInt Disconnect();
+	TInt ParameterNegotiate();
+
+	void ProcessRecvFrame(CCsyMsgBufBpFrame* aBpFrame);
+	
+	TDes8& RefToMsgBuffer();
+
+	TUint8 GetDlcNumber() const;
+	TCsyChannelState GetChannelState() const;
+
+	void WaitForChannelReady();
+	void NotifyChannelReady();
+
+	CPortC32InterfaceBase* GetC32Port() const;
+
+	void MscReceived(TUint8 aV24Signals);
+	TInt SendMscCommand(TUint8 aV24Signals);
+
+	void ModemAndCsyToClientFlowCtrl(const TFlowControl aFlowControl);
+	void ReceivedV24Signals(const TUint8 aV24Signals);
+
+	inline TFlowControl CsyToModemFlowControl();
+	TInt SetCsyToModemFlowControl(TFlowControl aFlowControl);
+
+	TInt PlaceOnOutboundQueue();
+	void WriteCancel();
+
+	inline TFlowControl GetModemAndCsyToClientFlowControl();
+
+public://From MTimeoutObserver
+	void TimedOut();
+
+protected:
+	void ConstructL();
+
+	void IssueNotificationRequest();
+
+	virtual void ProcessRecvUihFrame(CCsyMsgBufBpFrame* aBpFrame) = 0;
+	void ProcessNonUihRecvFrame(CCsyMsgBufBpFrame* aBpFrame);
+
+protected:
+
+	TUint8					iV24Signals;
+
+    const TUint8			iDlcNum;
+
+    TCsyChannelState		iChannelState;
+    CPortFactory&			iPortFactory;
+	CPortC32InterfaceBase*	iPortC32Interface;
+	CMux0710Protocol&		iMux0710Protocol;
+
+    TBuf8<KMaxIpPacketSize>	iDataToSendToModem;
+
+	TBool					iChannelReady;
+	TBool					iInitFinished;
+
+	TInt					iTimeoutVal;
+	TInt					iTxCountLimit;
+	TInt					iTxCount;
+
+	CChannelObserverAo*		iChannelObserverAo;
+	CActiveTimeouter*		iTimeouter;
+
+	TBool					iMscReplyExpected;
+
+	// modem -> csy flow control - controls the CSY sending frames to the modem
+	TFlowControl			iCsyAllowedToSendFrames;
+
+	// csy -> modem flow control - controls the modem sending frames to the CSY
+	TFlowControl			iModemAllowedToSendFrames;
+	TBool					iDelayedWriteToModem;
+
+	};
+
+// Inline methods
+
+inline TFlowControl CChannelMgrBase::CsyToModemFlowControl()
+/**
+ * Return the current CSY to modem flow control status for this channel.
+ */
+	{
+	return iModemAllowedToSendFrames;
+	}
+
+inline TUint8 CChannelMgrBase::GetDlcNumber() const
+/**
+ * Return the DLC number of the channel manager object.
+ *
+ * @return DLC number
+ */
+	{
+	return iDlcNum;
+	}
+
+inline CChannelMgrBase::TCsyChannelState CChannelMgrBase::GetChannelState() const
+/**
+ * Return the channel state.
+ *
+ * @return Channel state
+ */
+	{
+	return iChannelState;
+	}
+
+inline CPortC32InterfaceBase* CChannelMgrBase::GetC32Port() const
+/**
+ * Return a pointer to the C32 port associated with this channel manager object.
+ *
+ * @return Pointer to the C32 port associated with this channel manager object
+ */
+	{
+	return iPortC32Interface;
+	}
+
+inline TFlowControl CChannelMgrBase::GetModemAndCsyToClientFlowControl()
+/**
+ * Return the current flow control state of the channel.
+ *
+ * @return Flow control state
+ */
+	{
+	return iCsyAllowedToSendFrames;
+	}
+
+/* CChannelObserverAo use to block until channel init is finished
+ */
+class CChannelObserverAo :public CActive
+	{
+public:
+	static CChannelObserverAo* NewL();
+	~CChannelObserverAo();
+
+ 	void StartWait();
+	void ChannelReady();
+
+protected:// from CActive
+    void RunL();
+    void DoCancel();
+
+private:
+	CChannelObserverAo();
+	};
+
+#endif  // _CHANNELMGRBASE_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/ChannelMgrCmdData.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,75 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file contains the declaration for class CChannelMgrCmdData.
+// *              This class contains the behavior for a single 3GPP 27.010 logical
+// *              channel (DLC) for either a command or and data channel.
+// *
+//
+
+// ChannelMgrCmdData.h
+
+/** @file CChannelMgrCmdData.h
+ *
+ * .
+ */
+
+#ifndef _CHANNELMGRCMDDATA_H_
+#define _CHANNELMGRCMDDATA_H_
+
+#include "CsyGlobals.h"
+#include "ChannelMgrBase.h"
+#include "Mux0710Protocol.h"
+
+class CPortFactory;
+class CCsyMsgBufBpFrame;
+
+/** @class CChannelMgrCmdData ChannelMgrCmdData.h "ChannelMgrCmdData.h"
+ *  @brief Class CChannelMgrCmdData contains the behavior for a single
+ *  3GPP 27.010 logical channel (DLC) for a command/data channel.
+ *  This includes methods to open, close, initialize, configure
+ *  and use the channel to transmit frames.
+ */
+class CChannelMgrCmdData : public CChannelMgrBase
+	{
+public:
+	static CChannelMgrCmdData* NewL(const TUint8 aDlcNum,
+									CPortFactory& aPortFactory,
+									CMux0710Protocol& aMux0710Protocol);
+    virtual ~CChannelMgrCmdData();
+
+	void Open(CPortC32InterfaceBase* aPort);
+	void Close(CPortC32InterfaceBase* aPort);
+	void SetOwner(CPortC32InterfaceBase* aPort);
+
+	// link for our parent's (port factory) single linked list
+	TSglQueLink iLink;
+
+private:
+    CChannelMgrCmdData(const TUint8 aDlcNum, 
+					   CPortFactory& aPortFactory,
+					   CMux0710Protocol& aMux0710Protocol);
+	void ConstructL();
+
+	void ProcessRecvUihFrame(CCsyMsgBufBpFrame* aBpFrame);
+	void SetupCmdChannelsForATCmdsL();
+
+private:
+
+	TUint8 iCount; 
+	RArray<CPortC32InterfaceBase*> iPortArray;
+
+	};
+
+
+#endif  // _CHANNELMGRCMDDATA_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/ChannelMgrCtrl.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,71 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file contains the declaration for class CChannelMgrCtrl.
+// *              Class CChannelMgrCtrl defines a 3GPP 27.010 control channel.
+// *              A control channel is used to initialize the multiplexer and to
+// *              create/monitor DLC's. There is one instance of the control channel.
+// *
+//
+
+// ChannelMgrCtrl.h
+
+/** @file ChannelMgrCtrl.h
+ *
+ * 
+ */
+
+#ifndef _CCHANNELMGRCTRL_H_
+#define _CCHANNELMGRCTRL_H_
+
+#include "ChannelMgrBase.h"
+
+class CPortFactory;
+class CMux0710Protocol;
+class CCsyMsgBufBpFrame;
+
+/** @class CChannelMgrCtrl ChannelMgrCtrl.h "ChannelMgrCtrl.h"
+ *  @brief Class CChannelMgrCtrl defines a 3GPP 27.010 control channel.
+ *  A control channel is used to initialize the multiplexer and to
+ *  create/monitor DLC's. There is one instance of the control channel.
+ */
+class CChannelMgrCtrl : public CChannelMgrBase
+    {
+public:
+    static CChannelMgrCtrl* NewL(CPortFactory& aPortFactory,
+								 CMux0710Protocol& iMux0710Protocol);
+    virtual ~CChannelMgrCtrl();
+	inline TBool GetChannelReady() const;
+
+private:
+    CChannelMgrCtrl(CPortFactory& aPortFactory,
+					CMux0710Protocol& aMux0710Protocol);
+
+    void ConstructL();
+
+	void ProcessRecvUihFrame(CCsyMsgBufBpFrame* aBpFrame);
+	void ConfirmCtrlFrame(CCsyMsgBufBpFrame* aBpFrame);
+	};
+
+
+inline TBool CChannelMgrCtrl::GetChannelReady() const
+/**
+ * Return the channel ready
+ *
+ * @return Channel ready
+ */
+	{
+	return iChannelReady;
+	}
+
+#endif // _CCHANNELMGRCTRL_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/CommFrameReaderAo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,83 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file contains the declaration for class CCommFrameReaderAo.
+// *              Class CCommFrameReaderAo is used to request a read from the serial port LDD.
+// *              Class CommFrameReaderAo is an active object and is run by the active
+// *              scheduler when the LDD has completed the CSY's read request.
+// *
+//
+
+// CommFrameReader.h
+
+/** @file CommFrameReaderAo.h
+ *
+ * 
+ */
+
+#ifndef _CCOMMFRAMEREADERAO_H_
+#define _CCOMMFRAMEREADERAO_H_
+
+#include "CommReadWriteBaseAo.h"
+#include "CsyGlobals.h"
+
+class CCsyMsgBufBpFrame;
+
+/** @class CCommFrameReaderAo CommFrameReaderAo.h "CommFrameReaderAo.h"
+ *  @brief Class CCommFrameReaderAo is used to request a read from 
+ *  the serial port LDD. Class CommFrameReaderAo is an active object
+ *  and is run by the active scheduler when the LDD has completed
+ *  the CSY's read request. There is one instance of CCommFrameReaderAo.
+ */
+class CCommFrameReaderAo : public CCommReadWriteBaseAo
+	{
+public:
+	enum TCsyFrameReaderState
+		{
+		ECsyWaitingForStartFlag  = 0,
+		ECsyWaitingForFrameStart = 1,
+		ECsyWaitingForFrameData  = 2,
+		ECsyWaitingForEndOfFrame = 3
+		};
+
+	static CCommFrameReaderAo* NewL(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol);
+	~CCommFrameReaderAo();
+
+	void Read();
+	void ReadCancel();
+
+public:// from CActive
+	virtual void DoCancel();
+	virtual void RunL();
+
+private:
+	CCommFrameReaderAo(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol);
+	void ConstructL();
+
+	void NonMuxed();
+	void BasicOption();
+	void AdvancedOption();
+ 
+	TBool CheckFCS(TDes8& aBuffer, TInt aLen, TUint8 aSuppliedChecksum);
+
+	void AddToReceivedFramesList(CCsyMsgBufBpFrame* aBpFrame);
+
+private:
+	TCsyFrameReaderState	iFrameReaderState;
+	CCsyMsgBufBpFrame*		iFrameBuf;
+
+	TBool iESCRecved;
+
+	};
+
+#endif  //_CCOMMFRAMEREADERAO_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/CommFrameWriterAo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,84 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file contains the declaration for class CCommFrameWriterAo.
+// *              Class CCommFrameWriterAo is used to perform write operations to
+// *              the serial port logical device driver. Class CommFrameWriteterAo
+// *              is an active object and is run by the active scheduler when the
+// *              LDD has completed the CSY's write request.
+// *
+//
+
+// CommFrameWriterAo.h
+
+/** @file CommFrameWriterAo.h
+ *
+ * 
+ */
+
+#ifndef _COMMFRAMEWRITERAO_H_
+#define _COMMFRAMEWRITERAO_H_
+
+#include "CommReadWriteBaseAo.h"
+
+class CPortFactory;
+class CCsyMsgBufBpFrame;
+
+/** @class CCommFrameWriterAo CommFrameWriterAo.h "CommFrameWriterAo.h"
+ *  @brief Class CCommFrameWriterAo is used to perform write operations
+ *  to the serial port logical device driver. Class CommFrameWriteterAo
+ *  is an active object and is run by the active scheduler when the
+ *  LDD has completed the CSY's write request. There is one instance 
+ *  of CCommFrameWriterAo.
+ */
+class CCommFrameWriterAo : public CCommReadWriteBaseAo
+    {
+public:
+    static CCommFrameWriterAo* NewL(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol);
+    ~CCommFrameWriterAo();
+
+    TInt Write(CCsyMsgBufBpFrame* aBpFrame,
+		TBool aHighPriority = EFalse);
+    void WriteCancel();
+
+	void RemoveAnyDlcFramesOnWriteList(TUint8 aDlcNum, TBool aPlaceOnWaitList = ETrue);
+	void RemoveAnyDlcFramesFromWaitList(TUint8 aDlcNum, TBool aPlaceOnWriteList = ETrue);
+
+public:// from CActive
+    virtual void DoCancel();
+    virtual void RunL();
+
+private:
+    CCommFrameWriterAo(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol);
+    void ConstructL();
+
+	TInt WriteFrame(CCsyMsgBufBpFrame* aBpFrame);
+	void CompleteWrite(const TUint8 aDlcNum, TInt aStatus);
+
+	CCsyMsgBufBpFrame* GetFrameToWrite();
+	void AddToWaitingToSendList(CCsyMsgBufBpFrame* aBpFrame, TBool aHighPriority = EFalse);
+
+private:
+	TUint8	iDlcNum;
+	TBool	iCompleteWhenSent;
+
+	// Write Frame Buffer Lists
+	TSglQue<CCsyMsgBufBpFrame>		iWriteFrameBufList;
+	TSglQueIter<CCsyMsgBufBpFrame>	iWriteFrameBufIter;
+
+	TSglQue<CCsyMsgBufBpFrame>		iWaitingForFcOffList;
+	TSglQueIter<CCsyMsgBufBpFrame>	iWaitingForFcOffIter;
+
+	};
+
+#endif  //_COMMFRAMEWRITERAO_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/CommReadWriteBaseAo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,71 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file declares the base class CCommReadWriteBaseAo. 
+//                Class CCommReadWriteBaseAo contains the common elements for derived 
+//                Frame Reader and Frame Writer classes using a serial comm port.
+//
+
+// CommReadWriteBaseAo.h
+
+/** @file CommReadWriteBaseAo.h
+ *
+ * The file declares the base class CCommReadWriteBaseAo. This class
+ * holds the common elements for derived Frame Reader and Frame Writer
+ * classes using a serial comm port.
+ */
+
+#ifndef _CCOMMREADWRITEBASEAO_H_
+#define _CCOMMREADWRITEBASEAO_H_
+
+#include "cs_port.h"
+#include <d32comm.h>
+#include <c32comm.h>
+#include <e32hal.h>
+
+
+class CPortFactory;
+class CMux0710Protocol;
+
+class CCommReadWriteBaseAo : public CActive
+    {
+public:
+    CCommReadWriteBaseAo(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol,
+		TInt aPriority = EPriorityStandard);
+    ~CCommReadWriteBaseAo();
+
+    TInt SetServerConfig(TCommServerConfig& aConfig);
+    void GetServerConfig(TCommServerConfig& aConfig) const;
+    void FreeMemory();
+
+    inline void SetRole(TCommRole aRole){iRole=aRole;};
+
+protected:
+    void SetBuffersL();
+
+	// attributes
+    HBufC8*				iBuffer;	// pointer to the Tx/Rx buffer
+    TPtr8*				iBuf;		// pointer to a TPtr8 that points to the current buffer
+
+    TUint				iBufFlags;	// contains buffer flags e.g for partial read/write
+    TInt				iBufSize;	// size of the Tx/Rx buffer
+
+    TCommRole			iRole;		// DTE or DCE role for this port unit
+
+    CPortFactory*		iParent;	// pointer to the CPortC32Interface object
+	CMux0710Protocol*	iMux0710Protocol;
+	RBusDevComm*		iCommPort;  // pointer to LDD comm port
+
+    };
+
+#endif  // _CCOMMREADWRITEBASEAO_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/CsyDebugLogger.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,141 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file defines the CCsyDebugLogger class for the CSY and the macros
+// *              to use for logging debug messages to either a serial port or a log file.
+//
+
+// CsyDebugLogger.h
+
+/** @file CsyDebugLogger.h
+ *
+ */
+
+#ifndef __CSYDEBUGLOGGER_H__
+#define __CSYDEBUGLOGGER_H__
+
+#ifdef _DEBUG
+
+// To reduce debugging - comment out one or more of these defines
+
+#define __DEBUGLEVELCRITICAL__  // Critical logging (erroneous conditions)
+#define __DEBUGLEVELMAJOR__     // Major (important data used in the Csy)
+#define __DEBUGLEVELMINOR__     // Minor (important conditions)
+#define __DEBUGLEVELDETAILED__  // Detailed (comments & func >> << logging)
+
+// Route for logging - select one of these
+#define __DEBUGLOGFILE__
+//#define __DEBUGSERIALPORT__
+
+#define LOGHEADER()							CCsyDebugLogger::WriteHeader()
+#else
+#define LOGHEADER()
+#endif
+
+#ifdef __DEBUGLEVELCRITICAL__
+#define _LOG_L1C1(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L1C2(AAA, BBB)					CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L1C3(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L1C1(AAA)
+#define _LOG_L1C2(AAA, BBB)					(void) BBB;
+#define _LOG_L1C3(AAA, BBB, CCC)			(void) BBB; (void) CCC;
+#endif
+
+#ifdef __DEBUGLEVELMAJOR__
+#define _LOG_L2C1(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L2C2(AAA, BBB)					CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L2C3(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L2C1(AAA)
+#define _LOG_L2C2(AAA, BBB)					(void) BBB;
+#define _LOG_L2C3(AAA, BBB, CCC)			(void) BBB; (void) CCC;
+#endif
+
+#ifdef __DEBUGLEVELMINOR__
+#define _LOG_L3C1(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L3C2(AAA, BBB)					CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L3C3(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L3C1(AAA)
+#define _LOG_L3C2(AAA, BBB)					(void) BBB;
+#define _LOG_L3C3(AAA, BBB, CCC)			(void) BBB; (void) CCC;
+#endif
+
+#ifdef __DEBUGLEVELDETAILED__
+#define _LOG_L4C1(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L4C2(AAA, BBB)					CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L4C3(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L4C1(AAA)
+#define _LOG_L4C2(AAA, BBB)					(void) BBB;
+#define _LOG_L4C3(AAA, BBB, CCC)			(void) BBB; (void) CCC;
+#endif
+
+
+
+// The following logging macros are the same as those above with the following exception:
+// The arguments are removed from the code when the logging is removed.
+// This is needed to remove warnings where otherwise unused variables are logged.
+
+#ifdef __DEBUGLEVELCRITICAL__
+#define _LOG_L1C1E(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L1C2E(AAA, BBB)				CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L1C3E(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L1C1E(AAA)
+#define _LOG_L1C2E(AAA, BBB)
+#define _LOG_L1C3E(AAA, BBB, CCC)
+#endif
+
+#ifdef __DEBUGLEVELMAJOR__
+#define _LOG_L2C1E(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L2C2E(AAA, BBB)				CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L2C3E(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L2C1E(AAA)
+#define _LOG_L2C2E(AAA, BBB)
+#define _LOG_L2C3E(AAA, BBB, CCC)
+#endif
+
+#ifdef __DEBUGLEVELMINOR__
+#define _LOG_L3C1E(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L3C2E(AAA, BBB)				CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L3C3E(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L3C1E(AAA)
+#define _LOG_L3C2E(AAA, BBB)
+#define _LOG_L3C3E(AAA, BBB, CCC)
+#endif
+
+#ifdef __DEBUGLEVELDETAILED__
+#define _LOG_L4C1E(AAA)						CCsyDebugLogger::Write(_L8(AAA))
+#define _LOG_L4C2E(AAA, BBB)				CCsyDebugLogger::WriteFormat(_L8(AAA),BBB)
+#define _LOG_L4C3E(AAA, BBB, CCC)			CCsyDebugLogger::WriteFormat(_L8(AAA),BBB,CCC)
+#else
+#define _LOG_L4C1E(AAA)
+#define _LOG_L4C2E(AAA, BBB)
+#define _LOG_L4C3E(AAA, BBB, CCC)
+#endif
+
+#include <flogger.h>
+
+class CCsyDebugLogger : public CBase
+	{
+public:
+	static void WriteHeader();
+	static void Write(const TDesC8& aText);
+	static void WriteFormat(TRefByValue<const TDesC8> aFmt, ...);
+	};
+
+#endif	// __CSYDEBUGLOGGER_H__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/CsyGlobals.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,229 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This include file contains the global definitions for the CSY.
+//
+
+// CsyGlobals.h
+
+/** @file CsyGlobals.h
+ *
+ */
+
+#ifndef _CSYGLOBALS_H_
+#define _CSYGLOBALS_H_
+
+#include <e32std.h>
+
+
+#if defined DSAMPLE || defined P2SAMPLE || defined H2
+#define _27010ADVANCEOPTION
+_LIT8(KATInitialised,"AT-Command Interpreter ready");
+_LIT8(KATCmdSetup,"ATE0Q0V1%CPRI=0\r");  // echo off, quiet off, verbose on
+#else
+_LIT8(KATInitialised,"OK");
+_LIT8(KATCmdSetup,"ATE0Q0V1\r");  // echo off, quiet off, verbose on
+#endif
+
+
+// CSY name
+_LIT(KCSY_Gsm0710ServerName, "CSY27010");
+_LIT(KCSY_Description, "Csy27010::CSY");
+
+// Version information.
+const TUint KCSY_Gsm0710MajorVersionNumber = 1;
+const TUint KCSY_Gsm0710MinorVersionNumber = 0;
+const TUint KCSY_Gsm0710BuildVersionNumber = 0;  // MAF put mainline num here on release
+
+// Serial Info
+const TUint KCSY_Gsm0710LowUnit =	1;
+const TUint KCSY_Gsm0710HighUnit =	100;
+
+const TInt	KCsyDefaultMaxDLCChannels = 10;
+
+// Buffer size for LDD
+const TUint KDefaultTxRxBufSize = 512;
+
+
+// LDD/PDD configuration
+#if !defined P2SAMPLE
+_LIT8(KCsyDefaultPDDNameComm1, "EUART1");
+_LIT8(KCsyDefaultPDDNameComm2, "EUART2");
+#else
+_LIT8(KCsyDefaultPDDNameComm1, "EUARTCSMI");
+_LIT8(KCsyDefaultPDDNameComm2, "EUART1");
+#endif
+
+// AT Command need to put the baseband into Mux mode
+#ifdef _27010ADVANCEOPTION
+_LIT8(KCsyDefaultATEnterMuxModeCmd, "AT+CMUX=1,0,5\r");
+#else
+_LIT8(KCsyDefaultATEnterMuxModeCmd, "AT+CMUX=0,0,5\r");
+#endif
+
+// C32 Port number offsets
+const TInt KCOMMP_CSD_PPP_NUMBER = 6;  // 6 - reserved for CSD PPP
+const TInt KCOMMP_IP_NIF_OFFSET  = 16; // 16 and above - Raw IP
+
+// Factor by which to increase the size of the receive buffer in the LDD.
+const TInt KCSY_ReceiveBufferSizeIncreaseFactor = 10;
+
+// Basic sizes
+const TUint KMaxFrameSize    = 127;
+const TUint KMaxIpPacketSize = 1502;
+
+const TUint KMaxAdvFrameSize = KMaxFrameSize + 8;
+
+// --------------------------------------------------------
+
+// Constants for enforcing when the modem is allowed to send to the CSY
+
+// FC enforced when we are starting to run out of frames to put data in
+// or when a particular client is slow at reading
+
+// Maximum frames and flow control thresholds
+const TUint KMaxFreeFrames = 75;    // <- should be enough for 3 contexts at max throughput each way
+const TUint KStopDataDlcsThreshold = 10;
+const TUint KStartDataDlcsThreshold = 40;
+
+// Slow read by client
+const TUint KMaxPacketsOutstandingForC32Client = 5;
+
+// At Response timeout
+const TInt	KAtResponseTimeoutLimit = 5;
+
+// --------------------------------------------------------
+
+// active object priorities
+const TInt KFrameReaderAoPriority = 100;
+const TInt KFrameWriterAoPriority = KFrameReaderAoPriority;
+
+// Magic numbers
+const TUint8 KSingleFrame      = 0x03;	// Only Frame of Message
+const TUint8 KStartMultiFrame  = 0x01;	// Start  MultiFrame
+const TUint8 KMiddleMultiFrame = 0x00;	// Middle MultiFrame
+const TUint8 KEndMultiFrame    = 0x02;	// Ending MultiFrame
+
+const TInt KAdvOptionNumOfNonDataOctets = 4;
+const TInt KAdvOptionType4StartOfMessageData = 3;
+const TInt KAdvOptionType4FrameControl = 2;
+
+// Ignoring start/end flags ..
+// Advanced format: address | control | data | checksum
+const TInt KAdvOptionHeaderSize	= 2;
+const TInt KAdvOptionControl = 1;
+const TInt KAdvOptionAddress = 0;
+
+const TInt KChecksumSize = 1;
+
+const TInt KBasicOptionHeaderSize	= 3;
+const TInt KBasicOptionLength		= 2;
+const TInt KBasicOptionControl		= 1;
+const TInt KBasicOptionAddress		= 0;
+
+// Ctrl(dlc 0) commands
+// adv option:   address | control | CtrlType   | LengthData | Value(s)
+// basic option: address | control | length | CtrlType  | LengthData | Value(s)
+const TInt KBasicOptionCtrlStart = KBasicOptionHeaderSize;
+const TInt KAdvOptionCtrlStart   = KAdvOptionHeaderSize;
+
+// CtrlType  | LengthData | Value(s)
+const TInt KPositionOfValueFieldInCtrlData  = 2;
+const TInt KPositionOfLengthFieldInCtrlData = 1;
+
+const TUint8 KCtrlChannelDlcNum = 0;
+
+// Timeouts
+const TInt KOneSecond  = 1000000;
+const TInt KTwoSeconds = 2000000;
+
+
+// Frame Start/Stop Flag
+
+
+const TUint8 KCsy0710StartEndFlag	= 0x7E;
+const TUint8 KCsy0710EscapeByte		= 0x7D;
+
+const TUint8 KPNFrameType			= 0x00;
+const TUint8 KPNClBits				= 0x03;
+const TUint8 KPNDlcPriority			= 0x07;
+const TUint8 KPNAckTimer			= 0x0A; // 10ms resolution
+const TUint8 KPNMaxFrameSize		= 0x00ff & KMaxFrameSize;
+const TUint8 KPNMaxRetransmissions	= 0x03;
+const TUint8 KPNWindowSize			= 0x00;
+
+
+// Control Field Constants
+const TUint8 KCsy0710CTLSABM		= 0x2F;    
+const TUint8 KCsy0710CTLUA			= 0x63;	 
+const TUint8 KCsy0710CTLDM			= 0x0F;
+const TUint8 KCsy0710CTLDISC		= 0x43;
+const TUint8 KCsy0710CTLUIH			= 0xEF;
+const TUint8 KCsy0710CTLUI			= 0x03;
+
+const TUint KCsy0710EA				= 0x01;
+const TUint KCsy0710CRBit			= 0x02;
+const TUint KCsy0710PollFinal		= 0x10;
+
+// Message Types for UIH frames received by the CSY on DLC 0 (control channel)
+//     The EA (bit 0) and C/R (bit 1) bits are both assumed to be set
+const TUint8 KCsy0710CTLUIH_DlcParamNegotiate   = 0x83;
+const TUint8 KCsy0710CTLUIH_DlcParamNegotiateRsp = 0x81;
+const TUint8 KCsy0710CTLUIH_PowerSaveCtl        = 0x43;
+const TUint8 KCsy0710CTLUIH_MultCloseDown       = 0xC3;
+const TUint8 KCsy0710CTLUIH_TestCmd             = 0x23;
+const TUint8 KCsy0710CTLUIH_FlowControlOn       = 0xA3;
+const TUint8 KCsy0710CTLUIH_FlowControlOff      = 0x63;
+const TUint8 KCsy0710CTLUIH_ModemStatusCmd      = 0xE3;
+const TUint8 KCsy0710CTLUIH_ModemStatusRsp      = 0xE1;
+const TUint8 KCsy0710CTLUIH_NonSupportedCmdResp = 0x13;
+const TUint8 KCsy0710CTLUIH_RemotePortNegotiate = 0x93;
+const TUint8 KCsy0710CTLUIH_RemoteLineStatus    = 0x53;
+const TUint8 KCsy0710CTLUIH_ServiceNegotiate    = 0xD3;
+
+
+// The CRC Table as defined in 27.010
+const TUint8 crctable[256] = 
+	{ //reversed, 8-bit, poly=0x07
+	0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98,0xEA, 0x7B,
+	0x1C, 0x8D, 0xFF, 0x6E, 0x1B, 0x8A, 0xF8, 0x69, 0x12, 0x83, 0xF1, 0x60, 0x15, 0x84,0xF6, 0x67,
+	0x38, 0xA9, 0xDB, 0x4A, 0x3F, 0xAE, 0xDC, 0x4D, 0x36, 0xA7, 0xD5, 0x44, 0x31, 0xA0,0xD2, 0x43,
+	0x24, 0xB5, 0xC7, 0x56, 0x23, 0xB2, 0xC0, 0x51, 0x2A, 0xBB, 0xC9, 0x58, 0x2D, 0xBC,0xCE, 0x5F,
+	0x70, 0xE1, 0x93, 0x02, 0x77, 0xE6, 0x94, 0x05, 0x7E, 0xEF, 0x9D, 0x0C, 0x79, 0xE8,0x9A, 0x0B,
+	0x6C, 0xFD, 0x8F, 0x1E, 0x6B, 0xFA, 0x88, 0x19, 0x62, 0xF3, 0x81, 0x10, 0x65, 0xF4,0x86, 0x17,
+	0x48, 0xD9, 0xAB, 0x3A, 0x4F, 0xDE, 0xAC, 0x3D, 0x46, 0xD7, 0xA5, 0x34, 0x41, 0xD0,0xA2, 0x33,
+	0x54, 0xC5, 0xB7, 0x26, 0x53, 0xC2, 0xB0, 0x21, 0x5A, 0xCB, 0xB9, 0x28, 0x5D, 0xCC,0xBE, 0x2F,
+	0xE0, 0x71, 0x03, 0x92, 0xE7, 0x76, 0x04, 0x95, 0xEE, 0x7F, 0x0D, 0x9C, 0xE9, 0x78,0x0A, 0x9B,
+	0xFC, 0x6D, 0x1F, 0x8E, 0xFB, 0x6A, 0x18, 0x89, 0xF2, 0x63, 0x11, 0x80, 0xF5, 0x64,0x16, 0x87,
+	0xD8, 0x49, 0x3B, 0xAA, 0xDF, 0x4E, 0x3C, 0xAD, 0xD6, 0x47, 0x35, 0xA4, 0xD1, 0x40,0x32, 0xA3,
+	0xC4, 0x55, 0x27, 0xB6, 0xC3, 0x52, 0x20, 0xB1, 0xCA, 0x5B, 0x29, 0xB8, 0xCD, 0x5C,0x2E, 0xBF,
+	0x90, 0x01, 0x73, 0xE2, 0x97, 0x06, 0x74, 0xE5, 0x9E, 0x0F, 0x7D, 0xEC, 0x99, 0x08,0x7A, 0xEB,
+	0x8C, 0x1D, 0x6F, 0xFE, 0x8B, 0x1A, 0x68, 0xF9, 0x82, 0x13, 0x61, 0xF0, 0x85, 0x14,0x66, 0xF7,
+	0xA8, 0x39, 0x4B, 0xDA, 0xAF, 0x3E, 0x4C, 0xDD, 0xA6, 0x37, 0x45, 0xD4, 0xA1, 0x30,0x42, 0xD3,
+	0xB4, 0x25, 0x57, 0xC6, 0xB3, 0x22, 0x50, 0xC1, 0xBA, 0x2B, 0x59, 0xC8, 0xBD, 0x2C,0x5E, 0xCF
+	};
+
+//v24 signals
+const TUint KV24SignalRTC = 0x04;
+const TUint KV24SignalRTR = 0x08;
+const TUint KV24SignalIC  = 0x40;
+const TUint KV24SignalDV  = 0x80;
+
+// Logging
+
+_LIT(KCsyLogDir,  "TRP\\CSY" );
+_LIT(KCsyLogFile, "csy27010.txt");
+_LIT(KCsyLogLine, "---------- CSY 3GPP 27.010 Log ----------");
+
+
+#endif  // _CSYGLOBALS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/CsyMsgBufBPFrame.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,73 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file defines the CCsyMsgBufBpFrame class.
+// *              This class is used to hold frame messages that the CSY sends to and 
+// *              receives from the BP multiplexer.
+//
+
+// CsyMsgBufBpFrame.h
+
+/** @file CsyMsgBufBpFrame.h
+ *
+ */
+
+#ifndef _CSYMSGBUFBPFRAME_H_
+#define _CSYMSGBUFBPFRAME_H_
+
+#include <e32base.h>
+#include "CsyGlobals.h"
+
+/** @class CCsyMsgBufBpFrame CsyMsgBufBpFrame.h "CsyMsgBufBpFrame.h"
+ *  @brief Class CCsyMsgBufBpFrame is used to hold frame messages 
+ *  that the CSY sends to and receives from the BP multiplexer.
+ */
+class CCsyMsgBufBpFrame : public CBase
+	{
+public:
+	static CCsyMsgBufBpFrame* NewL();
+	virtual ~CCsyMsgBufBpFrame();
+
+	TUint8 GetDlcNum() const;
+	TUint8 GetFrameType() const;
+	TUint8 GetType4FrameSequence() const;
+
+	TBuf8<KMaxAdvFrameSize> iMsg;
+
+	inline TUint8& CCsyMsgBufBpFrame::MsgDlc();
+	inline TBool& CCsyMsgBufBpFrame::CompleteWhenSent();
+
+public:
+	TSglQueLink iMsgLink;
+
+private:
+	CCsyMsgBufBpFrame();
+	void ConstructL();
+
+private:
+	TUint8	iCsyMsgDlc;
+	TBool	iCompleteWhenSent;
+
+	};
+
+inline TUint8& CCsyMsgBufBpFrame::MsgDlc()
+	{
+	return iCsyMsgDlc;
+	}
+
+inline TBool& CCsyMsgBufBpFrame::CompleteWhenSent()
+	{
+	return iCompleteWhenSent;
+	}
+
+#endif  //_CSYMSGBUFBPFRAME_H_
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/Mux0710Protocol.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,190 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file defines the CMux0710Protocol class.  This class
+//                 performs the 3GPP2 protocol specific behavior for 27.010.
+//                 This file also includes CRC table.
+//
+
+// CMux0710Protocol.h
+
+/** @file CMux0710Protocol.h
+ *
+ */
+
+#ifndef _MUX0710PROTOCOL_H_
+#define _MUX0710PROTOCOL_H_
+
+#include <e32base.h>
+#include "CsyGlobals.h"
+#include "timeouter.h"
+
+
+class CCsyMsgBufBase;
+class CCsyMsgBufFrame;
+class CPortFactory;
+class CCsyMsgBufBpFrame;
+class CCommFrameWriterAo;
+class CCommFrameReaderAo;
+
+class CMux0710Protocol : public CBase, public MTimeoutObserver
+	{
+public:
+
+	// Frame Types used in 27.010 Protocol
+	enum TCsyFrameType
+		{
+		ESABM, // Set asynchronous balanced mode
+		EUA,   // Unnumbered Acknowledgement
+		EDM,   // Disconnected Mode
+		EDISC, // Disconnect
+		EUIH,  // Unnumbered information with header check
+		EUI,   // Unnumberd information
+		EUNKNOWN 
+		};
+
+	enum TCsyCtrlCommand
+		{
+		EParamNeg, // Parameter Negotiation
+		EMSC	   // Modem status command
+		};
+
+public:
+	static CMux0710Protocol* NewL(CPortFactory& aPortFactory);
+	virtual ~CMux0710Protocol();
+
+	void SetCommWriter(CCommFrameWriterAo* aCommWriter);
+
+	TBool IsMuxModeEnabled() const;
+	TInt SwitchToMuxMode();
+	TInt ParseATResponse(TDes8& aResp);
+
+	CCsyMsgBufBpFrame* GetFreeFrameBuf(TBool aCheckFlowControlThresholds = ETrue);
+	void AddFrameFreeQ(CCsyMsgBufBpFrame* aBpFrame);
+
+    TInt Create0710DataFrames(TDesC8& aMsgBuf, const TUint8 aDlcNum);
+	TInt Create0710ControlFrame(TCsyFrameType aFrameType, TUint8 aDlcNum,
+		TCsyCtrlCommand aType = EParamNeg, TUint8 aV24Signals = 0);
+
+	inline TUint8 PreviousNegotiateDlcNum() const;
+    inline TBool MaxRetriesReached() const;
+    
+public:// from MTimeoutObserver
+	void TimedOut();
+
+private:
+	enum TCsyMuxMgrState
+		{
+		ECsyWaitingForAttentionResp,
+		ECsyWaitingForEchoDisableResp,
+		ECsyWaitingForCmuxResp,
+		ECsyMuxEnabled,
+		ECsyWaitingForFlushResp,
+#ifdef USE_TI_CONDAT_STACK
+		ECsyWaitingForResetResp,
+		ECsyWaitingForSleepResp
+#endif
+		};
+	
+private:
+	CMux0710Protocol(CPortFactory& aPortFactory);
+	void ConstructL();
+
+	void Create0710UIHFrameFromMsg(TDesC8& aMsgBuf, TInt aOffset,
+								   CCsyMsgBufBpFrame* aFrameBuf,
+								   TInt aLength, TUint8 aDlcNum);
+
+	void Create0710UIHLayer4FrameFromMsg(TDesC8& aMsgBuf, 
+										 TInt aOffset, 
+										 CCsyMsgBufBpFrame* aFrameBuf, 
+										 TInt aLength, TUint8 aDlcNum, 
+										 TBool aLayer4Begin, 
+										 TBool aLayer4End);
+
+	void ProcessControlChannelRecvUihFrame(CCsyMsgBufBpFrame* aBpFrame);
+
+	TUint8 CalcFCS(TUint8* aBuffer, TInt aLen);
+
+	void DumpFrame(CCsyMsgBufBpFrame* aFrameBuf);
+
+private:
+	CActiveTimeouter*               iTimeouter;
+
+	CPortFactory&                   iPortFactory;
+
+	TCsyMuxMgrState                 iMuxMgrState;
+
+	CCommFrameWriterAo*             iCommWriter;
+
+	// Free Frame Buf List
+	TSglQue<CCsyMsgBufBpFrame>      iFreeFrameBufList;
+	TSglQueIter<CCsyMsgBufBpFrame>  iFreeFrameBufIter;
+	TUint                           iFreeFrameCount;
+
+	TBool iEnforcingFlowControl;
+
+	TBool iModemRequestedToStop;
+
+	TUint8 iParamNegotiateDlcNum;
+
+	TUint8 iAtResponseTimeout;
+
+	TBool iMaxRetriesReached;
+	TBuf8<100> iResponseStr; 
+	TInt iRetryCount;
+	};
+
+// inline methods
+
+/**
+Set the comm writer to the specified object pointer.
+
+@param aCommWriter Pointer to the comm writer
+*/
+inline void CMux0710Protocol::SetCommWriter(CCommFrameWriterAo* aCommWriter)
+	{
+	iCommWriter = aCommWriter;
+	}
+
+/**
+Return True if multiplexing mode is enabled, else return False.
+*/
+inline TBool CMux0710Protocol::IsMuxModeEnabled() const
+	{
+	if (iMuxMgrState == ECsyMuxEnabled)
+		{
+		return (ETrue);
+		}
+	else
+		{
+		return (EFalse);
+		}
+	}
+
+/**
+Return dlc that parameter negotiate command was sent for.
+*/
+inline TUint8 CMux0710Protocol::PreviousNegotiateDlcNum() const
+	{
+	return iParamNegotiateDlcNum;
+	}
+
+/**
+Return whether the max connection retries has been reached.
+*/
+inline TBool CMux0710Protocol::MaxRetriesReached() const
+	{
+	return iMaxRetriesReached;
+	}
+
+#endif // _MUX0710PROTOCOL_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/PortC32Interface.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,60 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file defines the CPortC32Interface class.  This class
+// *               is equivalent to client RComm subsessions. This is derived 
+// *               from the C32 base class for ports CPort.
+//
+
+// CPortC32Interface.h
+
+/** @file CPortC32Interface.h
+ *
+ * PortC32Interface:
+ * - Equivalent to client RComm subsessions. This is derived 
+ *   from the C32 base class for ports CPort.
+ */
+
+#ifndef _PORTC32INTERFACE_H__
+#define _PORTC32INTERFACE_H__
+
+#include <cs_port.h>
+#include "PortC32InterfaceBase.h"
+
+class CPortC32Interface : public CPortC32InterfaceBase
+	{
+public:
+	static CPortC32Interface* NewL(CPortFactory& aPortFactory, 
+								   CPortFactory::TC32PortInfo& aPortInfo);
+
+	virtual ~CPortC32Interface();
+	void SendFrameToClient(CCsyMsgBufBpFrame* aFrame);
+
+protected:
+	virtual TBool ReadFromBufOrQueue();
+
+private:
+	CPortC32Interface(CPortFactory& aPortFactory,
+					  CPortFactory::TC32PortInfo& aPortInfo);
+	void ConstructL();
+
+	virtual TInt QueryReceiveBuffer(TInt& aLength) const;
+	virtual void ResetBuffers(TUint aFlags);
+
+private:
+	TBuf8<KMaxAdvFrameSize>	iPartialReadBuf;
+
+	CCsyMsgBufBpFrame* iReadBuf;
+	};
+
+#endif  // _PORTC32INTERFACE_H__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/PortC32InterfaceBase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,191 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file defines the CPortC32Interface class.  This class
+// *               is equivalent to client RComm subsessions. This is derived 
+// *               from the C32 base class for ports CPort.
+//
+
+// CPortC32InterfaceBase.h
+/** @file
+ *
+ * PortC32InterfaceBase:
+ * - Equivalent to client RComm subsessions. This is base class 
+ *   derived from the C32 base class for ports CPort.
+ */
+
+#ifndef _PORTC32INTERFACEBASE_H__
+#define _PORTC32INTERFACEBASE_H__
+
+#include <cs_port.h>
+#include "CsyGlobals.h"
+#include "Portfactory.h"
+
+class CChannelMgrCmdData;
+class CCsyMsgBufBpFrame;
+
+class CPortC32InterfaceBase : public CPort
+	{
+public:
+	virtual ~CPortC32InterfaceBase();
+
+	// from CPort
+	virtual void Destruct();
+	virtual void StartRead(const TAny* aClientBuffer, TInt aLength);
+	virtual void ReadCancel();
+	virtual void NotifySignalChange(TUint aSignalMask);
+	virtual void NotifySignalChangeCancel();
+	virtual void StartWrite(const TAny* aClientBuffer, TInt aLength);
+	virtual TInt SetConfig(const TDesC8& aPackage);
+
+	// message passing
+	void CompleteWriteRequest(TInt aStatus);
+	virtual void SendFrameToClient(CCsyMsgBufBpFrame* aFrame) = 0;
+
+
+	// utility methods
+	void SetMuxChannel(CChannelMgrCmdData* aMuxChannel);
+	CChannelMgrCmdData* GetMuxChannel() const;
+	TInt GetPortNumber() const;
+	CPortFactory::TC32ClientType GetClientType() const;
+
+	void ModemAndCsyToClientFlowCtrl(const TFlowControl aFlowControl);
+	void ReceivedV24Signals(const TUint8 aV24Signals);
+	TInt SetV24Signals(const TUint aRs232Signals);
+
+	void IncRefCount();
+	void CompleteOutstandingRequest();
+
+	// link for parent CPortFactory
+	TSglQueLink iLink;
+
+protected:
+	CPortC32InterfaceBase(CPortFactory& aPortFactory,
+		CPortFactory::TC32PortInfo& aPortInfo);
+	void ConstructL();
+	void SetDataAvailable();
+
+	void CompleteReadRequest(TInt aStatus);
+	virtual TBool ReadFromBufOrQueue() = 0;
+
+	// utility
+	void RemoveWaitingAllFrames(TBool aAddToFreeList = ETrue);
+	void Shutdown();
+	
+
+	// from CPort, but not all are supported by the CSY
+	virtual TInt QueryReceiveBuffer(TInt& aLength) const = 0;
+	virtual void ResetBuffers(TUint aFlags) = 0;
+	virtual void Break(TInt aTime);
+	virtual void BreakCancel();
+	virtual void WriteCancel();
+	virtual TInt GetConfig(TDes8& aPackage) const;
+	virtual TInt SetServerConfig(const TDesC8& aPackage);
+	virtual TInt GetServerConfig(TDes8& aPackage);
+	virtual TInt GetCaps(TDes8& aPackage);
+	virtual TInt GetSignals(TUint& aSignals);
+	virtual TInt SetSignalsToMark(TUint aSignals);
+	virtual TInt SetSignalsToSpace(TUint aSignals);
+	virtual TInt GetReceiveBufferLength(TInt& aLength) const;
+	virtual TInt SetReceiveBufferLength(TInt aLength);
+	virtual void FreeMemory(); 
+	virtual void NotifyDataAvailable();
+	virtual void NotifyDataAvailableCancel();
+	virtual void NotifyConfigChange();
+	virtual void NotifyConfigChangeCancel();
+	virtual void NotifyFlowControlChange();
+	virtual void NotifyFlowControlChangeCancel();
+	virtual void NotifyBreak();
+	virtual void NotifyBreakCancel();
+	virtual void NotifyOutputEmpty();
+	virtual void NotifyOutputEmptyCancel();
+	virtual TInt GetFlowControlStatus(TFlowControl& aFlowControl);
+	virtual TInt GetRole(TCommRole& aRole);
+	virtual TInt SetRole(TCommRole aRole);
+
+protected:
+
+	// List of frames waiting to be read by the client
+	TSglQue<CCsyMsgBufBpFrame>		iFramesWaitingToBeReadList;
+	TSglQueIter<CCsyMsgBufBpFrame>	iFramesWaitingToBeReadIter;
+
+	// attributes
+	TCommRole						iRole;
+	TCommConfigV01					iConfig;
+	CPortFactory&					iPortFactory;
+
+	CPortFactory::TC32PortInfo		iPortInfo;
+	CChannelMgrCmdData*				iMuxChannel;
+
+	// Pointer to client's read buffer when there is a read outstanding.
+	// (This is the way C32 transfers messages from clients to CSYs.)
+	TAny*							iClientBuffer;
+	TInt							iClientLength;
+	TInt							iPos;
+	TBool							iOneOrMore;
+
+	TFlowControl					iCsyAllowedToSendFrames;
+	TBool							iFlowControlNotifyPending;
+
+	TUint							iSignals;
+	TUint							iSentSignals;
+	TUint							iSignalMask;
+	TBool							iSignalChangeNotifyPending;
+
+	TBool							iDataAvailableNotifyPending;
+
+	TBool							iIsWriteInProgress;
+	TBool							iIsReadInProgress;
+	};
+
+
+// Inline methods
+inline CChannelMgrCmdData* CPortC32InterfaceBase::GetMuxChannel() const
+/**
+ * Return a pointer to the mux channel associated with this C32 port.
+ *
+ * @return Pointer to the mux channel associated with this C32 port
+ */
+	{
+	return iMuxChannel;
+	}
+
+inline CPortFactory::TC32ClientType CPortC32InterfaceBase::GetClientType() const
+/**
+ * Return the client type (command or data) for this C32 port.
+ *
+ * @return Client type command or data
+ */
+	{
+	return iPortInfo.iClientType;
+	}
+
+inline TInt CPortC32InterfaceBase::GetPortNumber() const
+/**
+ * Return the port number for this C32 port.
+ *
+ * @return Port number
+ */
+	{
+	return iPortInfo.iPortNumber;
+	}
+
+inline void CPortC32InterfaceBase::IncRefCount()
+/**
+ * Increment the reference count for this object.
+ */
+	{
+	Inc();
+	};
+
+#endif  // _PORTC32INTERFACEBASE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/PortC32InterfaceIp.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,69 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file defines the CPortC32InterfaceIp class.  This class
+// *               is equivalent to client RComm subsessions. This is derived 
+// *               from the C32 base class for ports CPort.
+//
+
+// CPortC32InterfaceIp.h
+
+/** @file CPortC32InterfaceIp.h
+*/
+#ifndef _PORTC32INTERFACEIP_H__
+#define _PORTC32INTERFACEIP_H__
+
+#include <cs_port.h>
+#include "PortC32InterfaceBase.h"
+
+class CChannelMgrCmdData;
+class CCsyMsgBufBpFrame;
+
+class CPortC32InterfaceIp : public CPortC32InterfaceBase
+	{
+public:
+	static CPortC32InterfaceIp* NewL(CPortFactory& aPortFactory, 
+								   CPortFactory::TC32PortInfo& aPortInfo);
+	virtual ~CPortC32InterfaceIp();
+
+	void SendFrameToClient(CCsyMsgBufBpFrame* aFrame);
+
+protected:
+	virtual TBool ReadFromBufOrQueue();
+
+private:
+	CPortC32InterfaceIp(CPortFactory& aPortFactory,
+					  CPortFactory::TC32PortInfo& aPortInfo);
+	void ConstructL();
+
+	virtual TInt QueryReceiveBuffer(TInt& aLength) const;
+	virtual void ResetBuffers(TUint aFlags);
+	
+	void PlaceIpPacketFramesOntoFreeList();
+	void PlaceIpPacketFramesOntoReadList();
+	TBool CreateIpPacketFromFrames();
+
+private:
+	//TBuf8<KMaxIpPacketSize>	iPartialReadBuf;
+
+	TUint							iNumberOfPacketsWaiting;
+
+	TSglQue<CCsyMsgBufBpFrame>		iFramesReceivedForIpPacket;
+	TSglQueIter<CCsyMsgBufBpFrame>	iFramesReceivedForIpPacketIter;
+	TUint							iCurrentIpPacketLength;
+
+	TBuf8<KMaxIpPacketSize>			iIpPacket;
+	};
+
+
+#endif  // _PORTC32INTERFACEIP_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/Portfactory.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,207 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file is the root of the module. This file contains the 
+// *               declarations for the CPortFactory class and is derived from 
+// *               C32's CSerial.
+//
+
+// PortFactory.h
+
+/** @file PortFactory.h
+ *
+ */
+
+#ifndef _PORTFACTORY_H__
+#define _PORTFACTORY_H__
+
+#include <e32std.h>
+#include <e32hal.h>
+#include <c32comm.h>
+#include <d32comm.h>
+#include <cs_port.h>
+#include <cdblen.h>
+#include "CsyGlobals.h"
+
+class CPortC32Interface;
+class CPortC32InterfaceBase;
+class CChannelMgrBase;
+class CChannelMgrCtrl;
+class CChannelMgrCmdData;
+class CMux0710Protocol;
+class CCommFrameWriterAo;
+class CCommFrameReaderAo;
+
+/** @class CPortFactory PortFactory.h "PortFactory.h"
+ *  @brief  This class provides the factory object which is used to
+ *  construct port objects in the CSY. There is only one instance of
+ *  this class in the CSY. CPortFactory is derived from C32's CSerial
+ *  base class. CPortFactory is also responsible for allocating the
+ *  CSY's multiplexer objects and LDD interface objects.
+ */
+class CPortFactory : public CSerial  
+	{
+public:
+	enum TC32ClientType
+		{
+		EC32ClientUndefined,
+		EC32ClientTsy,
+		EC32ClientNif,
+		EC32ClientIpNif
+		};
+
+	struct TC32PortInfo
+		{
+		TC32ClientType iClientType;
+		TInt           iPortNumber;
+		};
+
+public:
+	static CPortFactory* NewL();
+
+	~CPortFactory();
+
+	static void CloseObject(TAny* aObject);
+
+	inline TBool IsMultiplexerCreated();
+
+	TC32ClientType GetClientType(TInt aPortNum);
+
+	inline CCommFrameWriterAo* GetCommWriterAo() const;
+	inline CCommFrameReaderAo* GetCommReaderAo() const;
+	
+	RBusDevComm* DTEPort();  // LDD
+
+	void ConnectControlChannel();
+	void DisconnectControlChannel();
+	void ChannelCtrlDoCancel();
+	
+	CPortC32InterfaceBase* FindPortC32Interface(const TUint8 aDlcNum);
+	CChannelMgrCmdData* FindChannelMgrByDlcNum(const TUint8 aDlcNum);
+
+	inline CMux0710Protocol* GetMux0710Protocol() const;
+
+	inline CChannelMgrCtrl* GetControlChannel() const;
+
+	void RemoveC32Port(CPortC32InterfaceBase* aPort);
+
+	void ConnectIpNifPort(const TUint8 aDlcNum);
+
+	TSecurityPolicy PortPlatSecCapability(TUint aPort) const;
+
+	TBool FindDlcToEnable();
+	void FindActiveDataDlcToStop();
+	void StopAnyDlc();
+	TBool DecrementNumOfOpenPorts();
+	
+
+
+private:
+	CPortFactory();	
+	void ConstructL();
+
+	void CreateCsyObjectsL();
+
+	// from CSerial
+	virtual CPort* NewPortL(const TUint aUnit);
+	virtual void Info(TSerialInfo& aSerialInfo);
+
+	// utility methods
+	CChannelMgrCmdData* FindChannelMgr(const TUint aC32PortNum);
+
+	TInt ConfigurePhysicalCommPortL();
+
+private:
+	// attributes
+	TBool							iMuxObjectsCreated;
+
+	// C32 interface ports
+	TSglQue<CPortC32InterfaceBase>		iPortC32InterfaceList;
+	TSglQueIter<CPortC32InterfaceBase>	iPortC32InterfaceIter;	
+
+	// multiplexer framer
+ 	CMux0710Protocol*				iMux0710Protocol;
+
+	// multiplexer Control channel
+	CChannelMgrCtrl*				iChannelCtrl;
+
+	// multiplexer Command channels
+	TSglQue<CChannelMgrCmdData>		iDataChannelList;
+	TSglQueIter<CChannelMgrCmdData>	iDataChannelIter;
+
+	// interface to the serial port logical device driver
+	RBusDevComm						iCommPort;
+	CCommFrameWriterAo*				iCommWriterAo;
+	CCommFrameReaderAo*				iCommReaderAo;
+
+	TBool iDisconnectInProgress;
+
+	TUint iLastDlcNum;
+	TUint iNumOfOpenPorts;
+	
+	TBool iOpenPortFailed;
+	};
+
+
+// Inline Methods
+inline CCommFrameWriterAo* CPortFactory::GetCommWriterAo() const
+/**
+ * Return a pointer to the CSY's comm writer object.
+ * @param void
+ * @return Pointer to the CSY's comm writer object
+ */
+	{ 
+ 	return iCommWriterAo; 
+	}
+
+inline CCommFrameReaderAo* CPortFactory::GetCommReaderAo() const
+/**
+ * Return a pointer to the CSY's comm reader object.
+ * @param void
+ * @return Pointer to the CSY's comm reader object
+ */
+	{ 
+ 	return iCommReaderAo; 
+	}
+
+inline RBusDevComm* CPortFactory::DTEPort()
+/**
+ * Return a pointer to the CSY's LDD port interface object.
+ * @param void
+ * @return Pointer to the CSY's LDD port interface object
+ */
+	 { 
+ 	return (&iCommPort);
+	 }
+
+inline CMux0710Protocol* CPortFactory::GetMux0710Protocol() const
+/**
+ * Return a pointer to the CSY's mux protocol object.
+ * @param void
+ * @return Pointer to the CSY's mux protocol object
+ */
+	{
+	return iMux0710Protocol;
+	}
+
+inline CChannelMgrCtrl* CPortFactory::GetControlChannel() const
+/**
+ * Return a pointer to the CSY's control channel object.
+ * @param void
+ * @return Pointer to the CSY's control channel object
+ */
+	{
+	return iChannelCtrl;
+	}
+
+#endif  // _PORTFACTORY_H__
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/etools.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,69 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description: This file defines a tool for putting a name to the class
+// *              when a memory leak occurs, you can trace it back by looking 
+//                at the memory space.
+//
+
+// etools.h
+
+/** @file etools.h
+ *
+ */
+
+#ifndef ETOOLS_H__
+#define ETOOLS_H__
+
+#include <e32std.h>
+#include <e32panic.h>
+#include <e32svr.h>
+
+// Tool for putting a name to the class
+// when a memory leak occurs, you can trace it back
+// by looking at the memory space!
+// the for(;;) is a bit awkward
+#define CLASSNAMEDECL(a) char __iName[sizeof(#a)];
+
+#ifdef _DEBUG
+#define CLASSNAMEINIT(a) \
+	char tmp[] = #a; \
+	for(TUint _i_##a=0;_i_##a<sizeof(tmp);_i_##a++) __iName[_i_##a] = tmp[_i_##a]; 
+#define CLASSNAME this->__iName
+#else
+#define CLASSNAMEINIT(a)
+#define CLASSNAME "?"
+#endif
+
+//
+// put this in your constructor/destructor to see the memory usage
+//
+#if defined __DEBUGLOGFILE__
+#define CTOR(a)	\
+	_LOGF4("+++ object created at 0x%08x (%d bytes)\t%s ", this, sizeof(a) - __Align8(sizeof(__iName)), #a );
+#define DTOR(a)	\
+	_LOGF4("--- object deleted at 0x%08x (%d bytes)\t%s", this, sizeof(a) - (4+(sizeof(__iName) & ~0x03)), #a );
+#else
+#define CTOR(a)
+#define DTOR(a)
+#endif
+
+//
+// size of arrays
+//
+
+#ifndef ELEM_SIZE
+#define ELEM_SIZE(t) (sizeof(t)/sizeof(t[0]))
+#endif
+
+#endif // ETOOLS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/inc/timeouter.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,68 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file defines CActiveTimeouter, a very simple timeout class. 
+// *               It is an active timeout-class used by clients to get asynchronous timeouts.
+// *               The observer derives from the MTimeoutObserver class	and calls the Start 
+// *               function to start the timer. When and if the timeout occurs the TimedOut 
+// *               function on the observer will be called.
+// *               MTimeoutObserver is an abstract mixin class implemented by a class that is 
+// *               interested in timeouts generated by CActiveTimeouter.
+//
+
+// timeouter.h
+
+/** @file timeouter.h
+ *
+ */
+
+#ifndef TIMEOUTER_H__
+#define TIMEOUTER_H__
+
+#include <e32base.h>
+#include "etools.h"
+
+
+class MTimeoutObserver
+	{
+public:
+	// called by CActiveTimeouter when the timeout happens
+	virtual void TimedOut() = 0;
+	};
+
+/** @class CActiveTimeouter Timeouter.h "Timeouter.h"
+ *  @brief  Class CActiveTimeouter is an active object that is used
+ *  to detect and report a timeout condition.
+ */
+class CActiveTimeouter : public CTimer
+	{
+public:
+	static CActiveTimeouter* NewL(MTimeoutObserver& aObserver);
+	~CActiveTimeouter();
+	void Start(const TTimeIntervalMicroSeconds32& aTimeIntervalMicroSeconds32);
+	void Stop();
+
+private:
+	CActiveTimeouter(MTimeoutObserver& aObserver);
+
+private: // from CTimer
+	void RunL();
+
+private: // owned
+	CLASSNAMEDECL(CActiveTimeouter)          
+
+private: // unowned
+	MTimeoutObserver& iTheTimeoutObserver;    
+	};
+
+#endif // TIMEOUTER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/ChannelMgrBase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,818 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  The CChannelMgrBase class defines a single 3GPP 27.010 based logical channel
+// *               called DLC. This base class is inherited by derived control and data channel
+// *               classes which add specific channel type behavior.
+//
+
+// ChannelMgrBase.cpp
+
+/** @file ChannelMgrBase.cpp
+ *
+ */
+
+#include "ChannelMgrBase.h"
+#include "CsyMsgBufBpFrame.h"
+#include "PortC32Interface.h"
+#include "Mux0710Protocol.h"
+#include "CsyDebugLogger.h"
+#include "CommFrameWriterAo.h"
+
+CChannelMgrBase::CChannelMgrBase(const TUint8 aDlcNum,
+								 CPortFactory& aPortFactory,
+								 CMux0710Protocol& aMux0710Protocol)
+: iV24Signals(0x0D),
+  iDlcNum(aDlcNum),
+#ifndef __CSY_PROTOTYPE__
+  iChannelState(ECsyChannelStateDisconnected),
+#else
+  iChannelState(ECsyChannelStateConnected),
+#endif
+  iPortFactory(aPortFactory),
+  iPortC32Interface(NULL),
+#ifndef __CSY_PROTOTYPE__
+  iMux0710Protocol(aMux0710Protocol),
+#else
+  iMux0710Protocol(aMux0710Protocol),
+  iChannelReady(ETrue),
+  iInitFinished(ETrue),
+#endif
+  iModemAllowedToSendFrames(EFlowControlOff)
+/**
+ * Constructor.
+ * @param aDlcNum - DLC number for the channel
+ * @param aPortFactory - Reference to port factory
+ * @param aMux0710Protocol - Reference to the Mux 27.010 object
+ */
+ 	{
+	}
+
+CChannelMgrBase::~CChannelMgrBase()
+/**
+ * Destructor. Delete all resources and memory allocated by this object.
+ */
+	{
+	_LOG_L4C1("CChannelMgrBase::~CChannelMgrBase");
+
+	delete iChannelObserverAo;
+	delete iTimeouter;
+	}
+
+void CChannelMgrBase::ConstructL()
+/**
+ * Create any instances and allocate any memory used by this object.
+ */
+ 	{
+	_LOG_L4C1("CChannelMgrBase::ConstructL");
+
+	iChannelObserverAo = CChannelObserverAo::NewL();
+	CActiveScheduler::Add(iChannelObserverAo); 
+
+	iTimeouter = CActiveTimeouter::NewL(*this);
+	iTimeoutVal = KOneSecond;
+	iTxCountLimit = 10;
+	}
+
+TDes8& CChannelMgrBase::RefToMsgBuffer()
+/**
+ * This method returns a pointer to the message buffer to use
+ * to format a message to send to the baseband.
+ *
+ * @return pointer
+ */
+	{
+	// only one buffer is available for messages to the baseband
+	return iDataToSendToModem;
+	}
+
+void CChannelMgrBase::ProcessRecvFrame(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method is called to process a frame that was received
+ *
+ * @param aBpFrame - Pointer to the frame buffer
+ */
+	{
+	if (aBpFrame->GetFrameType() != KCsy0710CTLUIH)
+		ProcessNonUihRecvFrame(aBpFrame);
+	else
+		ProcessRecvUihFrame(aBpFrame);
+	}
+
+TInt CChannelMgrBase::PlaceOnOutboundQueue()
+/**
+ * This method is called to process the "to baseband Message Q" event
+ * for the channel. This event indicates that there is a message
+ * that needs to be sent to the baseband.
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrBase::PlaceOnOutboundQueue [iDlcNum=%d]",iDlcNum);
+
+	TInt ret = KErrNone;
+
+	if (iCsyAllowedToSendFrames == EFlowControlOn)
+		{
+		_LOG_L4C1("Csy -> modem flow control = ON");
+		iDelayedWriteToModem = ETrue;
+
+		// We cannot fragment and place it on the write queue yet since
+		// flow control in the direction of Csy to modem is set to ON.
+		
+		_LOG_L4C1("<<CChannelMgrBase::PlaceOnOutboundQueue - write delayed");
+		return KErrNone;	
+		}
+
+	if (iChannelState != ECsyChannelStateConnected)
+		{
+		// this should not happen (should be caught by flow control above)
+		// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState));
+		_LOG_L4C1("<<CChannelMgrBase::PlaceOnOutboundQueue - write ignored");
+		return KErrNone;	
+		}
+
+	ret = iMux0710Protocol.Create0710DataFrames(iDataToSendToModem, iDlcNum);
+
+	_LOG_L4C2("<<CChannelMgrBase::PlaceOnOutboundQueue [ret=%d]",ret);
+	return ret;
+	}
+
+void CChannelMgrBase::WriteCancel()
+/**
+ * The client has requested the write by this DLC be cancelled.
+ */
+	{
+	_LOG_L4C1(">>CChannelMgrBase::WriteCancel");
+
+	if (iDelayedWriteToModem)
+		{
+		_LOG_L4C1("Delayed write has been cancelled");
+		iDelayedWriteToModem = EFalse;
+		}
+
+	_LOG_L4C1("Remove any frames on write queue");
+
+	// remove any frames (if any exist) from the writer Ao and
+	// place them on the free queue
+	
+	CCommFrameWriterAo* writer = iPortFactory.GetCommWriterAo();
+
+	writer->RemoveAnyDlcFramesOnWriteList(iDlcNum, EFalse);
+	writer->RemoveAnyDlcFramesFromWaitList(iDlcNum, EFalse);
+
+	_LOG_L4C1("<<CChannelMgrBase::WriteCancel");
+	}
+
+TInt CChannelMgrBase::Connect()
+/**
+ * Request to connect the channel. If the channel state is not "Connected"
+ * then issue a SABM frame and change the channel state to "Connecting".
+ *
+ * @return KErrNone or KErrGeneral
+ */
+    {
+    _LOG_L4C3(">>CChannelMgrBase::Connect [iDlcNum=%d,iChannelState=%d]",
+		iDlcNum,iChannelState);
+
+	TInt ret = KErrNone;
+	if (iChannelState != ECsyChannelStateConnected)
+		{
+		_LOG_L4C1("Dlc is not currently connected");
+		ret = iMux0710Protocol.Create0710ControlFrame(CMux0710Protocol::ESABM, iDlcNum);
+		if (ret == KErrNone)
+			{
+			iChannelState = ECsyChannelStateConnecting;
+			iInitFinished = EFalse;
+			iTimeouter->Stop();
+			iTimeouter->Start(iTimeoutVal);
+			iTxCount = iTxCountLimit;
+			}
+		else
+			{
+			_LOG_L1C1("** Cannot send SABM **");
+			}
+		}
+	else
+		{
+		_LOG_L2C1("** Ignored Connect **");
+		ret = KErrGeneral;
+		}
+
+    _LOG_L4C2("<<CChannelMgrBase::Connect [ret=%d]",ret);
+	return ret;
+	}
+
+TInt CChannelMgrBase::ParameterNegotiate()
+/**
+ * Request to parameter negotiation for the channel. If the channel state is not 
+ * "Connected" then issue a UIH frame and with the parameter negotiation.
+ *
+ * @return KErrNone or KErrGeneral
+ */
+    {
+    _LOG_L4C3(">>CChannelMgrBase::ParameterNegotiate [iDlcNum=%d,iChannelState=%d]",
+		iDlcNum,iChannelState);
+
+	TInt ret = KErrNone;
+	if (iChannelState != ECsyChannelStateConnected) 
+		{
+		_LOG_L4C1("Dlc is not currently connected");
+		if (iMux0710Protocol.Create0710ControlFrame(CMux0710Protocol::EUIH, iDlcNum) == KErrNone)
+			{
+			iChannelState = ECsyChannelStateParameterNegotiating;
+			iTimeouter->Stop();
+			iTimeouter->Start(iTimeoutVal);
+			iTxCount = iTxCountLimit;
+			}
+		else
+			{
+			_LOG_L1C1("** Cannot send EUIH Param Neg. **");
+			ret = KErrGeneral;
+			}
+		}
+	else
+		{
+		_LOG_L2C1("** Ignored ParameterNegotiate **");
+		}
+
+    _LOG_L4C2("<<CChannelMgrBase::ParameterNegotiate [ret=%d]",ret);
+	return ret;
+	}
+
+TInt CChannelMgrBase::Disconnect()
+/**
+ * Request to disconnect the channel. If the channel is not "Disconnected"
+ * then issue a DISC frame and change the channel state to "Disconnecting".
+ *
+ * @return KErrNone or error code
+ */
+    {
+    _LOG_L4C3(">>CChannelMgrBase::Disconnect [iDlcNum=%d,iChannelState=%d]",
+		iDlcNum,iChannelState);
+		
+	TInt ret = KErrNone;
+	if (iChannelState == ECsyChannelStateConnected)
+		{
+		_LOG_L4C1("Dlc is currently connected");
+		if (iMux0710Protocol.Create0710ControlFrame(CMux0710Protocol::EDISC, iDlcNum) == KErrNone)
+			{
+			iChannelState = ECsyChannelStateDisconnecting;
+			_LOG_L1C2("** Setting Channel Ready to False for DLC %d **",iDlcNum);
+			iChannelReady = EFalse;
+			iTimeouter->Stop();
+			
+			// Allow time for the channel to disconnect...
+			User::After(1);
+			}
+		else
+			{
+			_LOG_L1C1("** Cannot send EDISC **");
+			ret = KErrGeneral;
+			}
+		}
+	else if (iChannelState == ECsyChannelStateTransmitError)
+		{
+		_LOG_L2C1("** Disconnect request for channel with transmit error **");
+		ret = KErrNone;
+		}
+	else
+		{
+		_LOG_L2C1("** Ignored disconnect **");
+		ret = KErrGeneral;
+		}
+
+    _LOG_L4C2("<<CChannelMgrBase::Disconnect [ret=%d]",ret);
+	return ret;
+	}
+
+void CChannelMgrBase::ProcessNonUihRecvFrame(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method is called to process a Non-UIH frame which the channel
+ * has received from the baseband for the channel.
+ *
+ * @param aBpFrame - Pointer to the received Non-UIH frame
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrBase::ProcessNonUihRecvFrame [iDlcNum=%d]", iDlcNum);
+
+	TUint8 frameType = aBpFrame->GetFrameType();
+	iMux0710Protocol.AddFrameFreeQ(aBpFrame);
+
+	switch (frameType)
+		{
+	case KCsy0710CTLSABM:
+		_LOG_L4C1("SABM");
+		// MAF we should respond to this
+		break;
+
+	case KCsy0710CTLUA:
+		{
+		_LOG_L4C1("UA");
+		iTimeouter->Stop();
+
+		if (iChannelState == ECsyChannelStateConnecting)
+			{
+			_LOG_L4C1("SABM received by remote end - send MSC command");
+			if (SendMscCommand(iV24Signals) == KErrNone)
+				iChannelState = ECsyChannelStateMSCsent;
+			}
+		else if (iChannelState == ECsyChannelStateDisconnecting)
+			{
+			_LOG_L4C2("Channel disconnected %d", iDlcNum);
+			iChannelState = ECsyChannelStateDisconnected;
+
+			if (iPortFactory.DecrementNumOfOpenPorts())
+				{
+				NotifyChannelReady();
+				}
+			}
+		}
+		break;
+
+	case KCsy0710CTLDM:    // 0x0F
+		_LOG_L4C1("DM");
+		break;
+
+	case KCsy0710CTLDISC:  // 0x43
+		_LOG_L4C1("DISC");
+		// MAF we should respond to this
+		break;
+
+	case KCsy0710CTLUIH:
+	case KCsy0710CTLUI:
+		// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState)); here
+		break;
+	
+	default:
+		_LOG_L1C2("** Unknown FrameType = 0x%02x **", frameType);
+		break;
+		}
+
+	_LOG_L4C1("<<CChannelMgrBase::ProcessNonUihRecvFrame");
+	}
+
+TInt CChannelMgrBase::SendMscCommand(TUint8 aV24Signals)
+/**
+ * Sends an MSC command
+ *
+ * @param aV24Signals
+ * @return error if failed to send
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrBase::SendMscCommand [aV24Signals=0x%02x]",
+		aV24Signals);
+
+	if (iMscReplyExpected)
+		{
+		_LOG_L4C1("<<CChannelMgrBase::SendMscCommand - already doing MSC");
+		return KErrNotReady;
+		}
+
+	// Keep the signals in case of resend
+	iV24Signals = aV24Signals;
+	TInt ret = iMux0710Protocol.Create0710ControlFrame(
+		CMux0710Protocol::EUIH, iDlcNum, CMux0710Protocol::EMSC, iV24Signals);
+	
+	if (ret != KErrNone)
+		{
+		_LOG_L1C1("** Could not send MSC command **");
+		}
+	else
+		{
+		iTimeouter->Stop();
+		iTimeouter->Start(iTimeoutVal);
+		iTxCount = iTxCountLimit;
+		iMscReplyExpected = ETrue;
+		}
+
+	_LOG_L4C2("<<CChannelMgrBase::SendMscCommand [ret=%d]",ret);
+	return ret;
+	}
+
+void CChannelMgrBase::MscReceived(TUint8 aV24Signals)
+/**
+ * Processes a received MSC command
+ *
+ * @param aV24Signals
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrBase::MscReceived [aV24Signals=0x%x]",
+		aV24Signals);
+
+	if (!iMscReplyExpected)
+		{
+		_LOG_L2C1("*** Not expecting MscReceived? ***");
+		return;
+		}
+
+	iMscReplyExpected = EFalse;
+	iTimeouter->Stop();
+
+	if (iChannelState == ECsyChannelStateMSCsent)
+		{
+		_LOG_L4C1("MSC cmd part of start up sequence");
+		iChannelState = ECsyChannelStateWaitingForChannelReady;
+
+		//different type of channel may need different init process.
+		if (iPortC32Interface)
+			{
+#ifdef _27010ADVANCEOPTION
+			if (iPortC32Interface->GetClientType() == CPortFactory::EC32ClientIpNif)
+				{
+				_LOG_L4C1(" IpNif Channel Initialized");
+				// Don't need to wait for AT command interpreter ready since not AT
+				iChannelState = ECsyChannelStateConnected;
+				NotifyChannelReady();
+				ModemAndCsyToClientFlowCtrl(EFlowControlOff);
+				}
+#endif
+			}
+		else
+			{
+			// Command channel
+			iChannelState = ECsyChannelStateConnected;
+			NotifyChannelReady();
+			}
+		}
+
+	if ((iDlcNum)&&(iV24Signals != aV24Signals))
+		{
+		_LOG_L4C3("Data Dlc - Response different to sent [%x != %x]",
+			iV24Signals, aV24Signals);
+
+		ReceivedV24Signals(aV24Signals);
+		}
+
+	_LOG_L4C1("<<CChannelMgrBase::MscReceived");
+	}
+
+void CChannelMgrBase::ModemAndCsyToClientFlowCtrl(const TFlowControl aFlowControl)
+/**
+ * Set the channel's flow control to the specified value.
+ * Update the associate port object's flow control if the port object 
+ * exists.
+ *
+ * @param aFlowControl - New flow control state
+ */
+ 	{
+	_LOG_L4C3(">>CChannelMgrBase::ModemAndCsyToClientFlowCtrl [aFlowControl=%d,iDlcNum=%d]", 
+		aFlowControl,iDlcNum);
+
+	iCsyAllowedToSendFrames = aFlowControl;
+	if ((aFlowControl == EFlowControlOff)&&(iDelayedWriteToModem))
+		{
+		_LOG_L4C1("Flow control now OFF - delayed frame to send");
+
+		TInt ret = iMux0710Protocol.Create0710DataFrames(iDataToSendToModem, iDlcNum);
+		if (ret)
+			{
+			_LOG_L1C2("** Fragmentation failed [ret=%d] **",ret);
+			}
+		else
+			{
+			_LOG_L4C1("Delayed write placed on write queue");
+			iDelayedWriteToModem = EFalse;
+			}
+		}
+
+	CPortC32InterfaceBase* port = GetC32Port();
+	if (port)
+		port->ModemAndCsyToClientFlowCtrl(aFlowControl);
+	else
+		{
+		_LOG_L2C1("** GetC32Port() returned NULL **");
+		}
+
+	_LOG_L4C1("<<CChannelMgrBase::ModemAndCsyToClientFlowCtrl");
+	}
+
+void CChannelMgrBase::ReceivedV24Signals(const TUint8 aV24Signals)
+/**
+ * Set the channel's signals to the specified value.
+ * Update the associate port object's flow control if the port object 
+ * exists.
+ *
+ * @param aSignals - new signal state
+ */
+ 	{
+	_LOG_L4C3(">>CChannelMgrBase::ReceivedV24Signals [aV24Signals=0x%x,iDlcNum=%d]", 
+		aV24Signals,iDlcNum);
+
+	CPortC32InterfaceBase* port = GetC32Port();
+	if (port)
+		{
+		// Flow control
+		TFlowControl flowControl = EFlowControlOff;
+
+		// FC (bit 2)
+		if (aV24Signals & 0x02)
+			{
+			_LOG_L4C2("FC=1 - modem dlc %d unable to accept frames",iDlcNum);
+			flowControl = EFlowControlOn;
+			_LOG_L4C1("flowControl On  (i.e stop flow)");
+
+			// move frames for this dlc from write list to wait list
+			iPortFactory.GetCommWriterAo()->RemoveAnyDlcFramesOnWriteList(iDlcNum);
+			}
+		else
+			{
+			// move any frames for this dlc from wait to write list
+			iPortFactory.GetCommWriterAo()->RemoveAnyDlcFramesFromWaitList(iDlcNum);
+			}
+
+		ModemAndCsyToClientFlowCtrl(flowControl);
+
+		port->ReceivedV24Signals(aV24Signals);
+		}
+	else
+		{
+		_LOG_L2C1("** GetC32Port() returned NULL **");
+		}
+
+	_LOG_L4C1("<<CChannelMgrBase::ReceivedV24Signals");
+	}
+
+void CChannelMgrBase::WaitForChannelReady()
+/**
+ * This method starts an active object and waits for the channel ready
+ * call back signal.
+ */
+	{
+	_LOG_L4C1(">>CChannelMgrBase::WaitForChannelReady");
+
+	if (iMux0710Protocol.MaxRetriesReached())
+		{
+		_LOG_L4C1("Mux Max Retries reached - so skip Channel Ready");
+		}
+	else
+		{
+		// kick off an active object and wait for channel ready call back
+		if (iChannelReady)
+			{
+			_LOG_L4C2("iChannelReady=%d",iChannelReady);
+			}
+		else if (!iChannelObserverAo->IsActive())
+			{
+			// start the active object. CSY will wait here until channel is ready
+			// nest active scheduler is used here as we did not want to block whole thread (reading/writing)
+
+			iChannelObserverAo->StartWait();
+
+			// start a nested scheduling; blocks until CActiveScheduler::Stop() 
+			// is called in DoCancel()
+
+			// MAF look at use CActiveSchedulerWait instead of this
+
+			// One basic assumption here is that CSY will process port open request one by one
+			// (although there may be mutiple port open requests from clients, c32 will call PortFactory::NewPortL
+			// one by one.) This assumption should be valid as it is only one thread for c32
+			// if this assumption does not hold, headache follows.
+			_LOG_L4C1("Start wait for channel ready");
+
+			CActiveScheduler::Start();
+			_LOG_L4C1("End wait for channel ready");
+			}
+		else
+			{
+			_LOG_L4C1("We are here only when others are already waiting");
+			}
+		}
+	_LOG_L4C1("<<CChannelMgrBase::WaitForChannelReady");
+	}
+
+void CChannelMgrBase::TimedOut()
+/**
+ * This method will be called when we have a timeout During receive a reply.
+ * It will retransmit if needed.
+ */
+	{
+	_LOG_L4C1(">>CChannelMgrBase::TimedOut");
+
+	iTxCount--;
+	if (iTxCount > 0)  // retransmit
+		{
+		_LOG_L4C2("iTxCount=%d",iTxCount);
+
+		TInt ret = KErrNone;
+		if (iMscReplyExpected)
+			{
+			iMscReplyExpected = EFalse;
+			ret = SendMscCommand(iV24Signals);
+			}
+		else
+			{
+			switch(iChannelState)
+				{
+			case ECsyChannelStateParameterNegotiating:
+				ret = iMux0710Protocol.Create0710ControlFrame(
+					CMux0710Protocol::EUIH, iDlcNum, CMux0710Protocol::EParamNeg);
+				break;
+			case ECsyChannelStateConnecting:
+				ret = iMux0710Protocol.Create0710ControlFrame(
+					CMux0710Protocol::ESABM, iDlcNum);
+				break;
+			case ECsyChannelStateDisconnecting:
+				ret = iMux0710Protocol.Create0710ControlFrame(
+					CMux0710Protocol::EDISC, iDlcNum);
+				break;
+			default:
+				// should never reach here
+				_LOG_L1C1("** unexpected receiving timeout **");
+				}
+			}
+		if (ret)
+			{
+			// Error sending - we shall just wait until the timeout and try again
+			_LOG_L1C2("** Error sending on dlc 0 [ret=%d] **",ret);
+			}
+		iTimeouter->Stop();
+		iTimeouter->Start(iTimeoutVal);
+		}
+	else
+		{
+		_LOG_L1C1("** Retries expired **");
+		if (iMscReplyExpected)
+			{
+			_LOG_L1C1("** Retries expired for MSC command **");
+			iMscReplyExpected = EFalse;
+			}
+
+		// we have problem communication, may need to reset?
+		iChannelState = ECsyChannelStateTransmitError;
+		NotifyChannelReady();
+		}
+
+	_LOG_L4C1("<<CChannelMgrBase::TimedOut");
+	}
+
+void CChannelMgrBase::NotifyChannelReady()
+/**
+ * This method stops the waiting for a channel.
+ */
+	{
+	_LOG_L4C1("CChannelMgrBase::NotifyChannelReady");
+
+	iChannelReady = ETrue;
+	iInitFinished = ETrue;
+
+	// complete the active object if it is running
+	if (iChannelObserverAo->IsActive())
+		{
+		iChannelObserverAo->ChannelReady();
+		}
+	}
+
+TInt CChannelMgrBase::SetCsyToModemFlowControl(TFlowControl aFlowControl)
+/**
+ * 
+ */
+	{
+	_LOG_L4C3(">>CChannelMgrBase::SetCsyToModemFlowControl [aFlowControl=%d,iDlcNum=%d]",
+		aFlowControl,iDlcNum);
+
+	TInt ret = KErrNone;
+	if (aFlowControl != iModemAllowedToSendFrames)
+		{
+		TUint8 v24Signals = iV24Signals;
+		TBool sendCommand = EFalse;
+		if (aFlowControl == EFlowControlOn)
+			{
+			_LOG_L4C1("aFlowControl = ON");
+			if (v24Signals & 0x02)
+				{
+				_LOG_L4C1("** Flow control already set **");
+				}
+			else
+				{
+				v24Signals |= 0x02;
+				sendCommand = ETrue;
+				}
+			}
+		else
+			{
+			_LOG_L4C1("aFlowControl = OFF");
+			if (v24Signals & 0x02)
+				{
+				v24Signals ^= 0x02;
+				sendCommand = ETrue;
+				}
+			else
+				{
+				_LOG_L4C1("Flow control already off");
+				}
+			}
+		if (sendCommand)
+			{
+			ret = SendMscCommand(v24Signals);
+			if (ret)
+				{
+				_LOG_L4C1("SendMscCommand failed");
+				}
+			else
+				{
+				_LOG_L4C3("Csy to modem flow control changed %d -> %d",
+					iModemAllowedToSendFrames,aFlowControl);
+				iModemAllowedToSendFrames = aFlowControl;
+				}
+			}
+		}
+
+	_LOG_L4C2("<<CChannelMgrBase::SetCsyToModemFlowControl [ret=%d]",ret);
+	return ret;
+	}
+
+//
+// class CChannelObserverAo
+//
+
+CChannelObserverAo::CChannelObserverAo()
+: CActive(CActive::EPriorityStandard)
+/**
+ * Constructor.  Pass priority of active object to base class.
+ *
+ */
+	{}
+
+CChannelObserverAo* CChannelObserverAo::NewL()
+/**
+ * This method uses two phase construction and the cleanup stack
+ * to create an instance of class CChannelObserverAo.
+ *
+ * @return Pointer to the created instance
+ */
+	{
+	_LOG_L4C1("CChannelObserverAo::NewL");
+	return new (ELeave) CChannelObserverAo();
+	}
+
+CChannelObserverAo::~CChannelObserverAo()
+/**
+ * Destructor. Cancel any outstanding request.
+ */
+	{	
+	if (IsActive())
+		Cancel();
+	}
+
+void CChannelObserverAo::RunL()
+/**
+ * This method should not be called. Request of this 
+ * active object will only be canceled.
+ */
+	{
+	// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState));
+	_LOG_L1C1("** CChannelObserverAo::RunL() - should not be called **");
+	}
+
+void CChannelObserverAo::DoCancel()
+/**
+ * Cancel an outstanding request. This will complete request
+ * with KErrCancel and stop waiting.
+ */
+	{
+	_LOG_L4C1("CChannelObserverAo::DoCancel");
+
+	iStatus = KErrCancel;
+	TRequestStatus* temp = &iStatus;
+	User::RequestComplete(temp, KErrCancel);
+
+	_LOG_L4C1("CChannelObserverAo stop scheduler");
+	CActiveScheduler::Stop();
+	}
+
+void CChannelObserverAo::StartWait()
+/**
+ * Set active and start waiting.
+ */
+	{
+	_LOG_L4C1("CChannelObserverAo::StartWait");
+	if (!IsActive())
+		{
+		iStatus = KRequestPending;
+		SetActive();
+		}
+	}
+
+void CChannelObserverAo::ChannelReady()
+/**
+ * Called when expected event occured to stop waiting. 
+ */
+	{
+	_LOG_L4C1("CChannelObserverAo::ChannelReady");
+
+	// complete current request
+	if (IsActive())
+		{
+		_LOG_L4C1("CChannelObserverAo Active");
+		Cancel();
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/ChannelMgrCmdData.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,282 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  The CChannelMgrCmdData class defines a single 3GPP 27.010 based logical channel
+// *               called DLC. Derived control and data channel add specific behavior.
+//
+
+// ChannelMgrCmdData.cpp
+
+/** @file ChannelMgrCmdData.cpp
+ *
+ */
+
+#include "ChannelMgrCmdData.h"
+#include "PortC32InterfaceBase.h"
+#include "PortC32Interface.h"
+#include "CsyMsgBufBPFrame.h"
+#include "CsyDebugLogger.h"
+
+CChannelMgrCmdData* CChannelMgrCmdData::NewL(const TUint8 aDlcNum,
+											 CPortFactory& aPortFactory,
+											 CMux0710Protocol& aMux0710Protocol)
+/**
+ * This methods uses two phase construction and the cleanup stack to create
+ * an instance of class CChannelMgrCmd.
+ * @param aDlcNum - DLC number of this channel
+ * @param aPortFactory - Reference to the port factory
+ * @param aMux0710Protocol - Pointer to the 27.010 mux protocol
+ * @return Pointer to the created instance
+ */
+    {
+	_LOG_L4C2("CChannelMgrCmdData::NewL [aDlcNum=%d]", aDlcNum);
+
+    CChannelMgrCmdData* p = new(ELeave) CChannelMgrCmdData(aDlcNum, aPortFactory,
+														   aMux0710Protocol);
+ 	CleanupStack::PushL(p);
+ 	p->ConstructL();
+	CleanupStack::Pop(p);
+ 	return p;
+	}
+
+CChannelMgrCmdData::~CChannelMgrCmdData()
+/**
+ * Destructor. Delete all resources and memory allocated by this object.
+ * Disconnect the channel from the multiplexer.
+ */
+	{
+    _LOG_L4C1("CChannelMgrData::~CChannelMgrCmdData");
+	}
+
+
+CChannelMgrCmdData::CChannelMgrCmdData(const TUint8 aDlcNum,
+									   CPortFactory& aPortFactory,
+									   CMux0710Protocol& aMux0710Protocol)
+: CChannelMgrBase(aDlcNum, aPortFactory, aMux0710Protocol),
+  iCount(0)
+/**
+ * Constructor.
+ * @param aDlcNum - DLC number of this channel
+ * @param aPortFactory - Reference to the port factory
+ * @param aMux0710Protocol - Reference to the 27.010 mux protocol
+ */
+ 	{
+	iCsyAllowedToSendFrames = EFlowControlOn;
+	}
+
+void CChannelMgrCmdData::ConstructL()
+/**
+ * Create any instances and allocate any memory used by this object.
+ */
+ 	{
+	CChannelMgrBase::ConstructL();
+	}
+
+void CChannelMgrCmdData::Open(CPortC32InterfaceBase* aPort)
+/**
+ * Open the port
+ *
+ * @param aPort - Pointer to CPortC32Interface
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrCmdData::Open [aPort=0x%x]",aPort);
+	
+	iCount++;
+	if (iCount == 1)
+		{
+		_LOG_L4C1("First client of port");
+		
+		if (aPort->GetClientType() == CPortFactory::EC32ClientIpNif)
+			{
+			ParameterNegotiate();
+			}
+		else
+			{
+			TInt err = Connect();
+			if (err != KErrNone)
+				_LOG_L4C2("Open Connect error =%d",err);				
+			}
+	}
+	iPortArray.Insert(aPort,0);
+	SetOwner(aPort);
+
+	_LOG_L4C2("<<CChannelMgrCmdData::Open [iCount=%d]",iCount);
+	}
+
+void CChannelMgrCmdData::Close(CPortC32InterfaceBase* aPort)
+/**
+ * Close the port
+ *
+ * @param aPort - Pointer to CPortC32Interface
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrCmdData::Close [aPort=%d]",aPort->GetPortNumber());
+
+	iCount--;
+	if (iCount < 1)
+		{
+		_LOG_L4C1("Last client of port");
+		Disconnect();
+		iCount = 0; // reset counter
+		iChannelReady = EFalse;
+		}
+
+	// remove port from the port list, set next port in the queue to be the port owner
+	TInt index;
+	index = iPortArray.Find(aPort);
+	if (index == KErrNotFound)
+		{
+		_LOG_L1C2("** Close() - Port %d not found **", aPort);
+		}
+	else
+		{
+		iPortArray.Remove(index);
+		if (iPortC32Interface == aPort)
+			{
+			// close the current owner of the channel, set owership to the first one in the port list
+			// if there are one
+			if (iPortArray.Count() > 0)
+				SetOwner(iPortArray[0]);
+			else
+				SetOwner(NULL);
+			}
+		}
+
+	_LOG_L4C2("<<CChannelMgrCmdData::Close [iCount=%d]",iCount);
+	}
+
+void CChannelMgrCmdData::SetOwner(CPortC32InterfaceBase* aPort)
+/**
+ * Set owner to the pointer
+ * @param aPort - Pointer to new owner, which is a CPortC32Interface instance
+ */
+	{
+	_LOG_L4C1(">>CChannelMgrCmdData::SetOwner");
+	
+	if (iPortC32Interface == aPort)
+		return;
+
+	if (iPortC32Interface != NULL)
+		iPortC32Interface->CompleteOutstandingRequest();
+
+	if (aPort == NULL)
+		{
+		iPortC32Interface = aPort;
+		_LOG_L4C1("<<CChannelMgrCmdData::SetOwner aPort was Null");
+		return;
+		}
+
+	TInt index;
+	index = iPortArray.Find(aPort);
+	if (index == KErrNotFound)
+		{
+		_LOG_L1C2("** Port %d not found **", aPort);
+		}
+	else
+		{
+		iPortC32Interface = aPort;
+		}
+
+	_LOG_L4C1("<<CChannelMgrCmdData::SetOwner");
+	}
+
+void CChannelMgrCmdData::SetupCmdChannelsForATCmdsL()
+/**
+ * Set up and prepare the ports for AT commands
+ */
+	{
+	_LOG_L4C1("CChannelMgrCmdData::SetupCmdChannelsForATCmdsL");
+#if defined DSAMPLE || defined H2
+	_LOG_L4C1("Setting up for DSample/H2 (or P2Sample on Wins)");
+#endif
+#ifdef P2SAMPLE
+	_LOG_L4C1("Setting up for P2Sample on TARGET");
+#endif
+
+	TBuf8<20> temp;
+	temp.Copy(KATCmdSetup);
+	iMux0710Protocol.Create0710DataFrames(temp, (TInt8)GetDlcNumber());
+	}
+
+void CChannelMgrCmdData::ProcessRecvUihFrame(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * Process a received UIH frame. Set flow control off if an "ok" is received
+ * and we are still initializing.
+ *
+ * @param aBpFrame - Pointer to the frame received from the baseband
+ */
+	{
+#ifdef _DEBUG
+	// The dlcNum is only needed for logging when _DEBUG is set.
+	// Otherwise we get a warning for ARM v5
+	TInt dlcNum;
+	dlcNum = aBpFrame->GetDlcNum();
+#endif
+
+	if(!iInitFinished)
+		{
+		if (iChannelState != ECsyChannelStateConnected)
+			{
+			_LOG_L4C1("Waiting for AT interpreter");
+			if (aBpFrame->iMsg.Find(KATInitialised) != KErrNotFound)
+				{
+				_LOG_L3C2E("AT interpreter ready [dlcNum=%d]", dlcNum);
+				iChannelState = ECsyChannelStateConnected;
+				// Send initial AT command
+				TRAP_IGNORE(SetupCmdChannelsForATCmdsL());
+				}
+			else
+				{
+				_LOG_L3C2E("Throw away unexpected response dlcNum=%d", dlcNum);
+				}
+			}
+		else
+			{
+			_LOG_L4C1("Waiting for response to initial AT command");
+			if (aBpFrame->iMsg.Find(_L8("OK")) != KErrNotFound)
+				{
+				_LOG_L1C2E("**** Init completed [dlcNum=%d] ****", dlcNum);
+				NotifyChannelReady();
+				ModemAndCsyToClientFlowCtrl(EFlowControlOff);
+				}
+			/*else if (aBpFrame->iMsg.Find(_L8("ERROR")) != KErrNotFound)
+				{
+				_LOG_L1C2E("**** Init completed [dlcNum=%d] ****ERROR****", dlcNum);
+				NotifyChannelReady();
+				ModemAndCsyToClientFlowCtrl(EFlowControlOff);
+				}
+			*/
+			else
+				{
+				_LOG_L3C2E("Throw away unexpected response dlcNum=%d", dlcNum);
+				}
+			}
+		iMux0710Protocol.AddFrameFreeQ(aBpFrame);
+		}
+	else if (iPortC32Interface)
+		{
+		// don't need to add to the mux's queue if we are not defragging messages
+		// simply add to the port object's queue
+		// send frame to client
+		iPortC32Interface->SendFrameToClient(aBpFrame);
+		}
+	else
+		{
+		_LOG_L1C2E("** NULL C32 PORT ** dlcNum=%d", dlcNum);
+		iMux0710Protocol.AddFrameFreeQ(aBpFrame);
+		// MAF __ASSERT_DEBUG(EFalse, PANIC(KPanicIllegalState));
+		}
+	}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/ChannelMgrCtrl.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,356 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  The file contains the implementation for class CChannelMgrCtrl.
+// *               Class CChannelMgrCtrl implements a 3GPP 27.010 control channel (DLC).
+// *               A control channel is used to initialize the multiplexer and to
+// *               create/monitor DLC's.
+//
+
+// ChannelMgrCtrl.cpp
+
+/** @file ChannelMgrCtrl.cpp
+ *
+ * The file contains the implementation for class CChannelMgrCtrl.
+ * Class CChannelMgrCtrl implements a 3GPP 27.010 control channel (DLC).
+ * A control channel is used to initialize the multiplexer and to
+ * create/monitor DLC's.
+ */
+
+#include "ChannelMgrCtrl.h"
+#include "Portfactory.h"
+#include "Mux0710Protocol.h"
+#include "CsyMsgBufBPFrame.h"
+#include "CommFrameWriterAo.h"
+#include "CsyDebugLogger.h"
+#include "ChannelMgrBase.h"
+#include "PortC32InterfaceBase.h"
+#include "PortC32Interface.h"
+#include "ChannelMgrCmdData.h"
+#include "CsyGlobals.h"
+#include "d32comm.h"
+
+CChannelMgrCtrl* CChannelMgrCtrl::NewL(CPortFactory& aPortFactory,
+									   CMux0710Protocol& aMux0710Protocol)
+/**
+ * This methods uses two phase construction and the cleanup stack to create
+ * an instance of class CChannelMgrCtrl.
+ *
+ * @param aPortFactory - Refrence to the port factory
+ * @param aMux0710Protocol - Reference to the Mux 27.010 object
+ * @return Pointer to the created instance
+ */
+    {
+	_LOG_L4C1("CChannelMgrCtrl::NewL");
+
+    CChannelMgrCtrl* p = new(ELeave) CChannelMgrCtrl(aPortFactory, aMux0710Protocol);
+ 	CleanupStack::PushL(p);
+ 	p->ConstructL();
+	CleanupStack::Pop(p);
+ 	return p;
+	}
+
+CChannelMgrCtrl::~CChannelMgrCtrl()
+/**
+ * Destructor. Delete all resources and memory allocated by this object.
+ */
+	{
+	_LOG_L4C1("CChannelMgrCtrl::~CChannelMgrCtrl");
+
+	// Disconnect the DLC Control Channel 
+	Disconnect();
+	}
+
+CChannelMgrCtrl::CChannelMgrCtrl(CPortFactory& aPortFactory,
+								 CMux0710Protocol& aMux0710Protocol)
+: CChannelMgrBase(KCtrlChannelDlcNum, aPortFactory, aMux0710Protocol)
+/**
+ * Constructor.
+ *
+ * @param aPortFactory - Reference to the port factory
+ * @param aMux0710Protocol - Reference to the 27.010 mux protocol
+ */
+ 	{
+	}
+
+void CChannelMgrCtrl::ConstructL()
+/**
+ * This method initializes the memory and data used by this object.
+ */
+	{
+	_LOG_L4C1("CChannelMgrCtrl::ConstructL");
+	CChannelMgrBase::ConstructL();
+	}
+
+void CChannelMgrCtrl::ProcessRecvUihFrame(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method is called to process a UIH frame that was received
+ * on the control channel.  Based on the message type and contents
+ * the channel state machine is updated and a response is issued back
+ * to the baseband.
+ *
+ * @param aBpFrame - Pointer to the frame buffer
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrCtrl::ProcessRecvUihFrame [aBpFrame=0x%x]",
+		aBpFrame);
+
+	// adv option:   address | control | Type   | LengthData | Value(s)
+	// basic option: address | control | length | Type  | LengthData | Value(s)
+
+	TUint8 ctrlTypeField;
+
+#ifdef _27010ADVANCEOPTION
+	ctrlTypeField = KAdvOptionCtrlStart;   // 2
+#else
+	ctrlTypeField = KBasicOptionCtrlStart; // 3
+#endif
+
+	TUint8 frameLength = (TUint8) aBpFrame->iMsg.Length();
+	if (frameLength <= ctrlTypeField)
+		{
+		_LOG_L1C3("** Frame length %d <= minimum ctrl frame length %d **",
+			frameLength,ctrlTypeField);
+		_LOG_L4C1("<<CChannelMgrCtrl::ProcessRecvUihFrame - bad frame");
+		return;
+		}
+
+	TBool confirmBack = ETrue;
+	switch (aBpFrame->iMsg[ctrlTypeField])
+		{
+	case KCsy0710CTLUIH_DlcParamNegotiate:
+		_LOG_L4C1( "DlcParamNegotiate");
+		break;
+	case KCsy0710CTLUIH_DlcParamNegotiateRsp:
+		{
+		_LOG_L3C1("DlcParamNegotiate response");
+		confirmBack = EFalse; // No response to send back
+
+		// The position of the values field in the ctrl data
+		TUint8 firstValueFieldIndex  =
+			(TUint8) (ctrlTypeField + KPositionOfValueFieldInCtrlData);
+
+		if (frameLength > firstValueFieldIndex)
+			{
+			const TAny* msgValue =
+				reinterpret_cast<const TAny*> (&(aBpFrame->iMsg.Ptr()[firstValueFieldIndex]));
+
+			typedef struct TPnMsgValue
+				{
+				TUint8 iDlci:6;
+				TUint8 iRes1:2;
+				TUint8 iFrameType:4;
+				TUint8 iCreditFlow:4;
+				TUint8 iPrior:6;
+				TUint8 iRes2:2;
+				TUint8 iAckTimer;
+				TUint16 iFrameSize;
+				TUint8 iMaxNbrofRetrans;
+				TUint8 iCredits;
+				} TPnMsgValue;
+
+			const TPnMsgValue* pnMsgValue =
+				reinterpret_cast<const TPnMsgValue*> (msgValue);
+
+			// now we should be able to use pnMsgValue.iDlci, etc
+			if ((pnMsgValue->iDlci            == iMux0710Protocol.PreviousNegotiateDlcNum())  &&
+				(pnMsgValue->iFrameType       == KPNFrameType)          &&
+				(pnMsgValue->iCreditFlow      == KPNClBits)             &&
+				(pnMsgValue->iPrior           == KPNDlcPriority)        &&
+				(pnMsgValue->iAckTimer        == KPNAckTimer)           &&
+				(pnMsgValue->iFrameSize       == KPNMaxFrameSize)       &&
+				(pnMsgValue->iMaxNbrofRetrans == KPNMaxRetransmissions) &&
+				(pnMsgValue->iCredits         == KPNWindowSize))
+				{
+				_LOG_L3C1("ParamNegotiate passed");
+
+				TUint8 dlcNum = pnMsgValue->iDlci;
+				iPortFactory.ConnectIpNifPort(dlcNum);
+				}
+			else
+				{
+				// MAF If this fails try again or forget trying PN.
+				_LOG_L3C1("ParamNegotiate Failed");
+				}
+			}
+		else
+			{
+			_LOG_L1C3("** Frame length %d <= first ctrl value %d **",
+				frameLength,firstValueFieldIndex);
+			}
+		}
+		break;
+	case KCsy0710CTLUIH_PowerSaveCtl:
+		_LOG_L3C1("PowerSaveCtrl");
+		break;
+	case KCsy0710CTLUIH_MultCloseDown:
+		_LOG_L3C1("MultCloseDown");
+		break;
+	case KCsy0710CTLUIH_TestCmd:
+		_LOG_L3C1("TestCmd");
+		break;
+	case KCsy0710CTLUIH_FlowControlOn:
+		_LOG_L3C1("FlowControlOn");
+		break;
+	case KCsy0710CTLUIH_FlowControlOff:
+		_LOG_L3C1("FlowControlOff");
+		break;
+	case KCsy0710CTLUIH_ModemStatusRsp:
+		{
+		_LOG_L3C1("MSC response");
+		confirmBack = EFalse; // No response to send back
+
+		// From 27.010
+		// RTC	DTR	108/2	DSR	107
+		// RTR	RFR (note)	133	CTS	106
+		// IC	always 0-	-	RI	125
+		// DV	always 1-	-	DCD	109
+		// NOTE	Circuit 133, RFR (Ready for Receiving) is commonly assigned to the connector pin that is alternatively used for circuit 105, RTS. It is sometimes referred to by that name.
+
+		// The position of the values field in the ctrl data
+		TUint8 firstValueFieldIndex  =
+			(TUint8) (ctrlTypeField + KPositionOfValueFieldInCtrlData);
+		TUint8 secondValueIndex = (TUint8) (firstValueFieldIndex + 1);
+
+		if (frameLength > secondValueIndex)
+			{
+			TUint8 dlcNum = (TUint8) (((TUint8) aBpFrame->iMsg[firstValueFieldIndex]) >> 2); // remove EA and CR
+			_LOG_L4C2("dlcNum=%d", dlcNum);
+
+			TUint8 v24signals = (TUint8) aBpFrame->iMsg[secondValueIndex];
+			_LOG_L4C2("V24 Signals=0x%x", v24signals);
+
+			if (dlcNum)
+				{
+				_LOG_L3C1("For a data DLC");
+				CChannelMgrCmdData* channel = iPortFactory.FindChannelMgrByDlcNum(dlcNum);
+				channel->MscReceived(v24signals);
+				}
+			else
+				MscReceived(v24signals);
+			}
+		else
+			{
+			_LOG_L1C3("** Frame length %d <= second ctrl value %d **",
+				frameLength,secondValueIndex);
+			}
+		}
+		break;
+	case KCsy0710CTLUIH_ModemStatusCmd:
+		{
+		// The modem side has informed us of its state
+		_LOG_L3C1("MSC command");
+
+		// The position of the values field in the ctrl data
+		TUint8 firstValueFieldIndex  =
+			(TUint8) (ctrlTypeField + KPositionOfValueFieldInCtrlData);
+
+		TUint8 secondValueIndex = (TUint8) (firstValueFieldIndex + 1);
+
+		if (frameLength > secondValueIndex)
+			{
+			TUint8 dlcNum = (TUint8) (((TUint8) aBpFrame->iMsg[firstValueFieldIndex]) >> 2); // remove EA and CR
+			_LOG_L4C2("dlcNum=%d", dlcNum);
+
+			TUint8 v24signals = (TUint8) aBpFrame->iMsg[secondValueIndex];
+			_LOG_L4C2("V24 Signals=0x%x", v24signals);
+
+			if (dlcNum)
+				{
+				_LOG_L3C1( "For a data DLC");
+				CChannelMgrCmdData* channel = iPortFactory.FindChannelMgrByDlcNum(dlcNum);
+				channel->ReceivedV24Signals(v24signals);
+				}
+			else
+				{
+				_LOG_L3C1( "FC & v24 signals ignored for Ctrl Channel");
+				}
+			}
+		else
+			{
+			_LOG_L1C3("** Frame length %d <= second ctrl value %d **",
+				frameLength,secondValueIndex);
+			confirmBack = EFalse;
+			}
+		}
+		break;
+	case KCsy0710CTLUIH_NonSupportedCmdResp:
+		confirmBack = EFalse;
+		_LOG_L3C1("NonSupportedCmdResp");
+		break;
+	case KCsy0710CTLUIH_RemotePortNegotiate:
+		_LOG_L3C1("RemotePortNegotiate");
+		break;
+	case KCsy0710CTLUIH_RemoteLineStatus:
+		_LOG_L3C1("RemoteLineStatus");
+		break;
+	case KCsy0710CTLUIH_ServiceNegotiate:
+		_LOG_L3C1("ServiceNegotiate");
+		break;
+	default:
+		_LOG_L1C2("** Unknown ctrltype 0x%02x **", aBpFrame->iMsg[ctrlTypeField]);
+		break;
+		}
+
+	if (confirmBack)
+		{
+		_LOG_L3C1( "Send a response ...");
+		ConfirmCtrlFrame(aBpFrame);
+		// MAF what if send of response fails
+		}
+	else
+		{
+		iMux0710Protocol.AddFrameFreeQ(aBpFrame);
+		}
+
+	_LOG_L4C1("<<CChannelMgrCtrl::ProcessRecvUihFrame");
+	}
+
+void CChannelMgrCtrl::ConfirmCtrlFrame(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method initializes the control channel.
+ * @param a pointer to the Frame
+ */
+	{
+	_LOG_L4C2(">>CChannelMgrCtrl::ConfirmCtrlFrame [aBpFrame=0x%x]",
+		aBpFrame);
+
+	// echo the UIH frame back to the BP, except clear the C/R bit (bit 1)
+    // the checksum is unchanged
+	// we must also insert a start flag and end flag
+	TBuf8<4> flag;
+	flag.SetLength(1);
+	flag[0] = KCsy0710StartEndFlag;
+	aBpFrame->iMsg.Insert(0, flag);
+	TInt length = aBpFrame->iMsg.Length();
+	aBpFrame->iMsg.SetLength(length + 1);
+	aBpFrame->iMsg[length] = KCsy0710StartEndFlag;
+
+	// clear the C/R bit in the msg type field, not the frame type field
+#ifdef _27010ADVANCEOPTION
+	aBpFrame->iMsg[3] &= ~KCsy0710CRBit;
+#else
+	aBpFrame->iMsg[4] &= ~KCsy0710CRBit;
+#endif
+
+	// put the frame at the front of the baseband's queue
+	aBpFrame->CompleteWhenSent() = ETrue;
+	TInt ret = iPortFactory.GetCommWriterAo()->Write(aBpFrame, ETrue);
+	if (ret)
+		{
+		// MAF what to do here
+		_LOG_L1C2("** Failed to send response [ret=%d] **",ret);
+		}
+
+	_LOG_L4C1("<<CChannelMgrCtrl::ConfirmCtrlFrame");
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/CommFrameReaderAo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,594 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for class CCommFrameReaderAo.
+// *               Class CCommFrameReaderAo is used to request a read from the serial port LDD.
+// *               Class CommFrameReaderAo is an active object and is run by the active
+// *               scheduler when the LDD has completed the read request.
+//
+
+// CommFrameReaderAo.cpp
+
+/** @file CommFrameReaderAo.cpp
+ *
+ * The file contains the implementation for class CCommFrameReaderAo.
+ * Class CCommFrameReaderAo is used to request a read from the serial port LDD.
+ * Class CommFrameReaderAo is an active object and is run by the active
+ * scheduler when the LDD has completed the read request
+ */
+
+// Need to add code to package together a frame and then send the
+// complete frame to the Mux object for defragmentation into a client msg.
+
+#include "CommFrameReaderAo.h"
+#include "Portfactory.h"
+#include "CsyMsgBufBPFrame.h"
+#include "Mux0710Protocol.h"
+#include "CsyDebugLogger.h"
+#include "ChannelMgrCtrl.h"
+#include "ChannelMgrCmdData.h"
+
+CCommFrameReaderAo* CCommFrameReaderAo::NewL(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol)
+/**
+ * This methods uses two phase construction and the cleanup stack to create
+ * an instance of class CCommFrameReaderAo.
+ * @param aParent - Pointer to parent
+ * @param aMux0710Protocol - Pointer to Mux 27.010 object
+ * @return Pointer to the created instance
+ */
+	{
+	_LOG_L4C1("CCommFrameReaderAo::NewL");
+
+	CCommFrameReaderAo* c = new (ELeave) CCommFrameReaderAo(aParent, aMux0710Protocol);
+	CleanupStack::PushL(c);
+	c->ConstructL();
+	CleanupStack::Pop();
+	return c;
+	}
+
+CCommFrameReaderAo::~CCommFrameReaderAo()
+/**
+ * Destructor. Cancel any outstanding request.
+ */
+	{
+	_LOG_L4C1("CCommFrameReaderAo::~CCommFrameReaderAo");
+	Cancel();
+	}
+
+CCommFrameReaderAo::CCommFrameReaderAo(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol)
+/**
+ * Constructor.  Pass priority of active object to base class.
+ * @param aParent - Pointer to parent
+ * @param aMux0710Protocol - Pointer to Mux 27.010 object
+ */
+: CCommReadWriteBaseAo(aParent, aMux0710Protocol, KFrameReaderAoPriority),
+  iFrameReaderState(ECsyWaitingForStartFlag)
+	{
+	}
+
+void CCommFrameReaderAo::ConstructL()
+/**
+ * Retrieve a pointer to the LDD comm port.
+ */
+    {
+	_LOG_L4C1("CCommFrameReaderAo::ConstructL");
+	SetBuffersL();
+	}
+
+void CCommFrameReaderAo::DoCancel()
+/**
+ * Cancel an outstanding request.
+ * @param void
+ */
+	{
+	_LOG_L4C1("CCommFrameReaderAo::DoCancel");
+
+	iCommPort->ReadCancel();
+	}
+
+void CCommFrameReaderAo::BasicOption()
+/**
+ * Basic option frames
+ * Note this has not been tested since DSample/P2 do not use basic option
+ */
+	{
+	TUint octet;
+	TBool frameData = EFalse;
+
+	TInt len = iBuf->Length();
+	TPtr8 ptr = iBuffer->Des();
+	_LOG_L3C2("Received %d bytes",len);
+
+	for (TInt loop = 0; loop < len; loop++)
+		{
+		octet = ptr[loop];
+
+		if (octet == KCsy0710StartEndFlag)
+			{
+			// Control bit
+			switch(iFrameReaderState)
+				{
+			case ECsyWaitingForStartFlag:
+				{
+				_LOG_L3C2("[0x%02x] Got start flag",octet);
+				iFrameReaderState = ECsyWaitingForFrameStart;
+
+				if (iFrameBuf == NULL)
+					{
+					// There is data to process - get a new frame
+					iFrameBuf = iMux0710Protocol->GetFreeFrameBuf();
+					if (iFrameBuf == NULL)
+						{
+						_LOG_L1C1("** No free frame buffer ** - ignoring frame");
+						break;
+						}
+					}
+				}
+				break;
+			case ECsyWaitingForFrameStart:
+				{
+				// disregard additional flag
+				}
+				break;
+			case ECsyWaitingForFrameData:
+				{
+				iFrameReaderState = ECsyWaitingForStartFlag;
+
+				// must be the end flag
+				_LOG_L3C2("[0x%02x] End of frame",octet);
+				if (iFrameBuf)
+					{
+					if(iFrameBuf->iMsg.Length())
+						{
+						// Frame holds something
+						AddToReceivedFramesList(iFrameBuf);
+						iFrameBuf = NULL;
+						}
+					else
+						{
+						_LOG_L1C1("** zero length frame **");
+						// MAF __ASSERT_DEBUG(EFalse, PANIC(KPanicIllegalState));
+						}
+					}
+				else
+					{
+					_LOG_L3C1("** no frame buffer! **");
+					}
+				}
+				break;
+			default:
+				// MAF __ASSERT_DEBUG(EFalse, PANIC(KPanicIllegalState));
+				_LOG_L1C2("** unexpected flag ** [iFrameReaderState=%d]",iFrameReaderState);
+				break;
+				}
+			}
+		else
+			{
+			if (iFrameReaderState == ECsyWaitingForFrameStart)
+				{
+				iFrameReaderState = ECsyWaitingForFrameData;
+				iFrameBuf->iMsg.Append(octet);
+				
+				#ifdef _DEBUG
+				// This variable should only be set if it debug
+				// Otherwise we get warnings when compiling with ARM v5
+				TUint dlcNum = octet >> 2;
+				#endif
+
+				_LOG_L3C3E("[0x%02x] dlcNum=%d", octet, dlcNum);
+				}
+			else
+				{
+				_LOG_L3C2("[0x%02x]",octet);
+				frameData = ETrue;
+				}
+			}
+
+		if (frameData)
+			{
+			// MAF __ASSERT_DEBUG((iFrameReaderState == ECsyWaitingForFrameData),PANIC(KPanicIllegalState));
+
+			TUint frameLen = (TUint) (iFrameBuf->iMsg.Length() + 1);
+			if (frameLen > KMaxAdvFrameSize)
+				{
+				_LOG_L1C3("** length %d will exceed max length %d **",
+					frameLen,KMaxFrameSize);
+				iFrameBuf->iMsg.Zero();		
+				iFrameReaderState = ECsyWaitingForStartFlag;
+				break;
+				}
+
+			frameData = EFalse;
+			iFrameBuf->iMsg.Append(octet);
+			}
+		}
+	}
+
+void CCommFrameReaderAo::AdvancedOption()
+/**
+ * Advanced option frames
+ */
+	{
+	TUint octet = 0;
+	TBool frameData = EFalse;
+
+	TInt len = iBuf->Length();
+	TPtr8 ptr = iBuffer->Des();
+	_LOG_L3C2("Received %d bytes",len);
+
+	TInt startVal = 0;
+
+	// Check processing (helps when we have lost sync with data due to read error)
+	if ((iFrameReaderState == ECsyWaitingForStartFlag)&&(len))
+		{
+		// We are on the hunt for the start flag
+		if (iESCRecved)
+			{
+			_LOG_L2C1("Escape flag set - ignore first octet");
+			iESCRecved = EFalse;
+			}
+		else
+			octet = ptr[0];
+
+		if (octet != KCsy0710StartEndFlag)
+			{
+			_LOG_L3C2("[0x%02x]",octet);
+			_LOG_L2C1("* Looking for the start flag *");
+			do
+				{
+				startVal++;
+				if (startVal == len)
+					break;
+
+				octet = ptr[startVal];
+
+				if (iESCRecved)
+					{
+					iESCRecved = EFalse;
+					continue;
+					}
+
+				if (octet == KCsy0710EscapeByte)
+					iESCRecved = ETrue;
+				}
+			while (octet != KCsy0710StartEndFlag);
+
+			_LOG_L2C2("Disregarded %d bytes",startVal);
+			}
+		}
+
+	// Do processing of the received buffer
+	for (TInt loop = startVal; loop < len; loop++)
+		{
+		octet = ptr[loop];
+
+		if (iESCRecved)
+			{
+			_LOG_L3C2("[0x%02x] - Recv ESC before, change this char",octet);
+			octet = (TUint8) (octet^(1<<5));
+			_LOG_L3C2("Changed to [0x%02x]",octet);
+			iESCRecved = EFalse;
+			frameData = ETrue;
+			}
+		else
+			{
+			if (octet == KCsy0710EscapeByte)
+				{
+				_LOG_L3C1("KCsy0710EscapeByte");
+				iESCRecved = ETrue;
+				}
+			else if (octet == KCsy0710StartEndFlag)
+				{
+				// Control bit
+				switch(iFrameReaderState)
+					{
+				case ECsyWaitingForFrameData:
+					{
+					iFrameReaderState = ECsyWaitingForStartFlag;
+					
+					if (iFrameBuf)
+						{
+						TInt frameLen = iFrameBuf->iMsg.Length();
+						if(frameLen > KAdvOptionHeaderSize)
+							{
+							TUint8 checkSum = iFrameBuf->iMsg[frameLen-1];
+							if (CheckFCS(iFrameBuf->iMsg,KAdvOptionHeaderSize,checkSum))
+								{
+								// must be the end flag
+								_LOG_L3C2("[0x%02x] End of frame",octet);
+								// Frame holds something
+								AddToReceivedFramesList(iFrameBuf);
+								iFrameBuf = NULL;
+								}
+							else
+								{
+								_LOG_L1C1("** checksum is incorrect - rejecting frame **");
+								iFrameBuf->iMsg.Zero();		
+								}
+							}
+						else
+							{
+							_LOG_L1C2("** Rejected incorrect length frame %d **",frameLen);
+							iFrameBuf->iMsg.Zero();		
+							}
+						}
+					else
+						{
+						_LOG_L3C1("** no frame buffer! **");
+						}
+
+					TInt check = loop+1;
+					if (check == len)
+						break;
+
+					// There are more bytes in this buffer to process
+					octet = ptr[check];
+					if (octet != KCsy0710StartEndFlag)
+						{
+						// Frames are back to back
+						_LOG_L2C1("* No start flag - assuming frames back to back *");
+						octet = KCsy0710StartEndFlag;
+						}
+					}
+					// deliberate fall through
+				case ECsyWaitingForStartFlag:
+					{
+					_LOG_L3C2("[0x%02x] Got start flag",octet);
+					iFrameReaderState = ECsyWaitingForFrameStart;
+
+					if (iFrameBuf == NULL)
+						{
+						// There is data to process - get a new frame
+						iFrameBuf = iMux0710Protocol->GetFreeFrameBuf();
+						if (iFrameBuf == NULL)
+							{
+							_LOG_L1C1("** No free frame buffer ** - ignoring frame");
+							// Note: GetFreeFrameBuf handles the flow control
+							break;
+							}
+						}
+					}
+					break;
+				case ECsyWaitingForFrameStart:
+					{
+					// disregard additional flag
+					}
+					break;
+				default:
+					_LOG_L1C2("** unexpected flag ** [iFrameReaderState=%d]",iFrameReaderState);
+					// MAF __ASSERT_DEBUG(EFalse, PANIC(KPanicIllegalState));
+					break;
+					}
+				}
+			else
+				{
+				if (iFrameReaderState == ECsyWaitingForFrameStart)
+					iFrameReaderState = ECsyWaitingForFrameData;
+
+				_LOG_L3C2("[0x%02x]",octet);
+				frameData = ETrue;
+				}
+			}
+
+		if (frameData)
+			{
+			frameData = EFalse;
+
+			// MAF __ASSERT_DEBUG((iFrameReaderState == ECsyWaitingForFrameData),PANIC(KPanicIllegalState));
+
+			if (iFrameBuf)
+				{
+				TUint frameLen = (TUint) (iFrameBuf->iMsg.Length() + 1);
+				if (frameLen > KMaxAdvFrameSize)
+					{
+					_LOG_L1C2("** length will exceed max length %d **",
+						KMaxFrameSize);
+					iFrameBuf->iMsg.Zero();		
+					iFrameReaderState = ECsyWaitingForStartFlag;
+					break;
+					}
+
+				iFrameBuf->iMsg.Append(octet);
+				}
+			else
+				{
+				// it should not be possible to enter this condition
+
+				_LOG_L1C2("** No frame buffer allocated for frame ** [iFrameReaderState=%d]",iFrameReaderState);
+				// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState));
+				}
+			}
+		}
+	}
+
+void CCommFrameReaderAo::NonMuxed()
+	{
+	if (iMux0710Protocol->ParseATResponse(*iBuf) == KErrNone)
+		{
+		iFrameReaderState = ECsyWaitingForStartFlag;
+		_LOG_L3C1("ParseATResponse returned KErrNone");
+		}
+	}
+
+void CCommFrameReaderAo::RunL()
+/**
+ * This method is invoked by the active scheduler when the read request
+ * to the LDD has completed.
+ */
+    {
+	if (iStatus.Int())
+		{
+		_LOG_L3C1(" "); // please leave separator in
+		_LOG_L1C2("** CCommFrameReaderAo::RunL [iStatus %d] **",iStatus.Int());
+
+		// assumption here, whatever the error we will be able to repost
+		// another request to readoneormore from the serial device driver.
+
+		if (iFrameBuf)
+			{
+			iMux0710Protocol->AddFrameFreeQ(iFrameBuf);
+			iFrameBuf = NULL;
+			}
+
+		//reset state
+		iESCRecved = EFalse;
+		iFrameReaderState = ECsyWaitingForStartFlag;
+
+		iStatus = KRequestPending;
+ 		SetActive();
+		iCommPort->ReadOneOrMore(iStatus, *iBuf);
+		return;
+		}
+
+	if (iFrameBuf == NULL)
+		{
+		// Only show this log if start of a new frame
+		_LOG_L3C1(" "); // please leave separator in
+		_LOG_L3C1("CCommFrameReaderAo::RunL - start of read");
+		}
+
+	if (!iMux0710Protocol->IsMuxModeEnabled())
+		{
+		NonMuxed();
+		}
+	else
+		{
+		// mux mode is enabled
+		// process recv data according to our current state
+
+#ifndef _27010ADVANCEOPTION
+
+		BasicOption();
+
+#else
+		AdvancedOption();
+
+#endif
+		}
+
+	if (!IsActive())
+		{
+		iStatus = KRequestPending;
+ 		SetActive();
+		iCommPort->ReadOneOrMore(iStatus, *iBuf);
+		}
+	}
+
+void CCommFrameReaderAo::Read()
+/**
+ * This method is called to start the process to read an ascii string
+ * (e.g. response to initial AT+CMUX=0,0,5 command) or a frame from 
+ * the serial port LDD. 
+ * Note that this method will only be called once and then the RunL
+ * will handle the reading of the comm port.
+ */
+	{
+	_LOG_L4C1(">>CCommFrameReaderAo::Read");
+
+	if (!IsActive())
+		{
+		_LOG_L3C1("Read not active");
+
+		// Set the object active
+		iStatus = KRequestPending;
+ 		SetActive();
+		iCommPort->ReadOneOrMore(iStatus, *iBuf);
+		}
+	else
+		{
+		_LOG_L2C1("** Already active **");
+		}
+
+	_LOG_L4C1("<<CCommFrameReaderAo::Read");
+    }
+
+void CCommFrameReaderAo::ReadCancel()
+/**
+ * Cancel a read request.
+ */
+	{
+	_LOG_L4C1(">>CCommFrameReaderAo::ReadCancel");
+
+	iCommPort->ReadCancel();
+	if (iFrameBuf)
+		{
+		// return buffer to free frame queue
+		iMux0710Protocol->AddFrameFreeQ(iFrameBuf);
+		iFrameBuf = NULL;
+		}
+
+	_LOG_L4C1("<<CCommFrameReaderAo::ReadCancel");
+	}
+
+TBool CCommFrameReaderAo::CheckFCS(TDes8& aBuffer, TInt aLen, TUint8 aSuppliedChecksum)
+/**
+ * This method checks the checksum for the specified buffer with the 
+ * specified length.
+ *
+ * @param aBuffer - Data 
+ * @param aLen    - Number of bytes in the Buffer for which CheckSum to be calculated
+ * @return ETrue if checksum is okay
+ */
+	{
+	TUint8 frameCheckSum = 0xFF;
+
+	for (TInt i=0; i < aLen; i++)
+		{
+		frameCheckSum = crctable[(frameCheckSum ^ aBuffer[i])];
+		}
+
+	// One's Complement
+	frameCheckSum = crctable[(frameCheckSum ^ aSuppliedChecksum)];
+
+	if (frameCheckSum == 0xCF)
+		return ETrue;
+
+	return EFalse;
+	}
+
+void CCommFrameReaderAo::AddToReceivedFramesList(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method is called by the comm frame reader to add the specified
+ * received frame to a c32 port interface queue. The specific C32 port 
+ * interface object is determined from the DLC number embedded in the frame.
+ *
+ * @param aBpFrame - Pointer to the received frame
+ */
+	{
+	_LOG_L4C1(">>CCommFrameReaderAo::AddToReceivedFramesList");
+
+	TUint8 dlcNum = aBpFrame->GetDlcNum();
+
+	_LOG_L4C2("dlcNum=%d", dlcNum);
+	_LOG_L4C2("frameType=0x%x", aBpFrame->GetFrameType());
+
+	// check for a message for the control channel
+	if (dlcNum == 0)
+		{
+		iParent->GetControlChannel()->ProcessRecvFrame(aBpFrame);
+		}
+	else
+		{
+		CChannelMgrCmdData* channel = iParent->FindChannelMgrByDlcNum(dlcNum);
+		if (channel != NULL)
+			channel->ProcessRecvFrame(aBpFrame);
+		else
+			{
+			_LOG_L1C2("** No port defined for dlcNum=%d **", dlcNum);
+			iMux0710Protocol->AddFrameFreeQ(aBpFrame);
+			}
+		}
+
+	_LOG_L4C1("<<CCommFrameReaderAo::AddToReceivedFramesList");
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/CommFrameWriterAo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,518 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implemenation for the CCommFrameWriterAo class.
+// *               This class is used to handle the write operations to the serial port
+// *               logical device driver.
+//
+
+// CommFrameWriterAo.cpp
+
+/** @file CommFrameWriterAo.cpp
+ *
+ * This file contains the implemenation for the CCommFrameWriterAo class.
+ * This class is used to handle the write operations to the serial port
+ * logical device driver.
+ */
+
+#include "CommFrameWriterAo.h"
+#include "CsyMsgBufBPFrame.h"
+#include "Mux0710Protocol.h"
+#include "CsyDebugLogger.h"
+#include "PortC32InterfaceBase.h"
+
+CCommFrameWriterAo* CCommFrameWriterAo::NewL(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol)
+/**
+ * This method uses two phase construction and the cleanup stack to
+ * create an instance of class CCommFrameWriterAo. 
+ *
+ * @param aParent - Pointer to the parent object
+ * @param aMux0710Protocol - Pointer to mux protocol object
+ * @return Pointer to new instance of CCommFrameWriterAo
+ */
+    {
+	_LOG_L4C1("CCommFrameWriterAo::NewL");
+
+    CCommFrameWriterAo* obj = new (ELeave) CCommFrameWriterAo(aParent, aMux0710Protocol);
+    CleanupStack::PushL(obj);
+    obj->ConstructL();
+    CleanupStack::Pop();
+    return (obj);
+    }
+
+
+CCommFrameWriterAo::~CCommFrameWriterAo()
+/**
+ * Destructor.
+ */
+    {
+	_LOG_L4C1("CCommFrameWriterAo::~CCommFrameWriterAo");
+
+    Cancel();
+
+ 	// Remove the frames in Write Buf List
+	CCsyMsgBufBpFrame* frame;
+	iWriteFrameBufIter.SetToFirst();
+	while ((frame = iWriteFrameBufIter++) != NULL)
+		{
+		iWriteFrameBufList.Remove(*frame);
+		delete frame;
+	 	}
+
+ 	// Remove the frames in waiting list
+	iWaitingForFcOffIter.SetToFirst();
+	while ((frame = iWaitingForFcOffIter++) != NULL)
+		{
+		iWaitingForFcOffList.Remove(*frame);
+		delete frame;
+	 	}
+   }
+
+CCommFrameWriterAo::CCommFrameWriterAo(CPortFactory* aParent, CMux0710Protocol* aMux0710Protocol)
+/**
+ * Constructor.
+ * @param aParent - Pointer to the parent object
+ * @param aMux0710Protocol - Pointer to mux protocol object
+ */
+:	CCommReadWriteBaseAo(aParent, aMux0710Protocol, KFrameWriterAoPriority),
+	iWriteFrameBufList(_FOFF(CCsyMsgBufBpFrame, iMsgLink)),
+	iWriteFrameBufIter(iWriteFrameBufList),
+	iWaitingForFcOffList(_FOFF(CCsyMsgBufBpFrame, iMsgLink)),
+	iWaitingForFcOffIter(iWaitingForFcOffList)
+	{}
+
+
+void CCommFrameWriterAo::ConstructL()
+/**
+ * Safe constructor
+ */
+    {
+	_LOG_L4C1("CCommFrameWriterAo::ConstructL");
+	SetBuffersL();
+    }
+
+void CCommFrameWriterAo::RunL()
+/**
+ * This method is called when a write to the LDD completes.
+ */
+	{
+	_LOG_L4C1(" ");
+	_LOG_L4C2(">>CCommFrameWriterAo::RunL [iStatus=%d] - written to LDD",
+		iStatus.Int());
+
+	if (iStatus.Int())
+		{
+		_LOG_L1C2("** Error writing to LDD ** [iStatus=%d]",iStatus.Int());
+
+		if (!iCompleteWhenSent)
+			{
+			// The frame being sent was not the last or only one for this dlc, other
+			// frames exist
+
+			// go through list and remove other frames to send for this dlc
+			RemoveAnyDlcFramesOnWriteList(iDlcNum, EFalse);
+
+			iCompleteWhenSent = ETrue;
+			}
+		}
+
+	if (iCompleteWhenSent)
+		{
+		iCompleteWhenSent = EFalse;
+
+		_LOG_L3C2("Complete write [iDlcNum=%d]",iDlcNum);
+		CompleteWrite(iDlcNum,iStatus.Int());
+		}
+
+	// check for another message that needs to be sent to the baseband
+	CCsyMsgBufBpFrame* bpFrame = GetFrameToWrite();
+	if (bpFrame)
+		{
+		TInt ret = KErrNone;
+		do
+			{
+			ret = WriteFrame(bpFrame);
+			if (ret)
+				{
+				_LOG_L1C2("** Write frame failed [ret=%d] **",ret);
+				if (!iCompleteWhenSent)
+					{
+					// go through list and remove other frames to send for this dlc
+					RemoveAnyDlcFramesOnWriteList(iDlcNum, EFalse);
+					}
+				}
+
+			// Loop around if there is an error and try and send the next frame
+			}
+			while (ret);
+		}
+	else
+		{
+		_LOG_L3C1("Finished all writes - nothing more to send to LDD");
+		}
+
+	_LOG_L4C1("<<CCommFrameWriterAo::RunL");
+	_LOG_L3C1(" "); // please leave this separator in
+	}
+
+void CCommFrameWriterAo::DoCancel()
+/**
+ * Cancel a pending write
+ */
+    {
+	_LOG_L4C1("CCommFrameWriterAo::DoCancel - cancelling LDD write");
+
+	iCommPort->WriteCancel();
+
+ 	// Remove the frames in Write Buf List
+	CCsyMsgBufBpFrame* frame;
+	iWriteFrameBufIter.SetToFirst();
+	while ((frame = iWriteFrameBufIter++) != NULL)
+		{
+		iWriteFrameBufList.Remove(*frame);
+		iMux0710Protocol->AddFrameFreeQ(frame);
+	 	}
+
+ 	// Remove the frames in waiting list
+	iWaitingForFcOffIter.SetToFirst();
+	while ((frame = iWaitingForFcOffIter++) != NULL)
+		{
+		iWaitingForFcOffList.Remove(*frame);
+		iMux0710Protocol->AddFrameFreeQ(frame);
+	 	}
+    }
+
+TInt CCommFrameWriterAo::Write(CCsyMsgBufBpFrame* aBpFrame,
+							   TBool aHighPriority)
+/**
+ * This method is called to transmit a frame to the baseband.
+ *
+ * @param aBpFrame - Pointer to frame
+ * @param aHighPriority - Flag to indicate a high priority frame
+ */
+    {
+	_LOG_L4C3(">>CCommFrameWriterAo::Write [aBpFrame=0x%x, aHighPriority=%d]",
+		aBpFrame,aHighPriority);
+
+	TInt ret = KErrNone;
+
+	// 1st check if we are already transmitting a frame
+	if (!IsActive())
+		{
+		_LOG_L4C1("Not currently writing a frame");
+		ret = WriteFrame(aBpFrame);
+		}
+	else
+		{
+		// add frame to the list of frames that need to be sent to the BP
+		_LOG_L2C1("Already writing a frame - add to queue");
+		AddToWaitingToSendList(aBpFrame, aHighPriority);
+		}
+
+	_LOG_L4C2("<<CCommFrameWriterAo::Write [ret=%d]",ret);
+	return ret;
+	}
+
+TInt CCommFrameWriterAo::WriteFrame(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method is called to transmit a frame to the baseband.
+ *
+ * @param aBpFrame - Pointer to frame
+ */
+    {
+	_LOG_L4C2(">>CCommFrameWriterAo::WriteFrame [aBpFrame=0x%x]",
+		aBpFrame);
+
+	TInt ret = KErrNone;
+
+	iDlcNum = aBpFrame->MsgDlc();
+	iCompleteWhenSent = aBpFrame->CompleteWhenSent();
+
+	if (iBuf == NULL)
+		{
+		_LOG_L1C1("** Failure to alloc iBuf **");
+
+		ret = KErrNoMemory;
+		_LOG_L4C2("<<CCommFrameWriterAo::WriteFrame [ret=%d]",ret);
+		return ret;
+		}
+
+//*********************************************************
+// MAF tidy up
+#ifdef _DEBUG
+	//log out frame
+	TInt len = aBpFrame->iMsg.Length();
+	_LOG_L3C3("[0x%02x] Tx Got Start dlc=%d", aBpFrame->iMsg[0], aBpFrame->MsgDlc());
+	for(TInt k = 1; k < len-1; k++)
+		{
+		_LOG_L3C2("[0x%02x]",aBpFrame->iMsg[k]);
+		}
+	_LOG_L3C2("[0x%02x] Tx Frame End", aBpFrame->iMsg[len-1]);
+	if (iMux0710Protocol->IsMuxModeEnabled())
+		{
+		if ((aBpFrame->iMsg[2] & 0xEF) == KCsy0710CTLUIH)
+			{
+#ifdef __DEBUGLOGFILE__
+			TBuf8<200> tt;
+#else
+			TBuf16<200> tt;
+#endif
+			tt.Copy(aBpFrame->iMsg);
+
+			TInt ttLength = tt.Length();
+			tt.SetLength(ttLength);
+#ifdef __LOGDEBUGLEVELMINOR__
+			_LOG_L3C3("Sent >>>> %d: %S", aBpFrame->iMsg[1] >> 2, &tt);
+#endif
+			}
+		}
+#endif
+//*********************************************************
+
+	// copy message to local buffer
+#ifdef _27010ADVANCEOPTION
+
+	if (iMux0710Protocol->IsMuxModeEnabled())
+		{
+		TInt length = aBpFrame->iMsg.Length() - 1;
+		TUint8 mask = 1<<5;
+
+		iBuf->Zero();
+
+		 // start flag
+		iBuf->Append(aBpFrame->iMsg[0]);
+
+		// check data for flag or escape character
+		for (TInt i=1; i < length; i++)
+			{
+			TUint8 tmp = aBpFrame->iMsg[i];
+			if ((tmp == KCsy0710StartEndFlag)||(tmp== KCsy0710EscapeByte))
+				{
+				_LOG_L3C1("Adding escape byte");
+				iBuf->Append(KCsy0710EscapeByte);
+				tmp = (TUint8) (tmp^mask);
+				}
+			iBuf->Append(tmp);
+			}
+
+		//ending flag
+		iBuf->Append(aBpFrame->iMsg[length]);  
+		}
+	else
+		iBuf->Copy(aBpFrame->iMsg);
+
+#else
+
+	// Basic option - no escape chars
+	iBuf->Copy(aBpFrame->iMsg);
+
+#endif
+
+	// free the caller's frame buffer
+	iMux0710Protocol->AddFrameFreeQ(aBpFrame);
+
+	// invoke LDD
+	_LOG_L3C1("Sending to LDD");
+	iStatus = KRequestPending; //MAF why is this being set to KRequestPending?
+ 	SetActive();
+	iCommPort->Write(iStatus, *iBuf, iBuf->Length());
+
+	_LOG_L4C2("<<CCommFrameWriterAo::WriteFrame [ret=%d]",ret);
+	return ret;
+	}
+
+void CCommFrameWriterAo::WriteCancel()
+/**
+ * Cancel the current write operation.
+ * @return void
+ */
+    {
+    _LOG_L4C1("CCommFrameWriterAo::WriteCancel");
+	Cancel();
+    }
+
+void CCommFrameWriterAo::AddToWaitingToSendList(CCsyMsgBufBpFrame* aBpFrame, TBool aHighPriority)
+/**
+ * This method is called to by C32 Interface objects to add
+ * the specified frame to the baseband queue.
+ *
+ * @param aBpFrame - Pointer to the frame buffer
+ * @param aHighPriority - Flag to indicate a high priority frame
+ */
+	{
+	_LOG_L4C3(">>CCommFrameWriterAo::AddToWaitingToSendList [aBpFrame=0x%x,aHighPriority=%d]",
+		aBpFrame, aHighPriority);
+
+	if (aHighPriority)
+		iWriteFrameBufList.AddFirst(*aBpFrame);
+	else
+		iWriteFrameBufList.AddLast(*aBpFrame);
+
+	_LOG_L4C1("<<CCommFrameWriterAo::AddToWaitingToSendList");
+	}
+
+CCsyMsgBufBpFrame* CCommFrameWriterAo::GetFrameToWrite()
+/**
+ * This method checks the queue for a frame that needs to be sent
+ * to the baseband.  If there is a message then deque it from the queue and
+ * return a pointer to it, else return NULL.
+ *
+ * @return Pointer to the frame to be written or NULL
+ */
+	{
+	_LOG_L4C1(">>CCommFrameWriterAo::GetFrameToWrite");
+
+	CCsyMsgBufBpFrame* frame = NULL;
+	if (!iWriteFrameBufList.IsEmpty())
+		{
+		frame = iWriteFrameBufList.First();
+		if (frame)
+			iWriteFrameBufList.Remove(*frame);
+		}
+
+	_LOG_L4C2("<<CCommFrameWriterAo::GetFrameToWrite [frame=0x%x]",frame);
+	return frame;
+	}
+
+void CCommFrameWriterAo::RemoveAnyDlcFramesOnWriteList(TUint8 aDlcNum, TBool aPlaceOnWaitList)
+/**
+ * This method transfers any frames on the write list from the dlc specified
+ * to the waiting list.
+ *
+ * @param aDlcNum is the dlc number of the frames to move to the waiting list
+ * @param aPlaceOnWaitList indicates whether to free the frame or place onto the
+ *        wait list.
+ */
+	{
+	_LOG_L4C3(">>CCommFrameWriterAo::RemoveAnyDlcFramesOnWriteList [aDlcNum=%d, aPlaceOnWaitList=%d]",
+		aDlcNum,aPlaceOnWaitList);
+
+	if (iWriteFrameBufList.IsEmpty())
+		{
+		// No frames to transfer
+		_LOG_L4C1("No frames on write list");
+		}
+	else
+		{
+		CCsyMsgBufBpFrame* frame = NULL;
+		iWriteFrameBufIter.SetToFirst();
+		while ((frame = iWriteFrameBufIter++) != NULL)
+			{
+			if (frame->GetDlcNum() == aDlcNum)
+				{
+				iWriteFrameBufList.Remove(*frame);
+				if (aPlaceOnWaitList)
+					{
+					_LOG_L4C1("Transferring frame to wait list");
+					iWaitingForFcOffList.AddLast(*frame);
+					}
+				else
+					{
+					// Adding frame to the free list
+					iMux0710Protocol->AddFrameFreeQ(frame);
+					}
+				}
+			}
+		}
+
+	_LOG_L4C1("<<CCommFrameWriterAo::RemoveAnyDlcFramesOnWriteList");
+	}
+
+void CCommFrameWriterAo::RemoveAnyDlcFramesFromWaitList(TUint8 aDlcNum, TBool aPlaceOnWriteList)
+/**
+ * This method transfers any frames on the waiting list from the dlc specified
+ * to the write list.
+ *
+ * @param aDlcNum is the dlc number of the frames to move to the write list
+ */
+	{
+	_LOG_L4C3(">>CCommFrameWriterAo::RemoveAnyDlcFramesFromWaitList [aDlcNum=%d,aPlaceOnWriteList=%d]",
+		aDlcNum,aPlaceOnWriteList);
+
+	if (iWaitingForFcOffList.IsEmpty())
+		{
+		// No frames to transfer
+		_LOG_L4C1("No frames on waiting list");
+		}
+	else
+		{
+		TBool writeQueueWasEmpty = iWriteFrameBufList.IsEmpty();
+
+		CCsyMsgBufBpFrame* frame = NULL;
+		iWaitingForFcOffIter.SetToFirst();
+		while ((frame = iWaitingForFcOffIter++) != NULL)
+			{
+			if (frame->GetDlcNum() == aDlcNum)
+				{
+				iWaitingForFcOffList.Remove(*frame);
+				if (aPlaceOnWriteList)
+					{
+					_LOG_L4C1("Transferring frame to write list");
+					iWriteFrameBufList.AddLast(*frame);
+					}
+				else
+					{
+					// Adding frame to the free list
+					iMux0710Protocol->AddFrameFreeQ(frame);
+					}
+				}
+			}
+
+		if ((!iWriteFrameBufList.IsEmpty())&&(writeQueueWasEmpty)&&(!IsActive()))
+			{
+			_LOG_L4C1("Write queue was empty and not active - triggering write");
+			frame = GetFrameToWrite();
+			TInt ret = WriteFrame(frame);
+			if (ret)
+				{
+				_LOG_L1C2("Write delayed frame failed [ret=%d]",ret);
+
+				// Place the failed frame back on the list.
+				iWriteFrameBufList.AddFirst(*frame);
+				}
+			}
+		}
+
+	_LOG_L4C1("<<CCommFrameWriterAo::RemoveAnyDlcFramesFromWaitList");
+	}
+
+void CCommFrameWriterAo::CompleteWrite(const TUint8 aDlcNum, TInt aStatus)
+/**
+ * This method calls the DLC port interface to complete the write request.
+ *
+ * @param aDlcNum - DLC number of the port
+ */
+	{
+	_LOG_L4C3(">>CCommFrameWriterAo::CompleteWrite [aDlcNum=%d,aStatus=%d]",
+		aDlcNum,aStatus);
+
+	if (aDlcNum)
+		{
+		CPortC32InterfaceBase* port = iParent->FindPortC32Interface(aDlcNum);
+		if (port)
+			port->CompleteWriteRequest(aStatus);
+		else
+			{
+			_LOG_L1C2("** Port does not exist for aDlcNum=%d **",
+				aDlcNum);
+			// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState));
+			}
+		}
+	else
+		{
+		// MAF tell mux control channel of send result
+		}
+
+	_LOG_L4C1("<<CCommFrameWriterAo::CompleteWrite");
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/CommReadWriteBaseAo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,135 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file has the implementation for the class MsgToBPCmdQueue
+// *               for adding and removing the BasePort Command messages from the queue.
+//
+
+// CommReadWriteBaseAo.cpp
+
+/** @file CommReadWriteBaseAo.cpp
+ *
+ * 
+ */
+
+#include "CommReadWriteBaseAo.h"
+#include "Portfactory.h"
+#include "CsyDebugLogger.h"
+#include "CsyGlobals.h"
+
+CCommReadWriteBaseAo::CCommReadWriteBaseAo(CPortFactory* aParent,
+										   CMux0710Protocol* aMux0710Protocol,
+										   TInt aPriority)
+/**
+ * Constructor.
+ * @param aParent - Pointer to the parent
+ * @param aMux0710Protocol - Pointer to the mux protocol
+ * @param aPriority - Priority to set for active object
+ */
+ : CActive(aPriority),
+   iBufSize(KDefaultTxRxBufSize),
+   iRole(ECommRoleDTE),
+   iParent(aParent),
+   iMux0710Protocol(aMux0710Protocol)
+	{
+	iCommPort = aParent->DTEPort();
+	CActiveScheduler::Add(this);
+	}
+
+
+CCommReadWriteBaseAo::~CCommReadWriteBaseAo()
+/**
+ * Destructor. Delete the memory allocated by this object.
+ */
+    {
+    delete iBuffer;
+    delete iBuf;
+    }
+
+TInt CCommReadWriteBaseAo::SetServerConfig(TCommServerConfig& aConfig)
+/**
+ * Set the port to use partial reads/writes or the bungee buffer.
+ *
+ * @param aConfig Reference to the new Comm server configuration
+ * @return TInt error code. KErrNone for sucess
+ */
+    {
+    _LOG_L4C1(">>CCommReadWriteBaseAo::SetServerConfig");
+
+    TCommServerConfigV01& c = aConfig();
+    TInt res = KErrNone;
+
+    if (c.iBufFlags & KCommBufferPartial)
+        {
+        TInt bufSave = iBufSize;
+        iBufSize = c.iBufSize;
+        TRAP(res, SetBuffersL();)
+        if (res==KErrNone)
+            iBufFlags = c.iBufFlags;
+        else
+            iBufSize = bufSave;
+        }
+
+	_LOG_L4C2("<<CCommReadWriteBaseAo::SetServerConfig [res=%d]",res);
+	return res;
+    }
+
+void CCommReadWriteBaseAo::GetServerConfig(TCommServerConfig& aConfig) const
+/**
+ * This method reads the comm server buffer configuration.
+ *
+ * @param aConfig Reference to location to write the Comm server configuration
+ */
+    {
+    _LOG_L4C1("CCommReadWriteBaseAo::GetServerConfig");
+
+    aConfig().iBufFlags = iBufFlags;
+    aConfig().iBufSize  = iBufSize;
+    }
+
+void CCommReadWriteBaseAo::FreeMemory()
+/**
+ * Reduce memory allocation levels by order of the comm server.
+ */
+    {
+    _LOG_L4C1("CCommReadWriteBaseAo::FreeMemory");
+
+    TRAP_IGNORE(SetBuffersL();)
+	// MAF the result is ignored?
+    }
+
+void CCommReadWriteBaseAo::SetBuffersL()
+/**
+ * This method frees the buffer memory and then tries to allocate
+ * a smaller piece of memory. Note that this function will leave if
+ * the memory allocation fails.
+ */
+    {
+    _LOG_L4C1(">>CCommReadWriteBaseAo::SetBuffersL");
+
+    if (!IsActive())
+        {
+		_LOG_L3C1("Not active - allow alloc to happen");
+        TInt allocLen = Align4(iBufSize);
+   
+        delete iBuffer;
+        delete iBuf;
+        iBuf = NULL;   // set to NULL, in case new leaves
+        iBuffer = NULL;
+
+        iBuffer = HBufC8::NewMaxL(allocLen);
+        iBuf = new (ELeave) TPtr8((TText8*)iBuffer->Des().Ptr(), allocLen, allocLen);
+        }
+
+	_LOG_L4C1("<<CCommReadWriteBaseAo::SetBuffersL");
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/CsyDebugLogger.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,156 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file implements the CCsyDebugLogger class.
+// *               This class provides the functionality to log TSY debug messages to a file.
+// *               The log file is located at \epoc32\wins\c\logs\etel.
+//
+
+// CsyDebugLogger.cpp
+/*
+Copies from RefLog.cpp
+MAF move back to using RefLog
+*/
+
+// MAF we need to move to using RefLog.cpp - because we are duplicating code
+// fixes to the code that TapRoot have copied from us.
+
+#include <e32svr.h>
+
+#include "CsyGlobals.h"
+#include "CsyDebugLogger.h"
+
+#ifdef _DEBUG // Only use the following code when in Debug mode
+
+_LIT8(KDateFormat, "%02d.%02d:%4d");
+_LIT8(KTimeFormat, "%02d.%02d:%02d:%06d ");
+
+class TNoOverflow : public TDes8Overflow
+/**
+ * This class is used to avoid panics when logging anything that's too long.
+ */
+	{
+public:
+	virtual void Overflow(TDes8& /*aDes*/)
+		{
+		}
+	};
+
+void CCsyDebugLogger::WriteHeader()
+/**
+ * Write the log header.
+ */	
+	{
+	TBuf8<64> buf;
+	TTime now;
+	now.UniversalTime();
+	TDateTime dateTime;
+	dateTime = now.DateTime();
+	// TDateTimes Day() and Month() start at 0
+	buf.Format(KDateFormat, dateTime.Day() + 1, dateTime.Month() + 1,
+		dateTime.Year());
+
+#ifndef __DEBUGSERIALPORT__
+	// overwrite log file
+	RFileLogger logger;
+	TInt ret = logger.Connect();
+	if (ret == KErrNone)
+		{
+		logger.SetDateAndTime(EFalse, EFalse);
+		logger.CreateLog(KCsyLogDir, KCsyLogFile, EFileLoggingModeOverwrite);
+		logger.Write(KCsyLogLine);
+		logger.CloseLog();
+		logger.Close();
+		}
+#endif
+
+	CCsyDebugLogger::Write(_L8(" ")); // please leave this separator in
+	CCsyDebugLogger::WriteFormat(_L8("Date: %S"), &buf);
+	CCsyDebugLogger::WriteFormat(_L8("CSY 3GPP 27.010 version %d.%02d  (v8.0 build:%d)"),
+			KCSY_Gsm0710MajorVersionNumber,
+			KCSY_Gsm0710MinorVersionNumber,
+			KCSY_Gsm0710BuildVersionNumber);
+	}
+
+void CCsyDebugLogger::Write(const TDesC8& aText)
+/**
+ * Write an 8-bit descriptor to the log file.
+ * @param aDebugLevel Debug level of log request
+ * @param aText is the text to write to the log file
+ * @return void
+ */	
+	{
+	TBuf8<KLogBufferSize> buf;
+	TTime now;
+	now.UniversalTime();
+	TDateTime dateTime;
+	dateTime = now.DateTime();
+	buf.Format(KTimeFormat, dateTime.Hour(), dateTime.Minute(), 
+			   dateTime.Second(), dateTime.MicroSecond());
+
+	if (aText.Length() <= (buf.MaxLength() - buf.Length()))
+		{
+		buf.Append(aText);
+		}
+	else
+		{
+		buf.Append(aText.Left(buf.MaxLength() - buf.Length()));
+		}
+
+#ifdef __DEBUGSERIALPORT__
+
+	TBuf<KLogBufferSize> buf2;
+	// TEMP: Do not print single % since appear as format char to RDebug::Print
+	for (TInt i = 0; i < buf.Length(); i++)
+		{
+		if (buf[i] == '%')
+			buf2.Append(_L("."));
+		else
+			buf2.Append(buf[i]);
+		}
+
+	RDebug::Print(buf2);
+
+#else
+	// log to our own file
+	RFileLogger logger;
+	TInt ret = logger.Connect();
+	if (ret == KErrNone)
+		{
+		logger.SetDateAndTime(EFalse, EFalse);
+		logger.CreateLog(KCsyLogDir, KCsyLogFile, EFileLoggingModeAppend);
+		logger.Write(buf);
+		logger.CloseLog();
+		logger.Close();
+		}
+#endif
+	}
+
+void CCsyDebugLogger::WriteFormat(TRefByValue<const TDesC8> aFmt, ...)
+/**
+ * Write an 8-bit format list to the log file.
+ * @param aDebugLevel Debug level of log request
+ * @param aFmt is the variable arguments
+ * @return void
+ */	
+	{
+	VA_LIST list;
+	VA_START(list,aFmt);
+
+	TBuf8<KLogBufferSize> buf;
+	TNoOverflow overflow;
+	buf.AppendFormatList(aFmt, list, &overflow);
+	Write(buf);
+	}
+
+#endif // _DEBUG
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/CsyMsgBufBpFrame.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,92 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the CCsyMsgBufBpFrame class.
+// *               This class is used to hold messages that the CSY sends to and receives
+// *               from the BP multiplexer.
+//
+
+/** @file
+ * This file contains the implementation for the CCsyMsgBufBpFrame class.
+ * This class is used to hold messages that the CSY sends to and receives
+ * from the baseband multiplexer.
+ */
+
+#include "CsyMsgBufBPFrame.h"
+#include "CsyGlobals.h"
+
+CCsyMsgBufBpFrame* CCsyMsgBufBpFrame::NewL()
+/**
+ * This static method uses 2-phase construction to create an instance of
+ * class CCsyMsgBufBpFrame.
+ *
+ * @return Pointer to the created object
+ */
+	{
+	CCsyMsgBufBpFrame* p = new(ELeave) CCsyMsgBufBpFrame();
+	CleanupStack::PushL(p);
+	p->ConstructL();
+	CleanupStack::Pop(p);
+	return p;
+ 	}
+
+CCsyMsgBufBpFrame::~CCsyMsgBufBpFrame()
+/**
+ * Destructor.
+ */
+	{}
+
+CCsyMsgBufBpFrame::CCsyMsgBufBpFrame()
+/**
+ * Constructor.
+ */
+	{}
+
+void CCsyMsgBufBpFrame::ConstructL()
+/**
+ * Set the buffer type to Frame and then zero the buffer's contents.
+ */
+	{
+	iMsg.FillZ();
+	}
+
+TUint8 CCsyMsgBufBpFrame::GetDlcNum() const
+/**
+ * The is method extracts the DLC number from the frame.
+ *
+ * @return DLC number
+ */
+	{
+	return (TUint8) (iMsg[KAdvOptionAddress] >> 2); // remove EA and CR bits
+	}
+
+TUint8 CCsyMsgBufBpFrame::GetFrameType() const
+/**
+ * The is method extracts the frame type from the frame.
+ *
+ * @return frame type
+ */
+	{
+	return ((TUint8) (iMsg[KAdvOptionControl] & 0xEF));  // remove poll/final bit
+	}
+
+TUint8 CCsyMsgBufBpFrame::GetType4FrameSequence() const
+/**
+ * The is method extracts the Convergence Layer Type 4 sequence from the frame.
+ *
+ * @return Frame Sequence
+ */
+	{
+	return (TUint8) (iMsg[KAdvOptionType4FrameControl] >> 6);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/DllMain.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the entry point for the CSY module.
+//
+
+// DllMain.cpp
+
+/** @file DllMain.cpp
+ *
+ */
+
+#include <cs_port.h>
+#include "Portfactory.h"
+#include "CsyDebugLogger.h"
+
+
+
+EXPORT_C CSerial* LibEntry()
+/**
+ * The single exported function.
+ * @return Pointer to and ownership of a new CSerial-derived object
+ */
+	{
+	LOGHEADER();
+	return (CPortFactory::NewL());
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/Mux0710Protocol.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1034 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the Mux0710Protocol class.
+//
+
+// Mux0710Protocol.cpp
+
+/** @file Mux0710Protocol.cpp
+ *
+ */
+ 
+#include "Mux0710Protocol.h"
+#include "Portfactory.h"
+#include "PortC32Interface.h"
+#include "CsyMsgBufBPFrame.h"
+#include "ChannelMgrCmdData.h"
+#include "CommFrameWriterAo.h"
+#include "CommFrameReaderAo.h"
+#include "ChannelMgrCtrl.h"
+#include "CsyDebugLogger.h"
+
+// AT Commands
+_LIT8(KATCmdAttention,     "ATE0\r");
+_LIT8(KATCmdDisableEcho,   "ATE0Q0V1\r");
+_LIT8(KATCmdReset,   "AT%b\r");
+_LIT8(KATCmdSleep,   "AT%SLEEP=0\r");
+
+const TInt KRetryCount = 2;
+
+CMux0710Protocol* CMux0710Protocol::NewL(CPortFactory& aPortFactory)
+/**
+ * This static method uses 2-phase construction to create an instance of
+ * this class.
+ *
+ * @return Pointer to the created object
+ */
+	{
+	_LOG_L4C1("CMux0710Protocol::NewL");
+
+	CMux0710Protocol* p = new(ELeave) CMux0710Protocol(aPortFactory);
+	CleanupStack::PushL(p);
+	p->ConstructL();
+	CleanupStack::Pop(p);
+	return p;
+ 	}
+
+CMux0710Protocol::~CMux0710Protocol()
+/**
+ * Destructor.
+ */
+	{
+	_LOG_L4C1("CMux0710Protocol::~CMux0710Protocol");
+
+	// Release  Free Frame Memory 
+	CCsyMsgBufBpFrame* aBpFrame;
+    iFreeFrameBufIter.SetToFirst();
+	while ((aBpFrame = iFreeFrameBufIter++) != NULL)
+		{
+		iFreeFrameBufList.Remove(*aBpFrame);
+		delete  aBpFrame;
+	 	}  
+
+	delete iTimeouter;
+	}
+
+CMux0710Protocol::CMux0710Protocol(CPortFactory& aPortFactory)
+/**
+ * Constructor.
+ *
+ */
+ : iPortFactory(aPortFactory),
+   iMuxMgrState(ECsyWaitingForFlushResp),
+   iFreeFrameBufList(_FOFF(CCsyMsgBufBpFrame, iMsgLink)),
+   iFreeFrameBufIter(iFreeFrameBufList),
+   iRetryCount(KRetryCount)
+   	{}
+
+void CMux0710Protocol::ConstructL()
+/**
+ * Allocate the memory for the free frames list.
+ */
+	{
+	_LOG_L4C1("CMux0710Protocol::ConstructL");
+
+	iTimeouter = CActiveTimeouter::NewL(*this);
+
+	// allocate memory for the free frame buffer
+	for (TUint i=0; i < KMaxFreeFrames; i++)
+		{
+		CCsyMsgBufBpFrame* aBpFrame = CCsyMsgBufBpFrame::NewL();
+		iFreeFrameBufList.AddLast(*aBpFrame);
+		}
+	iFreeFrameCount = KMaxFreeFrames;
+	}
+
+CCsyMsgBufBpFrame* CMux0710Protocol::GetFreeFrameBuf(TBool aCheckFlowControlThresholds)
+/**
+ * Get a free frame buffer and then remove the buffer from
+ * the free list.
+ *
+ * @return - Pointer to a frame buffer or NULL 
+ */
+	{
+	_LOG_L4C2(">>CMux0710Protocol::GetFreeFrameBuf [aCheckFlowControlThresholds=%d]",
+		aCheckFlowControlThresholds);
+
+	CCsyMsgBufBpFrame* frame = NULL;
+	if (!iFreeFrameBufList.IsEmpty())
+		{
+		frame = iFreeFrameBufList.First();
+		if (frame)
+			{
+			iFreeFrameBufList.Remove(*frame);
+			iFreeFrameCount--;
+			_LOG_L4C2("iFreeFrameCount=%d",iFreeFrameCount);
+
+			if ((aCheckFlowControlThresholds)&&(iFreeFrameCount < KStopDataDlcsThreshold))
+				{
+				// Need to enforce some flow control
+				iEnforcingFlowControl = ETrue;
+
+				if (iFreeFrameCount == 1)
+					{
+					// Only one frame free - that can be used to send the MSC command
+					_LOG_L4C1("Drastic action! - 1 frame free");
+					iPortFactory.StopAnyDlc();
+					}
+				else
+					{
+					_LOG_L4C2("Less than %d frames free",KStopDataDlcsThreshold);
+					iPortFactory.FindActiveDataDlcToStop();
+					}
+				}
+
+			frame->iMsg.Zero();
+			frame->MsgDlc() = KCtrlChannelDlcNum;
+			frame->CompleteWhenSent() = ETrue;
+			}
+		}
+
+	_LOG_L4C2("<<CMux0710Protocol::GetFreeFrameBuf [frame=0x%x]",frame);
+	return frame;
+	}
+
+void CMux0710Protocol::AddFrameFreeQ(CCsyMsgBufBpFrame* aBpFrame)
+/**
+ * This method is called to add the specified frame buffer to the
+ * free frame queue.
+ *
+ * @param aBpFrame - Pointer to the frame buffer
+ */
+	{
+	_LOG_L4C2(">>CMux0710Protocol::AddFrameFreeQ [aBpFrame=0x%x]",aBpFrame);
+
+	iFreeFrameBufList.AddLast(*aBpFrame);
+
+	if (iEnforcingFlowControl)
+		{
+		if (iFreeFrameCount >= KStartDataDlcsThreshold)
+			{
+			// Release flow control
+			_LOG_L4C2("More than %d frames free",
+				KStartDataDlcsThreshold);
+
+			// re-enable a data dlc (note only re-enable one dlc at a time)
+			iEnforcingFlowControl = iPortFactory.FindDlcToEnable();
+			_LOG_L4C2("iEnforcingFlowControl=%d",iEnforcingFlowControl);
+			}
+		}
+
+	iFreeFrameCount++;
+	//MAF __ASSERT_DEBUG((iFreeFrameCount <= KMaxFreeFrames),PANIC(KPanicIllegalState));
+
+	_LOG_L4C2("<<CMux0710Protocol::AddFrameFreeQ iFreeFrameCount=%d",
+		iFreeFrameCount);
+	}
+	
+TUint8 CMux0710Protocol::CalcFCS(TUint8* aBuffer, TInt aLen)
+/**
+ * This method calculates the checkSum for the specified buffer
+ * with the specified length.
+ *
+ * @param aBuffer - Pointer to the data buffer
+ * @param aLen    - Length of Number of bytes in the Buffer for which CheckSum to be calculated
+ * @return checksum
+ */
+	{
+    TUint8 frameCheckSum = 0xFF;
+	aBuffer++;
+	for (TInt i=0; i < aLen; i++ )
+		{
+		frameCheckSum = crctable[(frameCheckSum ^ (*aBuffer++))];
+		}
+
+	// One's Complement
+	frameCheckSum = (TUint8) ((TUint8)(0xFF) - frameCheckSum);
+
+	return frameCheckSum;
+	}
+
+TInt CMux0710Protocol::Create0710DataFrames(TDesC8& aMsgBuf, 
+											   const TUint8 aDlcNum)
+/**
+ * This method is called by channel manager objects to fragment
+ * a client message into frames for transmission to the BP.
+ * The length of the client message is determined, the client message is
+ * fragment into 27.010 format, and the formatted frames are added to the
+ * write frame queue.
+ *
+ * @param aMsgBuf - Pointer to the client message
+ * @param aDlcNum - DLC number
+ * @return KErrNone, KErrArgument, or KErrNoMemory
+ */
+	{
+	_LOG_L4C2(">>CMux0710Protocol::Create0710DataFrames [aDlcNum=%d]",
+		aDlcNum);
+
+	TInt ret = KErrNone;
+
+	TInt msgLength   = aMsgBuf.Length();
+	TInt offset      = 0;
+	TInt frameLength = 0;
+	TInt maxFrameLength = KMaxFrameSize;
+
+	TBool beginFlag = ETrue;
+	TBool endFlag = EFalse;
+
+	_LOG_L4C2("msgLength = %d", msgLength);
+	if (msgLength > 0)
+		{
+		while ((msgLength > 0)&&(ret == KErrNone))
+			{
+			CCsyMsgBufBpFrame* bpFrame = GetFreeFrameBuf();
+			if (bpFrame)
+				{
+				// Set up the frame
+				bpFrame->MsgDlc() = aDlcNum;
+
+				if (msgLength > maxFrameLength)
+					{
+					_LOG_L4C3("Fragmenting (%d > %d)",msgLength,maxFrameLength);
+
+					frameLength = maxFrameLength;
+					bpFrame->CompleteWhenSent() = EFalse;
+					}
+				else
+					{
+					_LOG_L4C1("No Fragment");
+
+					frameLength = msgLength;
+					bpFrame->CompleteWhenSent() = ETrue;
+					endFlag = ETrue;
+					}
+			
+				// Test for convergence layer 4
+				CPortC32InterfaceBase* port = 
+					iPortFactory.FindPortC32Interface(aDlcNum);
+				if (port)
+					{
+					if (port->GetClientType() == CPortFactory::EC32ClientIpNif)
+						{
+						_LOG_L4C1("Layer 4 frame");
+
+						Create0710UIHLayer4FrameFromMsg(aMsgBuf, offset, 
+							bpFrame, frameLength, aDlcNum, beginFlag, endFlag);
+
+						// No longer the beginning
+						beginFlag = EFalse;
+						}
+					else
+						{
+						_LOG_L4C1("Normal frame");
+
+						Create0710UIHFrameFromMsg(
+							aMsgBuf, offset, bpFrame, frameLength, aDlcNum);
+						}
+
+					_LOG_L4C1("Writing the frame");
+					ret = iCommWriter->Write(bpFrame);
+					}
+				else
+					{
+					_LOG_L1C2("** No port defined for aDlcNum=%d",
+						aDlcNum);
+					}
+				}
+			else
+				{
+				// error no free frame available
+				_LOG_L1C1("** No free frame buffer **");
+				ret = KErrNoMemory;
+				}
+
+			msgLength -= frameLength;
+			offset += maxFrameLength;
+			}
+		}
+	else
+		{
+		ret = KErrArgument;
+		}
+
+	_LOG_L4C2("<<CMux0710Protocol::Create0710DataFrames [ret=%d]",ret);
+	return ret;
+	}
+
+void CMux0710Protocol::Create0710UIHFrameFromMsg(TDesC8& aMsgBuf,
+												 TInt aOffset,
+												 CCsyMsgBufBpFrame* aFrameBuf,
+												 TInt aLength,
+												 TUint8 aDlcNum)
+/**
+ * This method creates an 27.010 UIH frame from a message.
+ * NOTE: This method assumes that a free frame buffer has been allocated.
+ *
+ * @param aMsgBuf - Pointer to a CSY memory element pointing to a Msg
+ * @param aOffset - Offset from the start of the message to be copied to the frame.
+ *                  This is needed if the calling method needs to defragment a long message.
+ * @param aFrameBuf - Pointer to a CSY memory elelemt pointing to a Frame
+ * @param aLength   - Length of the payload to be copied.
+ * @param aDlcNum   - DLC channel number.
+ */
+    {
+	_LOG_L4C3(">>CMux0710Protocol::Create0710UIHFrameFromMsg [aOffset=%d,aLength=%d]",aOffset,aLength);
+
+	aFrameBuf->iMsg.Zero();
+
+	// set initial length for headers
+#ifdef _27010ADVANCEOPTION
+	aFrameBuf->iMsg.SetLength(3);
+#else
+	aFrameBuf->iMsg.SetLength(4);
+#endif
+
+	// Octet 0 = Start Flag
+	aFrameBuf->iMsg[0] = KCsy0710StartEndFlag;
+
+	// Octet 1 = Non-extended Address, Command/Response, DLCI number
+	aFrameBuf->iMsg[1] = (TUint8) ((aDlcNum << 2) | 0x03);  // Set the DLCI, EA, C/R
+
+	// Octet 2 = Control Field = Frame Type (UIH)
+	aFrameBuf->iMsg[2] = (TUint8) KCsy0710CTLUIH;
+	
+
+#ifdef _27010ADVANCEOPTION
+	TInt checksumLength = 2;
+#else
+	// Octet 3 = Length indicator
+	// ASSUME only 1 byte needed for length size
+	//    27.010 supports 7 bits in Octet 3 to indicate a length up to 128 bytes long
+	aFrameBuf->iMsg[3] = (TUint8) ((aLength << 1) | KCsy0710EA);
+
+
+	// CRC Frame check : Basic Option  -> for Addr, Control, Length Fields only
+	// length = 3 bytes  [Addr(1) + Control(1) + Length (1)]
+	TInt checksumLength = 3;
+#endif
+	TUint8 checksum;
+	checksum = (TUint8) CalcFCS(&aFrameBuf->iMsg[0], checksumLength);
+
+	// Octet 5-x
+	//CCsyMsgBufClient* csyMsgBufClient = STATIC_CAST(CCsyMsgBufClient*, aMsgBuf);
+	const TUint8* temp = &aMsgBuf[aOffset];
+	aFrameBuf->iMsg.Append(temp, aLength);
+	TInt tempLength = aFrameBuf->iMsg.Length();
+	aFrameBuf->iMsg.SetLength(tempLength + 2);
+	aFrameBuf->iMsg[tempLength] = checksum;
+	aFrameBuf->iMsg[tempLength+1] = KCsy0710StartEndFlag;
+
+ 	_LOG_L4C1("<<CMux0710Protocol::Create0710UIHFrameFromMsg");
+	}
+
+void CMux0710Protocol::Create0710UIHLayer4FrameFromMsg(TDesC8& aMsgBuf, 
+													   TInt aOffset, 
+													   CCsyMsgBufBpFrame* aFrameBuf, 
+													   TInt aLength, 
+													   TUint8 aDlcNum, 
+													   TBool aLayer4Begin, 
+													   TBool aLayer4End)
+/**
+ * This method creates an 27.010 UIH frame from a message.
+ * NOTE: This method assumes that a free frame buffer has been allocated.
+ *
+ * @param aMsgBuf - Pointer to a CSY memory element pointing to a Msg
+ * @param aOffset - Offset from the start of the message to be copied to the frame.
+ *                  This is needed if the calling method needs to defragment a long message.
+ *                  This method builds the message as a Convergence Layer 4 type, so
+ *                  only Advanced Option.
+ * @param aFrameBuf - Pointer to a CSY memory elelemt pointing to a Frame
+ * @param aLength   - Length of the payload to be copied.
+ * @param aDlcNum   - DLC channel number.
+ * @param aLayer4Begin - Beginning of Convergence Layer 4.
+ * @param aLayer4End   - End of Convergence Layer 4.
+ */
+    {
+	_LOG_L4C3(">>CMux0710Protocol::Create0710UIHLayer4FrameFromMsg [aOffset=%d,aLength=%d]",aOffset,aLength);
+	_LOG_L4C3("[aLayer4Begin=%d,aLayer4End=%d]",aLayer4Begin,aLayer4End);
+
+	//aFrameBuf->iMsg.Zero(); - this is done in GetFreeFrameBuf
+
+	// set initial length for headers
+	aFrameBuf->iMsg.SetLength(3);
+
+	// Octet 0 = Start Flag
+	aFrameBuf->iMsg[0] = KCsy0710StartEndFlag;
+
+	// Octet 1 = Non-extended Address, Command/Response, DLCI number
+	aFrameBuf->iMsg[1] = (TUint8) ((aDlcNum << 2) | 0x03);  // Set the DLCI, EA, C/R
+
+	// Octet 2 = Control Field = Frame Type (UIH)
+	aFrameBuf->iMsg[2] = (TUint8) KCsy0710CTLUIH;
+
+	TInt checksumLength = 2;
+	TUint8 checksum;
+	checksum = (TUint8) CalcFCS(&aFrameBuf->iMsg[0], checksumLength);
+
+	// Octet 5-x	
+	// Build the Convergence Layer 4 byte
+	TUint8 tempLayer4Byte = 0x01;	// Default Middle Frame fragment 
+	if (aLayer4Begin && aLayer4End)	// Begin and End - Single Frame Message
+		{
+		tempLayer4Byte = 0xC1; // MAF magic numbers
+		}
+	else if (aLayer4Begin)	// Begin Frame
+		{
+		tempLayer4Byte = 0x41;
+		}
+	else if (aLayer4End)	// End Frame
+		{
+		tempLayer4Byte = 0x81;
+		}
+	aFrameBuf->iMsg.Append(tempLayer4Byte);
+
+	const TUint8* temp = &aMsgBuf[aOffset];
+	aFrameBuf->iMsg.Append(temp, aLength);
+	TInt tempLength = aFrameBuf->iMsg.Length();
+
+	aFrameBuf->iMsg.SetLength(tempLength + 2);
+	aFrameBuf->iMsg[tempLength] = checksum;
+	aFrameBuf->iMsg[tempLength+1] = KCsy0710StartEndFlag;
+
+	DumpFrame(aFrameBuf);
+
+	_LOG_L4C1("<<CMux0710Protocol::Create0710UIHLayer4FrameFromMsg");
+    }
+
+TInt CMux0710Protocol::Create0710ControlFrame(TCsyFrameType aFrameType,
+											  TUint8 aDlcNum,
+											  TCsyCtrlCommand aType,
+											  TUint8 aV24Signals)
+/**
+ * This method creates an 27.010 control frame using the specified frame type
+ * and DLC number.
+ * NOTE: This method assumes that a free frame buffer has been allocated.
+ *
+ * @param aFrameType - Frame type of the control frame
+ * @param aDlcNum - DLC number of this frame
+ * @return KErrNone or KErrGeneral
+ */
+	{
+	_LOG_L4C2(">>CMux0710Protocol::Create0710ControlFrame [aDlcNum=%d]",aDlcNum);
+
+	TInt ret = KErrNone;
+
+	if (iMaxRetriesReached == EFalse)
+		{
+	
+		#ifdef _27010ADVANCEOPTION
+			TUint8 tempArray[15]; // MAF magic numbers
+		#else
+			TUint8 tempArray[8];
+		#endif
+
+		// Octet 0 = Start Flag
+		tempArray[0] = KCsy0710StartEndFlag;
+
+		// Octet 1 = Non-extended Address, initiating end (Command/Response), DLCI number
+		tempArray[1] = (TUint8) ((aDlcNum << 2) | 0x03);  // Set the DLCI, EA, C/R
+
+		// Octet 2 = Frame Type
+		switch (aFrameType)
+			{
+		case ESABM:
+			_LOG_L3C1("ESABM");
+			tempArray[2] = (TUint8) KCsy0710CTLSABM;
+			tempArray[2] |= KCsy0710PollFinal;
+			break;
+		case EUA:
+			_LOG_L3C1("EUA");
+			tempArray[1] = (TUint8) ((aDlcNum << 2) | 0x01);  // Set the DLCI, EA
+			tempArray[2] = (TUint8) KCsy0710CTLUA;
+			break;
+		case EDM:
+			_LOG_L3C1("EDM");
+			tempArray[1] = (TUint8) ((aDlcNum << 2) | 0x01);  // Set the DLCI, EA
+			tempArray[2] = (TUint8) KCsy0710CTLDM;
+			break;
+		case EDISC:
+			_LOG_L3C1("EDISC");
+			tempArray[2] = (TUint8) KCsy0710CTLDISC;
+			tempArray[2] |= KCsy0710PollFinal;
+			break;
+		case EUIH:
+			_LOG_L3C1("EUIH");
+			tempArray[2] = (TUint8) KCsy0710CTLUIH;
+			tempArray[2] |= KCsy0710PollFinal; // no pollbit
+			break;
+		case EUI:
+			_LOG_L3C1("EUI");
+			tempArray[2] = (TUint8) KCsy0710CTLUI;
+			break;
+		default:
+			_LOG_L1C2("** Unknown FrameType=%d **",aFrameType);
+			ret = KErrGeneral;
+			break;
+			}
+
+	#ifndef _27010ADVANCEOPTION
+
+		(void) aType;	//to hide warning.
+		(void) aV24Signals; //to hide warning.
+
+		// Octet 3 = Length1 indicator octet1
+		tempArray[3] = (TUint8) 0x01;  // zero length and set EA bit
+
+		// CRC Frame check : Basic Option  -> for Addr, Control, Length Fields only
+		// length = 4 bytes  [Addr(1) + Control(1) + Length (2)]
+		TInt length = 3;  
+		tempArray[4] = (TUint8) CalcFCS(tempArray, length);
+		tempArray[5] = KCsy0710StartEndFlag;
+
+		// For this call of GetFreeFrameBuf do not check the low frame threshold
+		// since control frame and it could be related to an already occurring flow
+		// control action anyway.
+		CCsyMsgBufBpFrame* ctrlFrame = GetFreeFrameBuf(EFalse);
+		if (ctrlFrame)
+			{
+			ctrlFrame->iMsg.Copy(tempArray, 6);
+			iCommWriter->Write(ctrlFrame); // MAF should be high priority frame
+			}
+	#else
+
+		if (aFrameType == EUIH)
+			{
+			// Set the DLCI to 0
+			tempArray[1]  = 0x03; // Set the DLCI to 0, EA, C/R
+			}
+
+		TUint8 checkSum; 
+		TInt length = 2;
+		checkSum = (TUint8) CalcFCS(tempArray, length);
+
+		if (aFrameType == EUIH)
+			{
+			// Only two types of control UIH supported
+			if (aType == EParamNeg)
+				{
+				_LOG_L3C1("Param Negotiate");
+
+				tempArray[3]  = KCsy0710CTLUIH_DlcParamNegotiate;
+				tempArray[4]  = 0x11; // i.e 8 bytes, EA
+				tempArray[5]  = aDlcNum;
+				tempArray[6]  = (KPNClBits << 4) + KPNFrameType;
+				tempArray[7]  = KPNDlcPriority;
+				tempArray[8]  = KPNAckTimer;
+				tempArray[9]  = KPNMaxFrameSize & 0x00ff;
+				tempArray[10] = KPNMaxFrameSize >> 8;
+				tempArray[11] = KPNMaxRetransmissions;
+				tempArray[12] = KPNWindowSize;
+				tempArray[13] = checkSum;
+				tempArray[14] = KCsy0710StartEndFlag;
+
+				iParamNegotiateDlcNum = aDlcNum;
+				}
+			else
+				{
+				_LOG_L3C2("MSC aV24Signals=0x%x", aV24Signals);
+
+				tempArray[3]  = KCsy0710CTLUIH_ModemStatusCmd;
+				tempArray[4]  = 0x05; // i.e 2 bytes, EA
+				tempArray[5]  = (TUint8) ((aDlcNum << 2) | 0x03);  // Set the DLCI, EA, 1
+				tempArray[6]  = aV24Signals;
+				tempArray[7] = checkSum;
+				tempArray[8] = KCsy0710StartEndFlag;
+				}
+			}
+		else
+			{
+			tempArray[3] = checkSum;
+			tempArray[4] = KCsy0710StartEndFlag;
+			}
+
+		CCsyMsgBufBpFrame* ctrlFrame = GetFreeFrameBuf(EFalse);
+		if (ctrlFrame)
+			{
+	#ifdef _27010ADVANCEOPTION
+			if (aFrameType == EUIH)
+				{
+				if (aType == EParamNeg)
+					{
+					ctrlFrame->iMsg.Copy(tempArray, 15);
+					}
+				else
+					{
+					ctrlFrame->iMsg.Copy(tempArray, 9);
+					}
+				}
+			else
+				{
+				ctrlFrame->iMsg.Copy(tempArray, 5);
+				}
+	#else
+			ctrlFrame->iMsg.Copy(tempArray, 5);
+	#endif
+
+			_LOG_L3C1("Write the frame");
+			iCommWriter->Write(ctrlFrame); // MAF should be high priority frame
+			}
+	#endif
+		else
+			{		// no memory available
+			_LOG_L1C1("** No Memory Available **");
+			ret = KErrNoMemory;
+			}
+		}
+	else
+		{	
+		_LOG_L1C1("** Max Retries Reached **");
+		ret = KErrTimedOut;
+		}
+	_LOG_L4C2("<<CMux0710Protocol::Create0710ControlFrame [ret=%d]",ret);
+	return ret;
+	}
+
+TInt CMux0710Protocol::SwitchToMuxMode()
+/**
+ * This method is called to switch the baseband to multiplexer mode.
+ * This method formats the AT command the buffer with the AT+CMUX command
+ * and writes to the write FrameBuf List.
+ *
+ * @return KErrNone or KErrNoMemory
+ */
+	{
+	_LOG_L4C1(">>CMux0710Protocol::SwitchToMuxMode");
+
+#ifdef __CSY_PROTOTYPE__
+	iMuxMgrState = ECsyMuxEnabled;
+#else
+	
+	if(iMuxMgrState == ECsyWaitingForFlushResp)
+		{
+		//flush the read queue.
+		iTimeouter->Start(KOneSecond);
+		return KErrNone;
+		}
+	else
+		{
+		iTimeouter->Start(KTwoSeconds);
+		}
+		
+	TInt ret = KErrNone;
+
+	CCsyMsgBufBpFrame* initBuf = GetFreeFrameBuf();
+	if (initBuf)
+		{
+		
+#ifdef USE_TI_CONDAT_STACK
+		if(iMuxMgrState == ECsyWaitingForResetResp)
+			{
+			//when using the TI stack we first attempt to reset the board using at%b.  
+			_LOG_L3C1("Sending AT reset command");
+			TBuf8<16> aBuf(KATCmdReset);
+			initBuf->iMsg.Copy(aBuf);
+			iMuxMgrState = ECsyWaitingForResetResp;
+			}
+		else if(iMuxMgrState == ECsyWaitingForSleepResp)
+			{
+			//Need to ensure that the TI stack will not timeout in the lull between commands
+			_LOG_L3C1("Sending AT sleep command");
+			TBuf8<16> aBuf(KATCmdSleep);
+			initBuf->iMsg.Copy(aBuf);
+			iMuxMgrState = ECsyWaitingForSleepResp;
+			}
+		else
+			{
+#endif
+		_LOG_L3C1("Sending AT");
+		TBuf8<16> aBuf(KATCmdAttention);
+		initBuf->iMsg.Copy(aBuf);
+		iMuxMgrState = ECsyWaitingForAttentionResp;
+
+#ifdef USE_TI_CONDAT_STACK
+			}
+#endif
+		iResponseStr.Zero();
+		
+		// call comm write to xmit frame
+		// comm writer's RunL will run when frame has been xmitted by LDD
+		// and return the frame buffer to the free list
+		ret = iCommWriter->Write(initBuf);
+		}
+	else
+		{
+		_LOG_L1C1("** No Memory Available **");
+		ret = KErrNoMemory;
+		}
+#endif
+
+	_LOG_L4C2("<<CMux0710Protocol::SwitchToMuxMode [ret=%d]",ret);
+	return ret;
+	}
+
+TInt CMux0710Protocol::ParseATResponse(TDes8& aResp)
+/**
+ * This method parses the specified AT ascii response for the
+ * expected ascii "OK" string.  If the string is found then set
+ * the Mux Mode to True.
+ *
+ * @param aResp - Reference to the AT response string to parse
+ * @return KErrNone, KErrGeneral or KErrNotFound
+ */
+	{
+	_LOG_L4C3(">>CMux0710Protocol::ParseATResponse [iMuxMgrState = %d, aResp=%S]",
+		iMuxMgrState,&aResp);
+		
+	//Response string not always read in one go so concatonate it together to form full response string.
+	TInt appendsize = iResponseStr.MaxSize() - iResponseStr.Length();
+	iResponseStr.Append(aResp.LeftTPtr(appendsize));
+	_LOG_L4C2("Result string concatenated = %S",&iResponseStr);
+	
+	if(iMuxMgrState == ECsyWaitingForFlushResp)
+		{
+		_LOG_L4C2("Flushed comm port on opening = %S",&iResponseStr);
+		return KErrNotFound;
+		}
+		
+#ifdef USE_TI_CONDAT_STACK
+	if(iMuxMgrState == ECsyWaitingForResetResp)
+		{
+		if(iResponseStr.Find(KATInitialised) != KErrNotFound)
+			{
+			//got match - reset Rsp string to enter normal loop handle
+			_LOG_L3C1("Board has successfully been reset.");
+			iResponseStr = _L8("OK");
+			iRetryCount = 0; // stop retries of the reset
+			}
+		}
+
+	if(iMuxMgrState == ECsyWaitingForSleepResp)
+		{
+		if(iResponseStr.Find(_L8("OK")) != KErrNotFound)
+			{
+			//got match - sleep acknowledged
+			_LOG_L3C1("Board has had sleep timeout disabled.");
+			iRetryCount = 0; //stop retries of the sleep;
+			}
+		}				
+#endif
+
+	TInt ret = KErrNone;
+
+	// all AT responses should contain an "OK" keyword
+	if ((iResponseStr.Find(_L8("OK")) != KErrNotFound) ||
+		(iResponseStr.Find(_L8("ERROR")) != KErrNotFound))
+		{
+		if (iResponseStr.Find(_L8("ERROR")) != KErrNotFound)
+			{
+#ifdef USE_TI_CONDAT_STACK
+			if(iMuxMgrState == ECsyWaitingForResetResp)
+				{
+				_LOG_L3C1("*******TI Board failed to reset (AT%b) - continue anyway as may already be in a stable state.*******");
+				iRetryCount--;
+				}
+			else if (iMuxMgrState == ECsyWaitingForSleepResp)
+				{
+				_LOG_L3C1("*******TI Board failed to acknowledge sleep disable (AT%SLEEP=0) - continue anyway as may already be in a stable state.*******");
+				iRetryCount--;
+				}
+			else
+				{
+				_LOG_L3C1("****************** Received ERROR back ****************");
+				}
+#else
+			_LOG_L3C1("****************** Received ERROR back ****************");
+#endif
+			}
+		iTimeouter->Stop();
+
+		switch (iMuxMgrState)
+			{
+#ifdef USE_TI_CONDAT_STACK
+		case ECsyWaitingForResetResp:
+			{			
+			_LOG_L3C1("ECsyWaitingForResetResp - Start proper init sequence.");
+			if(iRetryCount>0) 
+				iMuxMgrState = ECsyWaitingForResetResp; //try reset command again
+			else
+				{
+				iMuxMgrState = ECsyWaitingForSleepResp;
+				iRetryCount = KRetryCount;
+				}				
+			SwitchToMuxMode();
+			}
+			break;
+			
+		case ECsyWaitingForSleepResp:
+			{			
+			iResponseStr.Zero();
+			_LOG_L3C1("ECsyWaitingForSleepResp");
+			if(iRetryCount>0)
+				iMuxMgrState = ECsyWaitingForSleepResp;
+			else
+				iMuxMgrState = ECsyWaitingForAttentionResp;
+			SwitchToMuxMode();
+			}
+			break;			
+#endif			
+		case ECsyWaitingForAttentionResp:
+			{
+			iResponseStr.Zero();
+			CCsyMsgBufBpFrame* atCmdBuf = GetFreeFrameBuf();
+			if (atCmdBuf)
+				{
+				_LOG_L3C1("Writing ATE0 command");
+				atCmdBuf->iMsg.Copy(KATCmdDisableEcho);
+				iCommWriter->Write(atCmdBuf);
+				iMuxMgrState = ECsyWaitingForEchoDisableResp;
+				}
+
+			iTimeouter->Start(KTwoSeconds);
+			}
+			break;
+
+		case ECsyWaitingForEchoDisableResp:
+			{
+			iResponseStr.Zero();
+			CCsyMsgBufBpFrame* atCmdBuf = GetFreeFrameBuf();
+			if (atCmdBuf)
+				{
+				_LOG_L3C1("Writing CMUX cmd");
+				atCmdBuf->iMsg.Copy(KCsyDefaultATEnterMuxModeCmd);
+				iCommWriter->Write(atCmdBuf);
+				iMuxMgrState = ECsyWaitingForCmuxResp;
+				}
+
+			iTimeouter->Start(KTwoSeconds);
+			}
+			break;
+
+		case ECsyWaitingForCmuxResp:
+			{
+			iResponseStr.Zero();
+			_LOG_L3C1("Got CMUX response");
+			iMuxMgrState = ECsyMuxEnabled;
+
+			// start the connect process for the control, command & data channels
+			iPortFactory.ConnectControlChannel();
+			}
+			break;
+
+		default:
+			_LOG_L3C2("** Invalid Mux Mgr State = %d **", iMuxMgrState);
+			ret = KErrGeneral;
+			break;
+			}
+		}
+	else
+		{
+		ret = KErrNotFound;
+		}
+
+	_LOG_L4C2("<<CMux0710Protocol::ParseATResponse [ret = %d]",ret);
+	return ret;
+	}
+
+void CMux0710Protocol::TimedOut()
+/**
+ * This resends the AT command required.
+ */
+	{
+	_LOG_L4C2(">>CMux0710Protocol::TimedOut [iMuxMgrState=%d]",iMuxMgrState);
+
+	switch (iMuxMgrState)
+		{
+
+	case ECsyWaitingForFlushResp:
+		{
+		//read queue has just been flushed, now start switch to MUX mode
+		_LOG_L3C1("ECsyWaitingForFlushResp");
+#ifdef USE_TI_CONDAT_STACK
+		iMuxMgrState = ECsyWaitingForResetResp;
+#else
+		iMuxMgrState = ECsyWaitingForAttentionResp;
+#endif
+		SwitchToMuxMode();
+		}
+		break;
+#ifdef USE_TI_CONDAT_STACK
+	case ECsyWaitingForResetResp:
+		{
+		_LOG_L3C1("ECsyWaitingForResetResp");
+		if(--iRetryCount>0) 
+			iMuxMgrState = ECsyWaitingForResetResp; //try reset command again
+		else
+			iMuxMgrState = ECsyWaitingForSleepResp;	
+		SwitchToMuxMode();
+		}
+		break;
+
+	case ECsyWaitingForSleepResp:
+		{
+		_LOG_L3C1("ECsyWaitingForSleepResp");
+		if(--iRetryCount>0)
+			iMuxMgrState = ECsyWaitingForSleepResp; //try sleep command again
+		else
+			iMuxMgrState = ECsyWaitingForAttentionResp;
+		SwitchToMuxMode();	
+		}
+		break;
+#endif
+	case ECsyWaitingForAttentionResp:
+		{
+		if (++iAtResponseTimeout < KAtResponseTimeoutLimit)
+			{
+			_LOG_L3C2("ECsyWaitingForAttentionResp [timeout:%d]",iAtResponseTimeout);
+			SwitchToMuxMode();	
+			}
+		else
+			{
+			_LOG_L3C2("Max retries [%d] reached for At Response", KAtResponseTimeoutLimit);
+
+			iMaxRetriesReached = ETrue;
+			//call to scheduler DoCancel required here
+			iPortFactory.ChannelCtrlDoCancel();
+			}
+		}
+		break;
+
+	case ECsyWaitingForEchoDisableResp:
+		{
+		_LOG_L3C1("ECsyWaitingForEchoDisableResp");
+		iResponseStr.Zero();
+		CCsyMsgBufBpFrame* atCmdBuf = NULL;
+		atCmdBuf = GetFreeFrameBuf();
+		if (atCmdBuf)
+			{
+			TBuf8<16> tempBuf(KATCmdDisableEcho);
+			atCmdBuf->iMsg.Copy(tempBuf);
+			iCommWriter->Write(atCmdBuf);
+			}
+
+		iTimeouter->Start(KOneSecond);
+		}
+		break;
+
+	case ECsyWaitingForCmuxResp:
+		{
+		_LOG_L3C1("ECsyWaitingForCmuxResp");
+		iResponseStr.Zero();
+		CCsyMsgBufBpFrame* atCmdBuf = GetFreeFrameBuf();
+		if (atCmdBuf)
+			{
+			_LOG_L3C1("Writing CMUX cmd");
+			atCmdBuf->iMsg.Copy(KCsyDefaultATEnterMuxModeCmd);
+			iCommWriter->Write(atCmdBuf);
+			iMuxMgrState = ECsyWaitingForCmuxResp;
+			}
+		iTimeouter->Start(KTwoSeconds);
+		}
+		break;
+
+	default:
+		_LOG_L1C2("** Invalid Mux Mgr State = %d **", iMuxMgrState);
+		break;
+		}
+
+	_LOG_L4C1("<<CMux0710Protocol::TimedOut");
+	}
+
+void CMux0710Protocol::DumpFrame(CCsyMsgBufBpFrame* aFrameBuf)
+/**
+ * Logs the packet into the log file.
+ *
+ * @param aPacket The incoming packet
+ */
+	{
+	_LOG_L4C1(">>CMux0710Protocol::DumpFrame");
+
+	TInt packetLen = aFrameBuf->iMsg.Length();
+	_LOG_L4C2("frame length %d",packetLen);
+
+	TBuf8<256> logBuf;
+	TBuf8<256> logBuf2;
+
+	logBuf.Copy(_L8("    "));
+	logBuf2.Copy(_L8(" "));
+	_LOG_L4C1("");
+
+	for (TInt i = 0; i <= packetLen; i++)
+		{
+		if (i >= packetLen)
+			{
+			logBuf.Append(logBuf2);
+			_LOG_L4C2("%S",&logBuf);
+			break;
+			}
+		if (((i % 16) == 0) && (i > 0))
+			{
+			logBuf.Append(logBuf2);
+			_LOG_L4C2("%S",&logBuf);
+			logBuf.Copy(_L8("    "));
+			logBuf2.Copy(_L8(" "));
+			}
+		logBuf.AppendFormat(_L8("%02X "), aFrameBuf->iMsg[i]);
+		if (TChar(aFrameBuf->iMsg[i]).IsPrint())
+			logBuf2.AppendFormat(_L8("%c"), aFrameBuf->iMsg[i]);
+		else
+			logBuf2.Append(_L8("."));
+		}
+
+	_LOG_L4C1("<<CMux0710Protocol::DumpFrame");
+	_LOG_L4C1("");
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/PortC32Interface.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,368 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the CPortC32Interface class.
+// *               This class contains methods which are invoked by C32 when the
+// *               associated client RComm public API is invoked. These methods
+// *               are used to create, configure, read, write, and close logical
+// *               serial ports. Instances of this class are created by the CSY's
+// *               Port Factory.
+//
+
+// PortC32Interface.cpp
+
+/** @file PortC32Interface.cpp
+ *
+ */
+
+#include <cdbcols.h>
+#include "PortC32Interface.h"
+#include "Portfactory.h"
+#include "Mux0710Protocol.h"
+#include "CsyMsgBufBPFrame.h"
+#include "ChannelMgrCmdData.h"
+#include "CommFrameReaderAo.h"
+#include "CsyDebugLogger.h"
+#include "CsyGlobals.h"
+#include "CommFrameWriterAo.h"
+
+CPortC32Interface* CPortC32Interface::NewL(CPortFactory& aPortFactory, 
+										   CPortFactory::TC32PortInfo& aPortInfo)
+/**
+ * This method uses two phase construction and the cleanup stack to create
+ * an instance of class CPortC32Interface.
+ *
+ * @param aPortFactory - Reference to the port factory
+ * @param aPortInfo - Reference to the port information
+ * @return Pointer to the created instance
+ */
+	{
+	_LOG_L4C1( "CPortC32Interface::NewL");
+
+	CPortC32Interface* self = new(ELeave) CPortC32Interface(aPortFactory, aPortInfo);
+	TCleanupItem closeSelf(CPortFactory::CloseObject, self);
+	CleanupStack::PushL(closeSelf);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return self;
+	}
+
+CPortC32Interface::~CPortC32Interface()
+/**
+ * Destructor.
+ */
+	{
+	_LOG_L4C1( ">>CPortC32Interface::~CPortC32Interface");
+
+	// let port factory know we are deleted
+	iPortFactory.RemoveC32Port(this);
+	CompleteOutstandingRequest();
+
+	iMuxChannel->Close(this);
+
+	if (iReadBuf)
+		{
+		_LOG_L3C1("Delete read buffer");
+		delete iReadBuf;
+		}
+
+	_LOG_L4C1( "<<CPortC32Interface::~CPortC32Interface");
+	}
+
+CPortC32Interface::CPortC32Interface(CPortFactory& aPortFactory,
+									 CPortFactory::TC32PortInfo& aPortInfo)
+/**
+ * Constructor.
+ *
+ * @param aPortFactory - Reference to the port factory
+ * @param aPortInfo - Reference to the port information
+ */
+: CPortC32InterfaceBase(aPortFactory, aPortInfo)
+	{}
+
+void CPortC32Interface::ConstructL(void)
+/**
+ * Safe constructor
+ */
+	{
+	_LOG_L4C1( "CPortC32Interface::ConstructL");
+	CPortC32InterfaceBase::ConstructL();
+	}
+
+/********************************************************************************/
+/*               Start of utility methods for CPortC32InterfaceBase                 */
+/********************************************************************************/
+
+TInt CPortC32Interface::QueryReceiveBuffer(TInt& aLength) const
+/**
+ * Called by C32 when the client queries the size of the receive buffer,
+ * which returns the number of receive characters available to be read by
+ * the C32 client RComm instance.
+ *
+ * @param aLength - Reference to client's buffer length variable
+ * @return KErrNone
+ */
+	{
+	_LOG_L4C2( "CPortC32Interface::QueryReceiveBuffer [port=%d]", GetPortNumber());
+
+	aLength = 0;
+	if (iReadBuf)
+		{
+		aLength = iReadBuf->iMsg.Length();
+		_LOG_L4C2("iReadBuf aLength=%d", aLength);
+		}
+	else if (!iFramesWaitingToBeReadList.IsEmpty())
+		{
+		CCsyMsgBufBpFrame* frame = iFramesWaitingToBeReadList.First();
+		if ((frame)&&(frame->iMsg.Length() >= (KAdvOptionHeaderSize + KChecksumSize)))
+			{
+#ifdef _27010ADVANCEOPTION
+			aLength = frame->iMsg.Length() - (KAdvOptionHeaderSize + KChecksumSize);
+#else
+			aLength = frame->iMsg.Length() - (KBasicOptionHeaderSize + KChecksumSize);
+#endif
+			_LOG_L4C2("iFramesWaitingToBeReadList aLength=%d", aLength);
+			}
+		}
+
+	return KErrNone;
+	}
+
+void CPortC32Interface::ResetBuffers(TUint aFlags)
+/**
+ * Called by C32 when the client requests to reset the buffers,
+ * by removing all receive and/or transmit messages according to
+ * the specified flags.
+ *
+ * @param aFlags Indicate which buffers (receive and/or transmit) should be reset
+ */
+	{
+	_LOG_L4C2(">>CPortC32Interface::ResetBuffers [aFlags=%d]", aFlags);
+	_LOG_L4C2("[port=%d]", GetPortNumber());
+
+	if (aFlags & KCommResetRx)
+		{
+		_LOG_L4C1("Removing all messages intended for the C32 client");
+
+		RemoveWaitingAllFrames();
+		}
+
+	if (aFlags & KCommResetTx)
+		{
+		_LOG_L4C1("Removing all messages intended for the modem");
+
+		GetMuxChannel()->WriteCancel();
+		}
+
+	_LOG_L4C1("<<CPortC32Interface::ResetBuffers");
+	}
+
+void CPortC32Interface::SendFrameToClient(CCsyMsgBufBpFrame* aFrame)
+/**
+ * This method is called by a CSY Channel object when it has a single
+ * frame to send to a C32 client RComm object.
+ *
+ * @param aFrame - Pointer to message to send to client
+ */
+	{
+	_LOG_L4C2( "CPortC32Interface::SendFrameToClient [port=%d]", GetPortNumber());
+
+	if (aFrame)
+		{
+		// check if queue is empty
+		TBool trigger = iFramesWaitingToBeReadList.IsEmpty();
+
+		iFramesWaitingToBeReadList.AddLast(*aFrame);
+		if (trigger)
+			{
+			_LOG_L4C1("No packets already waiting");
+			if (iIsReadInProgress)
+				{
+				_LOG_L4C1("A read is outstanding");
+				ReadFromBufOrQueue();
+				}
+			}
+
+		// inform client new data is available
+		SetDataAvailable();
+		}
+	else
+		{
+		//MAF __ASSERT_DEBUG(EFalse, PANIC(KPanicIllegalState));
+		}
+	}
+
+TBool CPortC32Interface::ReadFromBufOrQueue()
+/**
+ * This method is called to read from buffer or the frame list
+ * It will read as much as possible.
+ *
+ * @return ETrue if complete the read request
+ */
+	{
+	_LOG_L4C2( ">>CPortC32Interface::ReadFromBufOrQueue [port=%d]",GetPortNumber());
+
+	TBool completedTheReadRequest = EFalse;
+
+	TInt err = KErrGeneral;
+	TBool cont;
+	do
+		{
+		cont = EFalse;
+		if(iReadBuf==NULL)
+			{
+			//Read data from the frame list
+			if (!iFramesWaitingToBeReadList.IsEmpty())
+				{
+				_LOG_L4C1("Set to first item");
+				iReadBuf = iFramesWaitingToBeReadList.First();
+				if (iReadBuf)
+					{
+					_LOG_L4C1("iReadBuf not null");
+					// remove msg buf from client list
+					iFramesWaitingToBeReadList.Remove(*iReadBuf);
+
+					// subtract checksum field
+					TInt frameLength = iReadBuf->iMsg.Length();
+					_LOG_L4C2("New read buffer frameLength=%d",frameLength);
+
+					if (frameLength >= KBasicOptionHeaderSize)
+						{
+						iReadBuf->iMsg.SetLength(frameLength - KChecksumSize);
+
+						// remove leading header ints from frame
+#ifdef _27010ADVANCEOPTION
+						iReadBuf->iMsg.Delete(0, KAdvOptionHeaderSize);
+#else
+						iReadBuf->iMsg.Delete(0, KBasicOptionHeaderSize);
+#endif
+						}
+					else
+						{
+						_LOG_L4C1("Incorrect frame size - freeing read buffer");
+						iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(iReadBuf);
+						iReadBuf = NULL;
+						}
+					}
+				}
+			}
+		if (iReadBuf)
+			{
+			TInt length = -1;
+			if (iClientLength - iPos < iReadBuf->iMsg.Length())
+				{
+				length = iClientLength - iPos;
+				_LOG_L4C2("length = %d",length);
+				}
+
+			if (iConfig.iTerminatorCount > 0)
+				{
+				_LOG_L4C2("iTerminatorCount = %d",iConfig.iTerminatorCount);
+
+				// First find terminator
+				TInt terminatorLoc = -1;
+				TInt loc;
+				for (TInt i=0; i< iConfig.iTerminatorCount;i++)
+					{
+					loc = iReadBuf->iMsg.LocateF(iConfig.iTerminator[i]);
+					if (loc > KErrNotFound)
+						{
+						if (terminatorLoc == KErrNotFound)
+							{
+							terminatorLoc = loc;
+							}
+						else
+							{
+							terminatorLoc = Min(loc,terminatorLoc);
+							}
+						}
+					}
+				if (terminatorLoc>KErrNotFound)
+					{
+					if (length > KErrNotFound)
+						length = Min(terminatorLoc + 1,length);
+					else
+						length = terminatorLoc + 1;
+					}
+				_LOG_L4C2("length = %d",length);
+				}
+
+			_LOG_L4C2("Read buf length %d",iReadBuf->iMsg.Length());
+
+			if ((iReadBuf->iMsg.Length() >= length) && (length > -1))
+				{
+				_LOG_L2C2("complete partial read: # %d ", length);
+
+				iPartialReadBuf.Copy(&iReadBuf->iMsg[0], length);
+				iReadBuf->iMsg.Delete(0, length);
+
+				err = IPCWrite(iClientBuffer, iPartialReadBuf, iPos); 
+				if (err)
+					{
+					_LOG_L1C2("** IPCWrite Error %d **",err);
+					}
+
+				CompleteReadRequest(err);
+				err = KErrGeneral;
+
+				completedTheReadRequest = ETrue;
+				iPos = 0;
+
+				if (iReadBuf->iMsg.Length()==0)
+					{
+					_LOG_L4C1("All data used - freeing read buffer");
+					iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(iReadBuf);
+					iReadBuf = NULL;
+					}
+				}
+			else
+				{
+				err = IPCWrite(iClientBuffer, iReadBuf->iMsg, iPos);
+				if (err)
+					{
+					_LOG_L1C2("** IPCWrite Error %d **",err);
+					}
+
+				_LOG_L4C3( "Read: iPos = %d, add %d bytes", iPos, iReadBuf->iMsg.Length());
+
+				//try read next frame in the list
+				cont = ETrue; 
+				iPos += iReadBuf->iMsg.Length();
+
+				_LOG_L4C1("Freeing read buffer");
+				iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(iReadBuf);
+				iReadBuf = NULL;
+				}
+			}
+		}
+	while (cont);
+
+	if (iPos>0)
+		{
+		if (iOneOrMore)
+			{
+			CompleteReadRequest(err);
+			iPos = 0;
+			completedTheReadRequest = ETrue;
+			}
+		else 
+			{
+			//normal read and have not filled the buffer yet
+			_LOG_L4C3( "Not filled buffer yet iPos = %d, iClientLength = %d", iPos, iClientLength);
+			}
+		}
+
+	_LOG_L4C2( "<<CPortC32Interface::ReadFromBufOrQueue [completedTheReadRequest=%d]",completedTheReadRequest);
+	return completedTheReadRequest;
+	}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/PortC32InterfaceBase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1002 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the CPortC32Interface class.
+// *               This class contains methods which are invoked by C32 when the
+// *               associated client RComm public API is invoked. These methods
+// *               are used to create, configure, read, write, and close logical
+// *               serial ports. Instances of this class are created by the CSY's
+// *               Port Factory.
+//
+
+/** @file PortC32InterfaceBase.cpp
+ * This file contains the implementation for the CPortC32InterfaceBase class.
+ * This base class contains methods which are invoked by C32 when the
+ * associated client RComm public API is invoked. These methods
+ * are used to create, configure, read, write, and close logical
+ * serial ports. Instances of this class are created by the CSY's
+ * Port Factory.
+ */
+
+#include <cdbcols.h>
+
+#include "PortC32InterfaceBase.h"
+#include "Portfactory.h"
+#include "Mux0710Protocol.h"
+#include "CsyMsgBufBPFrame.h"
+#include "ChannelMgrCmdData.h"
+#include "CommFrameReaderAo.h"
+#include "CsyDebugLogger.h"
+
+CPortC32InterfaceBase::CPortC32InterfaceBase(CPortFactory& aPortFactory,
+									 CPortFactory::TC32PortInfo& aPortInfo)
+/**
+ * Constructor.
+ *
+ * @param aPortFactory - Reference to the port factory
+ * @param aPortInfo - Reference to the port information
+ */
+ : CPort(),
+ 	iFramesWaitingToBeReadList(_FOFF(CCsyMsgBufBpFrame, iMsgLink)),
+    iFramesWaitingToBeReadIter(iFramesWaitingToBeReadList),
+    iRole(ECommRoleDTE),
+	iPortFactory(aPortFactory),
+	iPortInfo(aPortInfo)
+	{}
+
+void CPortC32InterfaceBase::ConstructL()
+/**
+ * Base construction for channels
+ */
+	{
+	_LOG_L4C1("CPortC32InterfaceBase::ConstructL");
+
+	// create active objects to handle events
+	iConfig.iTerminatorCount = 0;
+	}
+
+CPortC32InterfaceBase::~CPortC32InterfaceBase()
+/**
+ * Destructor.
+ */
+	{
+	_LOG_L4C1(">>CPortC32InterfaceBase::~CPortC32InterfaceBase");
+
+	// remove all frames from queue and delete
+	RemoveWaitingAllFrames(EFalse);
+
+	if (iMuxChannel)
+		iMuxChannel->Close(this);
+
+	_LOG_L4C1("<<CPortC32InterfaceBase::~CPortC32InterfaceBase");
+	}
+
+void CPortC32InterfaceBase::RemoveWaitingAllFrames(TBool aAddToFreeList)
+/**
+ * 
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::RemoveWaitingAllFrames [aAddToFreeList=%d]",
+		aAddToFreeList);
+
+	CCsyMsgBufBpFrame* frame = NULL;
+	iFramesWaitingToBeReadIter.SetToFirst();
+	while ((frame = iFramesWaitingToBeReadIter++) != NULL)
+		{
+		iFramesWaitingToBeReadList.Remove(*frame);
+		if (aAddToFreeList)
+			iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(frame);
+		else
+			delete frame;
+		}
+	}
+
+/********************************************************************************/
+/*                       Start of methods from CPort                            */
+/********************************************************************************/
+
+void CPortC32InterfaceBase::NotifySignalChange(TUint aSignalMask)
+/**
+ * Called by C32 when the client requests NotifySignalChange.
+ *
+ * @param aSignal
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifySignalChange [port=%d]", GetPortNumber());
+
+	TUint reqSigs = aSignalMask & ~KSignalBreak;
+	if (!reqSigs)
+		{
+		// User has only asked to be notified of break.
+		SignalChangeCompleted(iSignals, KErrArgument);
+		return;
+		}
+	iSignalMask |= reqSigs;
+
+	iSignalChangeNotifyPending = ETrue;
+	}		   
+
+void CPortC32InterfaceBase::NotifySignalChangeCancel()
+/**
+ * Called by C32 when the client requests to cancel a NotifySignalChange 
+ * request.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifySignalChangeCancel [port=%d]", GetPortNumber());
+
+	iSignalMask &= (KSignalBreak);	// set mask to zero, excluding BREAK
+	if (iSignalChangeNotifyPending)
+		{
+		iSignalChangeNotifyPending = EFalse;
+		SignalChangeCompleted(iSignals, KErrCancel);
+		}
+	}
+
+void CPortC32InterfaceBase::StartRead(const TAny* aClientBuffer, TInt aLength)
+/**
+ * This method is called by C32 to read data from the CSY in response to a 
+ * read request by a client RComm object.
+ *
+ * @param aClientBuffer - Pointer to where to put the new data
+ * @param aLength - Length of data to read
+ */
+	{
+	_LOG_L4C1(" "); // please leave in this separator
+	_LOG_L4C3(">>CPortC32InterfaceBase::StartRead [aLength=%d, port=%d] called by client",
+			 aLength, GetPortNumber());
+
+	if (iIsReadInProgress)
+		{
+		// Something has gone wrong - either the flag was not reset correctly
+		// or C32 has lost track of a read
+		// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState));
+		_LOG_L1C1("** Read waiting to complete already set **");
+		}
+
+	// Set the flag that there is a read request outstanding
+	iIsReadInProgress = ETrue;
+
+	if (aLength == 0)
+		{
+		_LOG_L3C1("<<CPortC32InterfaceBase::StartRead - Length of 0?");
+		CompleteReadRequest(KErrArgument);
+		return;
+		}
+
+	// save client info
+	iClientBuffer = (TAny*) aClientBuffer;
+	iPos = 0;
+
+	if (aLength > 0)
+		{
+		_LOG_L3C1("Normal read");
+		iClientLength = aLength;
+		iOneOrMore = EFalse;
+		}
+	else
+		{
+		_LOG_L3C1("Read one or more");
+		iClientLength = -aLength;
+		iOneOrMore = ETrue;
+		}
+
+	if(!ReadFromBufOrQueue())
+		{
+		_LOG_L3C1("No data to be read - request is outstanding");
+		}
+
+	_LOG_L4C1("<<CPortC32InterfaceBase::StartRead");
+	_LOG_L4C1(" "); // please leave in this separator
+	}
+
+void CPortC32InterfaceBase::StartWrite(const TAny* aClientBuffer, TInt aLength)
+/**
+ * This method is called by C32 to write data to the CSY in response to a 
+ * write request by a client RComm object.
+ *
+ * @param aClientBuffer - Pointer to where to put the new data
+ * @param aLength - Length of data to read
+ */
+	{
+	_LOG_L4C1(" "); // please leave in this separator
+	_LOG_L4C3(">>CPortC32InterfaceBase::StartWrite [aLength=%d, port=%d] called by client",
+			 aLength, GetPortNumber());
+
+	if (iIsWriteInProgress)
+		{
+		// Something has gone wrong - either the flag was not reset correctly
+		// or C32 has lost track of a write
+		// MAF __ASSERT_DEBUG(EFalse,PANIC(KPanicIllegalState));
+		_LOG_L1C1("** Write already waiting to complete **");
+		iIsWriteInProgress = EFalse;
+		}
+
+	iIsWriteInProgress = ETrue;
+
+	if (aLength > 0)
+		{
+		// Get the outgoing message buffer for this dlc/port
+		TDes8& buffer = iMuxChannel->RefToMsgBuffer();
+
+		// zero the buffer
+		buffer.Zero();
+
+		// read data from client's address space
+		TInt err = IPCRead(aClientBuffer, buffer); 
+		if (err == KErrNone)
+			{
+			iMuxChannel->SetOwner(this);
+			err = iMuxChannel->PlaceOnOutboundQueue();
+			}
+		else
+			{
+			_LOG_L1C2("** Read of client buffer failed [err=%d] **",err);
+			}
+
+		if (err)
+			{
+			CompleteWriteRequest(err);
+			}
+		}
+	else
+		{
+		// no data to write is not an error, so just complete
+		CompleteWriteRequest(KErrNone);
+		}
+
+	_LOG_L4C1("<<CPortC32InterfaceBase::StartWrite");
+	_LOG_L4C1(" "); // please leave in this separator
+	}
+
+void CPortC32InterfaceBase::Destruct()
+/**
+ * Called by C32 in response to a client Close request.
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceBase::Destruct [port=%d]", GetPortNumber());
+
+	// C32 requires us to do this here.
+	delete this;
+
+	_LOG_L4C1("<<CPortC32InterfaceBase::Destruct()");
+	}
+
+TInt CPortC32InterfaceBase::SetConfig(const TDesC8& aConfiguration)
+/**
+ * Called by C32 in response to a client calling RComm::SetConfig().
+ * This method is used by the client to tell the CSY what parameters
+ * are needed to instantiate the lower-level driver.
+ * Note that the CSY reads the config data from CommDb and bpcaps.ini
+ * and does not need or want the client to overwrite the config
+ * parameters.
+ *
+ * @param aConfiguration - Descriptor containing the config params
+ * @return KErrNone
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetConfig [port=%d]",iPortInfo.iPortNumber);
+
+    TCommConfigV01 c;
+
+    Mem::FillZ(&c,sizeof(c));
+	TInt len=Min(aConfiguration.Length(),sizeof(c));
+	Mem::Copy(&c, aConfiguration.Ptr(),len);
+
+	if(c.iTerminatorCount > KConfigMaxTerminators)
+		{
+		return KErrNotSupported;
+		}
+	else
+		{
+		for (TInt i=0; i < c.iTerminatorCount;i++)
+			{
+			_LOG_L4C2("Terminator: %d" ,c.iTerminator[i]);
+			}
+		}
+
+	iConfig = c;
+	//we will only use Terminators of this configure
+	return KErrNone;
+	}
+
+void CPortC32InterfaceBase::ReadCancel()
+/**
+ * Called by C32 when the client requests to cancel a Read.
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceBase::ReadCancel [port=%d]", GetPortNumber());
+
+	iClientBuffer = NULL;
+	iClientLength = 0;
+
+	CompleteReadRequest(KErrCancel);
+
+	_LOG_L4C1("<<CPortC32InterfaceBase::ReadCancel()");
+	}
+
+void CPortC32InterfaceBase::WriteCancel()
+/**
+ * Called by C32 when the client requests to cancel a write operation.
+ * Empty the mux queue of a possible message that is destined for the 
+ * baseband on the channel associated with this C32 port interface
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::WriteCancel [port=%d]", GetPortNumber());
+
+	iMuxChannel->WriteCancel();
+
+	CompleteWriteRequest(KErrCancel);
+	}
+
+/*****************************************************************************/
+// Functions below here are the C32 pure virtuals which must be implemented  //
+// by the CSY, but may not be supported by the CSY.                          //
+/*****************************************************************************/
+
+void CPortC32InterfaceBase::Break(TInt /*aTime*/)
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ *
+ * @param aTime
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::Break [port=%d]", GetPortNumber());
+	}
+
+void CPortC32InterfaceBase::BreakCancel()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::BreakCancel [port=%d]", GetPortNumber());
+	}
+
+TInt CPortC32InterfaceBase::GetConfig(TDes8& /*aPackage*/) const
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ * @param aPackage - Reference to package
+ * @return KErrNotSupported
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::GetConfig [port=%d]", GetPortNumber());
+	return KErrNotSupported;
+	}
+
+TInt CPortC32InterfaceBase::SetServerConfig(const TDesC8& /*aPackage*/)
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ * @param aPackage - Reference to package
+ * @return KErrNotSupported
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetServerConfig [port=%d]", GetPortNumber());
+	return KErrNotSupported;
+	}
+
+TInt CPortC32InterfaceBase::GetServerConfig(TDes8& /*aPackage*/)
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ * @param aPackage - Reference to package
+ * @return KErrNotSupported
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::GetServerConfig [port=%d]", GetPortNumber());
+	return KErrNotSupported;
+	}
+
+TInt CPortC32InterfaceBase::GetCaps(TDes8& aPackage)
+/**
+ * Called by C32.
+ * @param aPackage - Reference to package
+ * @return KErrNone
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::GetCaps [port=%d]", GetPortNumber());
+
+	// create a Package pointer
+	TCommCaps* pckg = (TCommCaps*) &aPackage;
+
+	// create a V01 reference
+	TCommCapsV01& caps = (*pckg)();
+
+	// fill in the capabilities
+	caps.iRate       = KCapsBps19200 | KCapsBps115200;
+
+	caps.iDataBits   = KCapsData8;
+	caps.iStopBits   = KCapsStop1;
+	caps.iParity     = KCapsParityNone;
+	caps.iHandshake  = KCapsSignalCTSSupported |
+		               KCapsSignalDSRSupported |
+					   KCapsSignalDCDSupported |
+					   KCapsSignalRTSSupported |
+					   KCapsSignalDTRSupported;
+	caps.iSignals    = KCapsObeyCTSSupported | KCapsObeyDSRSupported;
+	caps.iFifo       = KCapsHasFifo;
+	caps.iSIR        = KCapsSIR115kbps;
+
+	// TCommCapsV02 support
+	if (aPackage.Length()==sizeof(TCommCapsV02))
+		{
+		TCommCapsV02* commcaps = (TCommCapsV02*)(aPackage.Ptr());
+		commcaps->iNotificationCaps = 
+			KNotifyFlowControlChangeSupported |
+			KNotifyDataAvailableSupported;
+		commcaps->iFlowControlCaps = KCapsFlowControlStatusSupported;
+		}
+
+	return KErrNone;
+	}
+
+TInt CPortC32InterfaceBase::GetSignals(TUint& aSignals)
+/**
+ * get the status of the signal pins
+ *
+ * @param aSignals signals will be written to this descriptor
+ * @return KErrNone always
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::GetSignals [port=%d]", GetPortNumber());
+	aSignals = iSignals;
+	return KErrNone;
+	}
+
+TInt CPortC32InterfaceBase::SetSignalsToMark(TUint aSignals)
+/**
+ * set selected signals to high (logical 1)
+ *
+ * @param aSignals bitmask with the signals to be set
+ * @return KErrNone always
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetSignalsToMark [port=%d]", GetPortNumber());
+
+	TInt ret = KErrNone;
+	TUint alreadySent = iSentSignals & aSignals;
+	if (alreadySent == aSignals)
+		{
+		_LOG_L4C1("Signals already set to high");
+		}
+	else
+		{
+		TUint temp = iSentSignals | aSignals;
+		ret = SetV24Signals(temp);
+		if (ret == KErrNone)
+			{
+			iSentSignals = temp;
+			_LOG_L4C2("iSentSignals 0x%08x",iSentSignals);
+			}
+		}
+	
+	return ret;
+	}
+
+TInt CPortC32InterfaceBase::SetSignalsToSpace(TUint aSignals)
+/**
+ * set selected signals to low (logical 0)
+ *
+ * @param aSignals bitmask with the signals to be cleared
+ * @return KErrNone always
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetSignalsToSpace [port=%d]", GetPortNumber());
+
+	TInt ret = KErrNone;
+	TUint change = iSentSignals & aSignals;
+	if (change)
+		{
+		TUint temp = iSentSignals & ~aSignals;
+		ret = SetV24Signals(temp);
+		if (ret == KErrNone)
+			{
+			iSentSignals = temp;
+			_LOG_L4C2("iSentSignals 0x%08x",iSentSignals);
+			}
+		}
+	else
+		{
+		_LOG_L4C1("Signals already set to low");
+		}
+	
+	return ret;
+	}
+
+TInt CPortC32InterfaceBase::GetReceiveBufferLength(TInt& aLength) const
+/**
+ * Called by C32.
+ * @param aLength
+ * @return KErrNone
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::GetReceiveBufferLength [port=%d]", GetPortNumber());
+
+	aLength = KMaxIpPacketSize;
+	return KErrNone;
+	}
+
+TInt CPortC32InterfaceBase::SetReceiveBufferLength(TInt /*aLength*/)
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ * @param aLength
+ * @return KErrNotSupported
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetReceiveBufferLength [port=%d]", GetPortNumber());
+	return KErrNotSupported;
+	}
+
+void CPortC32InterfaceBase::NotifyConfigChange()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyConfigChange [port=%d]", GetPortNumber());
+ 	}
+
+void CPortC32InterfaceBase::NotifyDataAvailable()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyDataAvailable [port=%d]", GetPortNumber());
+
+	iDataAvailableNotifyPending = ETrue;
+	}
+
+void CPortC32InterfaceBase::NotifyDataAvailableCancel()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyDataAvailableCancel [port=%d]", GetPortNumber());
+
+	if (iDataAvailableNotifyPending)
+		{
+		iDataAvailableNotifyPending = EFalse;
+		NotifyDataAvailableCompleted(KErrCancel);
+		}
+	}
+
+void CPortC32InterfaceBase::NotifyConfigChangeCancel()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyConfigChangeCancel [port=%d]", GetPortNumber());
+	}
+
+void CPortC32InterfaceBase::NotifyFlowControlChange()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L3C2("CPortC32InterfaceBase::NotifyFlowControlChange [port=%d]", GetPortNumber());
+
+	iFlowControlNotifyPending = ETrue;
+	}
+
+void CPortC32InterfaceBase::NotifyFlowControlChangeCancel()
+/**
+ * Called by C32 to cancel a previous notification request.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyFlowControlChangeCancel [port=%d]", GetPortNumber());
+
+	if (iFlowControlNotifyPending)
+		{
+		iFlowControlNotifyPending = EFalse;
+		FlowControlChangeCompleted(iCsyAllowedToSendFrames, KErrCancel);
+		}
+	}
+
+void CPortC32InterfaceBase::NotifyBreak()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyBreak [port=%d]", GetPortNumber());
+	}
+
+void CPortC32InterfaceBase::NotifyBreakCancel()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyBreakCancel [port=%d]", GetPortNumber());
+	}
+
+void CPortC32InterfaceBase::NotifyOutputEmpty()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyOutputEmpty [port=%d]", GetPortNumber());
+	}
+
+void CPortC32InterfaceBase::NotifyOutputEmptyCancel()
+/**
+ * Called by C32.
+ * Note that this method is not supported.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::NotifyOutputEmptyCancel [port=%d]", GetPortNumber());
+	}
+
+TInt CPortC32InterfaceBase::GetFlowControlStatus(TFlowControl& aFlowControl)
+/**
+ * Called by C32 to return the port's flow control state.
+ *
+ * @param aFlowControl Reference to location to write the flow control value
+ * @return KErrNone
+ */
+	{
+	_LOG_L3C2("CPortC32InterfaceBase::GetFlowControlStatus [Port=%d]", GetPortNumber());
+
+	aFlowControl = EFlowControlOff;
+	if ((iCsyAllowedToSendFrames == EFlowControlOn) ||
+		(iMuxChannel->CsyToModemFlowControl() == EFlowControlOn))
+		aFlowControl = EFlowControlOn;
+
+	return KErrNone;
+	}
+
+TInt CPortC32InterfaceBase::GetRole(TCommRole& aRole)
+/**
+ * Called by C32 to return the port's role. The role will be either
+ * DTE or DCE.
+ * @param aRole - Reference to location to write the port role (DTE or DCE).
+ * @return KErrNone
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::GetRole [port=%d]", GetPortNumber());
+
+	aRole = iRole;  // or get from RDevComm instance ???
+	return KErrNone;
+	}
+
+TInt CPortC32InterfaceBase::SetRole(TCommRole aRole)
+/**
+ * Called by C32 to set the port role to either DTE or DCE.
+ * @param aRole - DTE or DCE
+ * @return KErrNone.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetRole [aRole=%d]", aRole);
+
+#if defined _DEBUG
+	if (aRole == ECommRoleDTE)
+		{
+		_LOG_L4C2("CPortC32InterfaceBase::SetRole() - DTE for Port %d", iPortInfo.iPortNumber);
+		}
+	else if (aRole == ECommRoleDCE)
+		{
+		_LOG_L4C2("CPortC32InterfaceBase::SetRole() - DCE for Port %d", iPortInfo.iPortNumber);
+		}
+	else
+		{
+		_LOG_L4C3("CPortC32InterfaceBase::SetRole() - Unknown Role %d for Port %d", aRole, iPortInfo.iPortNumber);
+		}
+#endif
+
+	iRole = aRole;
+	return KErrNone;
+	}
+
+
+void CPortC32InterfaceBase::FreeMemory()
+/**
+ * Called by C32 when the client wishes the CSY to free some memory. 
+ * Note that this method does nothing. The CSY uses statically-allocated 
+ * memory. In principle there is no memory that can be freed within the CSY.
+ *
+ *
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::FreeMemory [port=%d]", GetPortNumber());
+
+	// MAF missing functionality
+	}
+
+/********************************************************************************/
+/*                       End of methods from CPort                              */
+/********************************************************************************/
+
+void CPortC32InterfaceBase::CompleteWriteRequest(TInt aStatus)
+/**
+ * This method is called by the CSY object writing to the LDD and is used to
+ * signal C32 that its message has been sent to the BP.  C32 is now free to
+ * write another message to the CSY on this port interface.
+ * @param aStatus - Status of message write to BP
+ *
+ */
+	{
+	_LOG_L4C3("CPortC32InterfaceBase::CompleteWriteRequest [aStatus=%d, Port=%d]", aStatus, GetPortNumber());
+
+	if (iIsWriteInProgress)
+		{
+		iIsWriteInProgress = EFalse;
+		WriteCompleted(aStatus);
+		}
+	else
+		{
+		_LOG_L3C1("* No write outstanding to complete *");
+		}
+	}
+
+void CPortC32InterfaceBase::CompleteReadRequest(TInt aStatus)
+/**
+ * This method is called to complete the C32 client's read request.
+ *
+ * @param aStatus - Status read result
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::CompleteReadRequest [aStatus=%d]", aStatus);
+
+	if (iIsReadInProgress)
+		{
+		iIsReadInProgress = EFalse;
+		ReadCompleted(aStatus);
+		}
+	else
+		{
+		_LOG_L3C1("* No read outstanding to complete *");
+		}
+	}
+
+void CPortC32InterfaceBase::Shutdown()
+/**
+ * Returns all the used memory 
+ *
+ *
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::Shutdown [port=%d]", GetPortNumber());
+
+	// MAF missing functionality
+	}
+
+void CPortC32InterfaceBase::ModemAndCsyToClientFlowCtrl(const TFlowControl aFlowControl)
+/**
+ * This method is called to update the port's flow control state.
+ * If a notification is pending then complete it.
+ * @param aFlowControl New flow control state
+ *
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::ModemAndCsyToClientFlowCtrl [aFlowControl=%d]", aFlowControl);
+	_LOG_L4C2("[port=%d]", GetPortNumber());
+
+	if (iCsyAllowedToSendFrames != aFlowControl)
+		{
+		iCsyAllowedToSendFrames = aFlowControl;
+		if (iFlowControlNotifyPending)
+			{
+			iFlowControlNotifyPending = EFalse;
+			FlowControlChangeCompleted(iCsyAllowedToSendFrames, KErrNone);
+			}
+		}
+	}
+
+TInt CPortC32InterfaceBase::SetV24Signals(const TUint aRs232Signals)
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetV24Signals [aRs232Signals=0x%08x]",
+		aRs232Signals);
+	_LOG_L4C2("port=%d", GetPortNumber());
+
+	// From 27.010 Sending
+	//
+	// Bit number/name	DTE			DCE
+	//
+	// 3, RTC			DTR			DSR
+	// 4, RTR			RTS			CTS	
+	// 7, IC			always 0	RI
+	// 8, DV			always 1	DCD
+
+	TUint8 v24signals = 0;
+	if (iRole == ECommRoleDTE)
+		{
+		_LOG_L3C1("DTE sending entity");
+
+		if (aRs232Signals & KSignalDTR)
+			{
+			_LOG_L3C1("DTR set (setting RTC)");
+			v24signals |= KV24SignalRTC;
+			}
+
+		if (aRs232Signals & KSignalRTS)
+			{
+			_LOG_L3C1("RTS set (setting RTR)");
+			v24signals |= KV24SignalRTR;
+			}
+
+		// DV always 1
+		v24signals |= 0x80;
+		}
+	else if (iRole == ECommRoleDCE)
+		{
+		_LOG_L3C1("DCE sending entity");
+
+		if (aRs232Signals & KSignalDSR)
+			{
+			_LOG_L3C1("DSR set (setting RTC)");
+			v24signals |= KV24SignalRTC;
+			}
+
+		if (aRs232Signals & KSignalCTS)
+			{
+			_LOG_L3C1("CTS set (setting RTR)");
+			v24signals |= KV24SignalRTR;
+			}
+
+		if (aRs232Signals & KSignalRNG)
+			{
+			_LOG_L3C1("RNG set (setting IC)");
+			v24signals |= KV24SignalIC;
+			}
+
+		if (aRs232Signals & KSignalDCD)
+			{
+			_LOG_L3C1("DCD set (setting DV)");
+			v24signals |= KV24SignalDV;
+			}
+		}
+	else
+		{
+		_LOG_L3C1("** Unknown role **");
+		}
+
+	return iMuxChannel->SendMscCommand(v24signals);
+	}
+
+void CPortC32InterfaceBase::ReceivedV24Signals(const TUint8 aV24Signals)
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::ReceivedV24Signals [aV24Signals=0x%x]",
+		aV24Signals);
+	_LOG_L4C2("port=%d", GetPortNumber());
+
+	// From 27.010 Receiving (mapping from control signal octet)
+	//
+	// Bit number/name	DTE		DCE
+	// 	
+	// 3, RTC			DSR		DTR
+	// 4, RTR			CTS		RFR/RTS
+	// 7, IC			RI		-ignored
+	// 8, DV			DCD		-ignored
+
+	TUint signals = 0;
+	if (iRole == ECommRoleDTE)
+		{
+		_LOG_L3C1("DTE receiving entity");
+
+		// RTC (bit 3)
+		if (aV24Signals & KV24SignalRTC)
+			{
+			_LOG_L3C1("Device ready to communicate (setting DSR)");
+			signals |= KSignalDSR;
+			}
+		// RTR (bit 4)
+		if (aV24Signals & KV24SignalRTR)
+			{
+			_LOG_L3C1("Device ready to receive (setting CTS)");
+			signals |= KSignalCTS;
+			}
+		// IC (bit 7)
+		if (aV24Signals & KV24SignalIC)
+			{
+			_LOG_L3C1("Incoming call (setting RNG)");
+			signals |= KSignalRNG;
+			}
+		// DV (bit 8)
+		if (aV24Signals & KV24SignalDV)
+			{
+			_LOG_L3C1("Data valid (setting DCD)");
+			signals |= KSignalDCD;
+			}
+		}
+	else if (iRole == ECommRoleDCE)
+		{
+		_LOG_L3C1("DCE receiving entity");
+
+		// RTC (bit 3)
+		if (aV24Signals & KV24SignalRTC)
+			{
+			_LOG_L3C1("Device ready to communicate (setting DTR)");
+			signals |= KSignalDTR;
+			}
+		// RTR (bit 4)
+		if (aV24Signals & KV24SignalRTR)
+			{
+			_LOG_L3C1("Device ready to receive (setting RTS)");
+			signals |= KSignalRTS;
+			}
+		}
+	else
+		{
+		_LOG_L3C1("** Unknown role **");
+		}
+
+	signals &= iSignalMask;
+	if (signals != iSignals)
+		{
+		iSignals = signals;
+
+		// notification processing
+		if (iSignalChangeNotifyPending)
+			SignalChangeCompleted(iSignals, KErrNone);
+		}
+	}
+
+void CPortC32InterfaceBase::SetMuxChannel(CChannelMgrCmdData* aMuxChannel)
+/**
+ * This method sets the flow control state for the port object
+ * by reading the specified channel's flow control state.
+ * @param aMuxChannel - Pointer to the channel
+ *
+ */
+	{
+	iMuxChannel = aMuxChannel;
+	if (iMuxChannel != NULL)
+		{
+		ModemAndCsyToClientFlowCtrl(iMuxChannel->
+			GetModemAndCsyToClientFlowControl());
+		}
+	else
+		{
+		_LOG_L1C1("** SetMuxChannel - channel not ready **");
+		}
+	}
+
+void CPortC32InterfaceBase::SetDataAvailable()
+/**
+ * This method is called to set the port's data available state.
+ * If the data available notification is pending then complete it.
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceBase::SetDataAvailable [port=%d]", GetPortNumber());
+
+	if (iDataAvailableNotifyPending)
+		{
+		iDataAvailableNotifyPending = EFalse;
+		NotifyDataAvailableCompleted(KErrNone);
+		}
+	}
+
+void CPortC32InterfaceBase::CompleteOutstandingRequest()
+/**
+ * This method is called to complete an outstanding request.
+ * There can be read and write requests that are outstanding.
+ */
+	{
+	_LOG_L4C1("CPortC32InterfaceBase::CompleteOutstandingRequest");
+
+	if (iIsReadInProgress)
+		CompleteReadRequest(KErrCancel);
+
+	if (iIsWriteInProgress)
+		CompleteWriteRequest(KErrCancel);
+	}
+	
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/PortC32InterfaceIp.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,670 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the CPortC32Interface class.
+// *               This class contains methods which are invoked by C32 when the
+// *               associated client RComm public API is invoked. These methods
+// *               are used to create, configure, read, write, and close logical
+// *               serial ports. Instances of this class are created by the CSY's
+// *               Port Factory.
+//
+
+/** @file PortC32InterfaceIp.cpp
+ *
+ * This file contains the implementation for the CPortC32InterfaceIp class.
+ * This class contains methods which are invoked by C32 when the
+ * associated client RComm public API is invoked. These methods
+ * are used to create, configure, read, write, and close logical
+ * serial ports. Instances of this class are created by the CSY's
+ * Port Factory.
+ *
+ */
+
+#include <cdbcols.h>
+#include "PortC32InterfaceIp.h"
+#include "Portfactory.h"
+#include "Mux0710Protocol.h"
+#include "CsyMsgBufBPFrame.h"
+#include "ChannelMgrCmdData.h"
+#include "CommFrameReaderAo.h"
+#include "CsyDebugLogger.h"
+#include "CsyGlobals.h"
+#include "CommFrameWriterAo.h"
+
+CPortC32InterfaceIp* CPortC32InterfaceIp::NewL(CPortFactory& aPortFactory, 
+										   CPortFactory::TC32PortInfo& aPortInfo)
+/**
+ * This method uses two phase construction and the cleanup stack to create
+ * an instance of class CPortC32InterfaceIp.
+ *
+ * @param aPortFactory - Reference to the port factory
+ * @param aPortInfo - Reference to the port information
+ * @return Pointer to the created instance
+ */
+	{
+	_LOG_L4C1("CPortC32InterfaceIp::NewL");
+
+	CPortC32InterfaceIp* self =
+		new(ELeave) CPortC32InterfaceIp(aPortFactory, aPortInfo);
+
+	TCleanupItem closeSelf(CPortFactory::CloseObject, self);
+	CleanupStack::PushL(closeSelf);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+
+	return (self);
+	}
+
+CPortC32InterfaceIp::~CPortC32InterfaceIp()
+/**
+ * Destructor.
+ */
+	{
+	_LOG_L4C1(">>CPortC32InterfaceIp::~CPortC32InterfaceIp");
+
+	_LOG_L3C1("Remove port from the port factory");
+
+	// let port factory know we are deleted
+	iPortFactory.RemoveC32Port(this);
+	CompleteOutstandingRequest();
+
+	_LOG_L3C1("Release any packets going to the C32 client");
+
+	// remove all frames to do with the most recent IP packet
+	CCsyMsgBufBpFrame* ipPacketFrame = NULL;
+	iFramesReceivedForIpPacketIter.SetToFirst();
+	while ((ipPacketFrame = iFramesReceivedForIpPacketIter++) != NULL)
+		{
+		iFramesReceivedForIpPacket.Remove(*ipPacketFrame);
+		delete ipPacketFrame;
+		}
+
+	_LOG_L4C1("<<CPortC32InterfaceIp::~CPortC32InterfaceIp");
+	}
+
+CPortC32InterfaceIp::CPortC32InterfaceIp(CPortFactory& aPortFactory,
+									 CPortFactory::TC32PortInfo& aPortInfo)
+/**
+ * Constructor.
+ *
+ * @param aPortFactory - Reference to the port factory
+ * @param aPortInfo - Reference to the port information
+ */
+: CPortC32InterfaceBase(aPortFactory, aPortInfo),
+   iFramesReceivedForIpPacket(_FOFF(CCsyMsgBufBpFrame, iMsgLink)),
+   iFramesReceivedForIpPacketIter(iFramesReceivedForIpPacket)
+	{}
+
+void CPortC32InterfaceIp::ConstructL()
+/**
+ * Safe constructor
+ */
+	{
+	_LOG_L4C1(">>CPortC32InterfaceIp::ConstructL");
+
+	CPortC32InterfaceBase::ConstructL();
+
+	_LOG_L4C1("<<CPortC32InterfaceIp::ConstructL");
+	}
+
+/********************************************************************************/
+/*               Start of utility methods for CPortC32InterfaceBase             */
+/********************************************************************************/
+
+TInt CPortC32InterfaceIp::QueryReceiveBuffer(TInt& aLength) const
+/**
+ * Called by C32 when the client queries the size of the receive buffer,
+ * which returns the number of receive characters available to be read by
+ * the C32 client RComm instance.
+ *
+ * @param aLength - Reference to client's buffer length variable
+ * @return KErrNone
+ */
+	{
+	_LOG_L4C2("CPortC32InterfaceIp::QueryReceiveBuffer [port=%d]", GetPortNumber());
+
+	aLength = 0;
+
+	// MAF
+
+	return KErrNone;
+	}
+
+void CPortC32InterfaceIp::ResetBuffers(TUint aFlags)
+/**
+ * Called by C32 when the client requests to reset the buffers,
+ * by removing all receive and/or transmit messages according to
+ * the specified flags.
+ *
+ * @param aFlags Indicate which buffers (receive and/or transmit) should be reset
+ */
+	{
+	_LOG_L4C3(">>CPortC32InterfaceIp::ResetBuffers [aFlags=%d,port=%d]",
+		aFlags,GetPortNumber());
+
+	if (aFlags & KCommResetRx)
+		{
+		_LOG_L4C1("Removing all messages intended for the C32 client");
+
+		RemoveWaitingAllFrames();
+
+		// remove all frames to do with the most recent IP packet
+		CCsyMsgBufBpFrame* ipPacketFrame = NULL;
+		iFramesReceivedForIpPacketIter.SetToFirst();
+		while ((ipPacketFrame = iFramesReceivedForIpPacketIter++) != NULL)
+			{
+			iFramesReceivedForIpPacket.Remove(*ipPacketFrame);
+			delete ipPacketFrame;
+			}
+		}
+
+	if (aFlags & KCommResetTx)
+		{
+		_LOG_L4C1("Removing all messages intended for the modem");
+
+		GetMuxChannel()->WriteCancel();
+		}
+
+	_LOG_L4C1("<<CPortC32InterfaceIp::ResetBuffers");
+	}
+
+void CPortC32InterfaceIp::PlaceIpPacketFramesOntoFreeList()
+/**
+ * Place all frames to do with recent IP packet onto free list
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceIp::PlaceIpPacketFramesOntoFreeList [port=%d]", GetPortNumber());
+
+	CCsyMsgBufBpFrame* frame = NULL;
+	iFramesReceivedForIpPacketIter.SetToFirst();
+	while ((frame = iFramesReceivedForIpPacketIter++) != NULL)
+		{
+		iFramesReceivedForIpPacket.Remove(*frame);
+		iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(frame);
+		}
+	iCurrentIpPacketLength = 0;
+
+	_LOG_L4C1("<<CPortC32InterfaceIp::PlaceIpPacketFramesOntoFreeList");
+	}
+
+void CPortC32InterfaceIp::PlaceIpPacketFramesOntoReadList()
+/**
+ * Place all frames to do with recent IP packet onto read list
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceIp::PlaceIpPacketFramesOntoReadList [port=%d]", GetPortNumber());
+
+	CCsyMsgBufBpFrame* frame = NULL;
+	iFramesReceivedForIpPacketIter.SetToFirst();
+	while ((frame = iFramesReceivedForIpPacketIter++) != NULL)
+		{
+		iFramesReceivedForIpPacket.Remove(*frame);
+		iFramesWaitingToBeReadList.AddLast(*frame);
+		}
+	iCurrentIpPacketLength = 0;
+	iNumberOfPacketsWaiting++;
+	_LOG_L4C2("iNumberOfPacketsWaiting=%d",iNumberOfPacketsWaiting);
+
+	if (iNumberOfPacketsWaiting == KMaxPacketsOutstandingForC32Client)
+		{
+		_LOG_L2C1("Client appears to be slow at reading");
+		_LOG_L2C3("iNumberOfPacketsWaiting %d > KMaxPacketsOutstandingForC32Client %d)",
+			iNumberOfPacketsWaiting,KMaxPacketsOutstandingForC32Client);
+
+		iMuxChannel->SetCsyToModemFlowControl(EFlowControlOn);
+		}
+
+	_LOG_L4C1("<<CPortC32InterfaceIp::PlaceIpPacketFramesOntoReadList");
+	}
+
+void CPortC32InterfaceIp::SendFrameToClient(CCsyMsgBufBpFrame* aFrame)
+/**
+ * This method is called by a CSY Channel object when it has a single
+ * frame to send to a C32 client RComm object.
+ *
+ * @param aFrame - Pointer to message to send to client
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceIp::SendFrameToClient [port=%d]", GetPortNumber());
+
+	if (aFrame)
+		{
+		// frame validation
+		if (aFrame->iMsg.Length() <= KAdvOptionNumOfNonDataOctets)
+			{
+			_LOG_L1C1("** Does not appear to be a valid frame - disregarding **");
+
+			// Place received frames on the empty list
+			iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(aFrame);
+			PlaceIpPacketFramesOntoFreeList();
+
+			_LOG_L4C1("<<CPortC32InterfaceIp::SendFrameToClient - bad frame");
+			return;
+			}
+
+		TUint8 framePosition = aFrame->GetType4FrameSequence();
+		_LOG_L4C2("framePosition = 0x%02x",framePosition);
+
+		// read buffer validation
+		if (iFramesReceivedForIpPacket.IsEmpty())
+			{
+			// There is no read buffer allocated for this frame
+			switch (framePosition)
+				{
+			case KSingleFrame:
+			case KStartMultiFrame:
+				{
+				_LOG_L4C1("Starting new IP frame list");
+				iCurrentIpPacketLength = 0;
+				}
+				break;
+			case KEndMultiFrame:
+			case KMiddleMultiFrame:
+			default:
+				// assumption here is that because no read buffer is allocated then
+				// there cannot have been a valid start frame
+				_LOG_L1C1("** Missed start of packet - disregarding **");
+
+				// Place received frame on the empty list
+				iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(aFrame);
+
+				_LOG_L4C1("<<CPortC32InterfaceIp::SendFrameToClient - no start");
+				return;
+				}
+			}
+		else if ((framePosition == KSingleFrame)||(framePosition == KStartMultiFrame))
+			{
+			// There's been a comms error and an end packet has been lost
+			_LOG_L1C1("** Unexpected Start/Single frame - disregarded previous frames **");
+
+			// Place received frames on the empty list
+			PlaceIpPacketFramesOntoFreeList();
+
+			// Continue processing this frame
+			_LOG_L4C1("Starting new IP frame list");
+			iCurrentIpPacketLength = 0;
+			}
+
+		// If have got to here then IP frame list exists
+
+		TInt length = aFrame->iMsg.Length() - KAdvOptionNumOfNonDataOctets;
+		_LOG_L4C2("length=%d",length);
+
+		// length validation
+		if ((iCurrentIpPacketLength + length) > KMaxIpPacketSize)
+			{
+			// The length of the data in the new frame would exceed that available
+			// in the read buffer.
+
+			_LOG_L1C3("** iCurrentIpPacketLength + length %d exceeds max size %d **",
+				(iCurrentIpPacketLength + length),KMaxIpPacketSize);
+
+			// Place received frames on the empty list
+			iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(aFrame);
+			PlaceIpPacketFramesOntoFreeList();
+
+			_LOG_L4C1("<<CPortC32InterfaceIp::SendFrameToClient - frame sized exceeded");
+			return;
+			}
+
+		// If have got to here IP frame list exists and length is valid
+		iCurrentIpPacketLength += length;
+
+		TBool addReadBufferToClientList = EFalse;
+		switch (framePosition)
+			{
+		// Single frame	
+		case KSingleFrame:
+			_LOG_L4C1("Only frame");
+			iFramesReceivedForIpPacket.AddFirst(*aFrame);
+			addReadBufferToClientList = ETrue;
+			break;
+
+		// Multiframe
+		case KStartMultiFrame:
+			_LOG_L4C1("Start multiframe");
+			iFramesReceivedForIpPacket.AddFirst(*aFrame);
+			break;
+
+		case KMiddleMultiFrame:
+			_LOG_L4C1("Middle multiframe");
+			iFramesReceivedForIpPacket.AddLast(*aFrame);
+			break;
+
+		case KEndMultiFrame:
+			_LOG_L4C1("Last multiframe");
+			iFramesReceivedForIpPacket.AddLast(*aFrame);
+			addReadBufferToClientList = ETrue;
+			break;
+
+		// Unknown
+		default:
+			_LOG_L1C2("** Unknown framePosition %d - ignoring **",
+				framePosition);
+
+			// Place received frame on the empty list
+			iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(aFrame);
+			PlaceIpPacketFramesOntoFreeList();
+
+			_LOG_L4C1("<<CPortC32InterfaceIp::SendFrameToClient - unknown frame pos");
+			return;
+			}
+
+		if (addReadBufferToClientList)
+			{
+			// Give iFramesWaitingToBeReadList ownership of the frames making up the IP Packet
+			_LOG_L4C1("Transfer frames to client msg list");
+
+			// check if queue is empty
+			TBool trigger = iFramesWaitingToBeReadList.IsEmpty();
+
+			PlaceIpPacketFramesOntoReadList();
+
+			if (trigger)
+				{
+				_LOG_L4C1("No packets already waiting");
+				if (iIsReadInProgress)
+					{
+					_LOG_L4C1("A read is outstanding");
+					ReadFromBufOrQueue();
+					}
+				}
+
+			// inform client new data is available
+			SetDataAvailable();
+			}
+		}
+	else
+		{
+		_LOG_L1C1("** aFrame is null **");
+		// MAF __ASSERT_DEBUG(EFalse, PANIC(KPanicIllegalState));
+		}
+
+	_LOG_L4C1("<<CPortC32InterfaceIp::SendFrameToClient");
+	}
+
+TBool CPortC32InterfaceIp::CreateIpPacketFromFrames()
+/**
+ * We assume that all validation has been done during SendFrameToClient so only valid
+ * data exists on the iFramesWaitingToBeReadList frame list.
+ *
+ * @return ETrue if packet retrieved successfully
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceIp::CreateIpPacketFromFrames [port=%d]", GetPortNumber());
+
+	iIpPacket.Zero();
+
+	TUint8	framePosition = 0;
+	TInt	length = 0;
+	TBool	packetRetrieved = EFalse;
+
+	// Remove all frames to do with the same IP Packet from waiting to be read list
+	CCsyMsgBufBpFrame* frame = NULL;
+	iFramesWaitingToBeReadIter.SetToFirst();
+	while ((frame = iFramesWaitingToBeReadIter++) != NULL)
+		{
+		iFramesWaitingToBeReadList.Remove(*frame);
+
+		framePosition = frame->GetType4FrameSequence();
+		_LOG_L4C2("framePosition = 0x%02x",framePosition);
+
+		length = frame->iMsg.Length() - KAdvOptionNumOfNonDataOctets;
+		_LOG_L4C2("length=%d",length);
+
+		iIpPacket.Append(&frame->iMsg[KAdvOptionType4StartOfMessageData], length);
+
+		iPortFactory.GetMux0710Protocol()->AddFrameFreeQ(frame);
+
+		if ((framePosition == KSingleFrame)||(framePosition == KEndMultiFrame))
+			{
+			_LOG_L4C1("retrieved packet");
+			packetRetrieved = ETrue;
+
+			if (iNumberOfPacketsWaiting == KMaxPacketsOutstandingForC32Client)
+				{
+				_LOG_L2C1("Client appears to be reading again");
+
+				// Assume it is okay to set FC to Off even in low free frame
+				// condition since just freed a frame.
+
+				iMuxChannel->SetCsyToModemFlowControl(EFlowControlOff);
+				}
+
+			iNumberOfPacketsWaiting--;
+			_LOG_L4C2("iNumberOfPacketsWaiting=%d",iNumberOfPacketsWaiting);
+			break;
+			}
+		}
+
+	_LOG_L4C2("<<CPortC32InterfaceIp::CreateIpPacketFromFrames [packetRetrieved=%d]",packetRetrieved);
+	return packetRetrieved;
+	}
+
+TBool CPortC32InterfaceIp::ReadFromBufOrQueue()
+/**
+ * This method is called to read from buffer or the frame list
+ * It will read as much as possible.
+ *
+ * @return ETrue if complete the read request
+ */
+	{
+	_LOG_L4C2(">>CPortC32InterfaceIp::ReadFromBufOrQueue [port=%d]", GetPortNumber());
+
+	TBool completedRead = EFalse;
+	TInt ret = KErrNone;
+
+	_LOG_L4C2("iOneOrMore=%d",iOneOrMore);
+	_LOG_L4C2("iClientLength=%d",iClientLength);
+
+	while ((CreateIpPacketFromFrames())&&(!ret))
+		{
+		TInt ipPacketLength = iIpPacket.Length();
+		TInt length = -1; 
+		if (iClientLength - iPos < ipPacketLength)
+			{
+			length = iClientLength - iPos;
+			_LOG_L4C2("length remaining = %d",length);
+			}
+
+		if ((length > -1) && (ipPacketLength >= length))
+			{
+			// MAF should partial reads be allowed?
+			_LOG_L2C1("Partial read?");
+
+			}
+		else
+			{
+			_LOG_L4C3("read buf %d >= length %d ", ipPacketLength, length);
+
+			ret = IPCWrite(iClientBuffer, iIpPacket, iPos);
+			if (ret)
+				{
+				_LOG_L1C2("** IPCWrite Error %d **",ret);
+				}
+
+			_LOG_L4C3("Read: iPos = %d, add %d bytes", iPos, ipPacketLength);
+
+			iPos += ipPacketLength;
+			}
+		}
+
+	if (iPos>0)
+		{
+		if (iOneOrMore)
+			{
+			CompleteReadRequest(ret);
+
+			iPos = 0;
+			completedRead = ETrue;
+			}
+		else
+			{
+			//normal read? and have not filled the buffer yet
+			_LOG_L4C3( "Not filled buffer yet iPos = %d, iClientLength = %d", iPos, iClientLength);
+			}
+		}
+	
+	_LOG_L4C2("<<CPortC32InterfaceIp::ReadFromBufOrQueue [completedRead=%d]", completedRead);
+	return completedRead;
+	}
+
+
+/***
+TBool CPortC32InterfaceIp::ReadFromBufOrQueue()
+**
+ * This method is called to read from buffer or the frame list
+ * It will read as much as possible.
+ *
+ * @return ETrue if complete the read request
+ *
+	{
+	_LOG_L4C2(">>CPortC32InterfaceIp::ReadFromBufOrQueue [port=%d]", GetPortNumber());
+
+	TBool completedRead = EFalse;
+	TInt err = KErrGeneral;
+	TBool cont;
+	do
+		{
+		cont = EFalse;
+		if(iQueuedIpPacket == NULL)
+			{
+			//Read data from the frame list
+			if (!iMsgToClientList.IsEmpty())
+				{
+				_LOG_L4C1("Set to first item");
+				iQueuedIpPacket = iMsgToClientList.First();
+				if (iQueuedIpPacket)
+					{
+					_LOG_L4C1("iQueuedIpPacket not null");
+					// remove msg buf from client list
+					iMsgToClientList.Remove(*iQueuedIpPacket);
+					}
+				}
+			}
+		if (iQueuedIpPacket)
+			{
+			TInt length = KErrNotFound; // <- yeaks!
+			if (iClientLength - iPos < iQueuedIpPacket->iMsg.Length())
+				{
+				length = iClientLength - iPos;
+				_LOG_L4C2("length remaining = %d",length);
+				}
+
+			if (iConfig.iTerminatorCount > 0)
+				{
+				_LOG_L4C2("iTerminatorCount = %d",iConfig.iTerminatorCount);
+
+				// First find terminator
+				TInt terminatorLoc = KErrNotFound; // <- yeaks!
+				TInt loc;
+				for (TInt i = 0; i < iConfig.iTerminatorCount; i++)
+					{
+					loc = iQueuedIpPacket->iMsg.LocateF(iConfig.iTerminator[i]);
+					if (loc > KErrNotFound)
+						{
+						if (terminatorLoc == KErrNotFound)
+							{
+							terminatorLoc = loc;
+							}
+						else
+							{
+							terminatorLoc = Min(loc,terminatorLoc);
+							}
+						}
+					}
+				if (terminatorLoc > KErrNotFound)
+					{
+					if (length > KErrNotFound)
+						length = Min(terminatorLoc + 1,length);
+					else
+						length = terminatorLoc + 1;
+					}
+				_LOG_L4C2("length = %d",length);
+				}
+
+			_LOG_L4C2("Read buf length %d",iQueuedIpPacket->iMsg.Length());
+
+			if ((iQueuedIpPacket->iMsg.Length() >= length) && (length > KErrNotFound))
+				{
+				LOGTEXT2(__DEBUGLEVELMAJOR__,"complete partial read: # %d ", length);
+
+				iPartialReadBuf.Copy(&iQueuedIpPacket->iMsg[0], length);
+				iQueuedIpPacket->iMsg.Delete(0, length);
+
+				err = IPCWrite(iClientBuffer, iPartialReadBuf, iPos); 
+				if (err)
+					{
+					_LOG_L1C2("** IPCWrite Error %d **",err);
+					}
+
+				CompleteReadRequest(err);
+				err = KErrGeneral;
+
+				completedRead = ETrue;
+				iPos = 0;
+
+				if (iQueuedIpPacket->iMsg.Length() == 0)
+					{
+					_LOG_L4C1("All data used - freeing read buffer");
+					AddToFreeC32BufferQ(iQueuedIpPacket);
+					iQueuedIpPacket = NULL;
+					}
+				}
+			else
+				{
+				LOGTEXT3(__DEBUGLEVELMAJOR__,"read buf %d >= length %d ", iQueuedIpPacket->iMsg.Length(), length);
+
+				err = IPCWrite(iClientBuffer, iQueuedIpPacket->iMsg, iPos);
+
+				_LOG_L4C3("Read: iPos = %d, add %d bytes", iPos, iQueuedIpPacket->iMsg.Length());
+
+				cont = ETrue; //try read next frame in the list
+				iPos = iPos + iQueuedIpPacket->iMsg.Length();
+
+				_LOG_L4C1("Freeing read buffer");
+				AddToFreeC32BufferQ(iQueuedIpPacket);
+				iQueuedIpPacket = NULL;
+				}
+			}
+		}
+	while (cont);
+
+	if (iPos>0)
+		{
+		if (iOneOrMore)
+			{
+			if (err)
+				{
+				_LOG_L1C2("** IPCWrite Error %d **",err);
+				}
+
+			CompleteReadRequest(err);
+
+			iPos = 0;
+			completedRead = ETrue;
+			}
+		else
+			{
+			//normal read and have not filled the buffer yet
+			_LOG_L4C3( "Not filled buffer yet iPos = %d, iClientLength = %d", iPos, iClientLength);
+			//iToClientMsgQAo->IssueNotificationRequest();
+			}
+		}
+
+	_LOG_L4C2("<<CPortC32InterfaceIp::ReadFromBufOrQueue [ret=%d]",completedRead);
+	return completedRead;
+	}
+***/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/PortFactory.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,982 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the class CPortFactory.
+// *               This class is used to create C32 port interface instances.
+//
+
+// PortFactory.cpp
+
+/** @file PortFactory.cpp
+ *
+ */
+
+/*! \mainpage CSY 27.010 Documentation
+ *
+ * \section intro Introduction
+ *
+ * This CSY has been designed and implemented by TapRoot Systems.
+ * This CSY is part of the TapRoot Systems Communications Platform (CommP)
+ * product family for Symbian OS. Please contact TapRoot Systems for 
+ * information on CommP.
+ * <p>
+ * A CSY is a specialized type of DLL that implements API interfaces
+ * required by the C32 Serial Communications Server. "CSY" is the file
+ * name extension used by CSY modules as in "ecuart.csy", which is the
+ * name of Symbian's generic CSY for non-multiplexed serial ports.  
+ * TapRoot Systems 27.010 CSY (gsm0701.csy) is compatible with the
+ * 3GPP 27.010 v5.0.0 specification.
+ * <p>
+ * The CSY has been designed and tested with the Intel Lubbock application
+ * processor, TI Condat baseband processor and Symbian OS 8.0a.
+ * The CSY is not guaranteed to work with other AP's, BP's or Symbian OS versions.
+ * The CSY has been integrated with Symbian OS supplied TSY and NIF IP.
+ * The CSY is not guaranteed to work with other TSY's and NIF's.
+ *
+ * \section feat Features
+ *
+ * The CSY supports the 27.010 Basic Option. The 3GPP 27.010 specification 
+ * is derived from the GSM 07.10 specification. 3GPP 27.010 defines a mechanism
+ * whereby multiple commands and data streams can be carried over the same
+ * physical link. This specification defines a multiplexing protocol between
+ * a Terminal Equipment (TE) and a Mobile Station (MS) allowing multiple 
+ * simultaneous sessions over a single start-stop, framed, serial link. 
+ * Each session (channel) can carry different types of data including voice,
+ * fax, data, SMS, CBS, phonebook maintenance, battery status, GPRS, USSD, etc.
+ * <p>
+ * The multiplexer has three operating options, basic, advanced without error
+ * recovery and advanced with error recovery. CSY 27.010 supports the
+ * basic option. The basic option is recommended on highly reliable links. 
+ * Advanced options are not supported by the CSY. The characteristics of the 
+ * basic option are:
+ * <li> Length indicator used instead of the HDLC transparency mechanism
+ * <li> Different flag octet from that used by HDLC
+ * <li> Cannot be used on links that use XON/XOFF flow control
+ * <li> May have longer recovery procedure from loss of synchronization
+ * <p>
+ * Each channel between the TE and MS is called a Data Link Connection (DLC).
+ * A special DLC called "control channel" is used to exchange management 
+ * information (e.g. parameter negotiation), power saving control information,
+ * testing, flow control, close down, etc. between the TE and MS.
+ * <p>
+ * The multiplexer is activated with the 3GPP 27.007 AT+CMUX command.
+ * <p>
+ * 
+ * \section install Installation
+ *
+ * Refer to the readme.txt file for installation and build instructions.
+ * <br>
+ * Please contact TapRoot Systems for information on product updates and
+ * additional support.
+ */
+
+/** @file PortFactory.cpp
+ * This file contains the implementation for the class CPortFactory.
+ * This class is used to create C32 port interface instances.
+ */
+
+#include <cs_port.h>
+#include <f32file.h>
+#include <commsdattypesv1_1.h>
+#include <commsdat_partner.h>
+using namespace CommsDat;
+#include "Portfactory.h"
+#include "CsyGlobals.h"
+#include "Mux0710Protocol.h"
+#include "ChannelMgrCtrl.h"
+#include "ChannelMgrCmdData.h"
+#include "PortC32InterfaceBase.h"
+#include "PortC32Interface.h"
+#include "PortC32InterfaceIp.h"
+#include "CommFrameWriterAo.h"
+#include "CommFrameReaderAo.h"
+#include "CsyDebugLogger.h"
+
+CPortFactory* CPortFactory::NewL()
+/**
+ * This method uses two phase construction and the cleanup stack to create
+ * an instance of class CPortFactory. This method is invoked when the user
+ * invokes the C32 comm server's LoadCommModule() method to load the CSY.
+ * Note that multiple instances of CPortFactory can be created by C32,
+ * so no memory allocation or objects should be created when the 
+ * port factory is first created.
+ *
+ * @return Pointer to the created instance of CPortFactory
+ */
+	{
+	_LOG_L4C1("CPortFactory::NewL");
+
+	CPortFactory* self = new(ELeave) CPortFactory;
+	TCleanupItem closeSelf(CPortFactory::CloseObject, self);
+	CleanupStack::PushL(closeSelf);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return (self);
+	}
+
+CPortFactory::CPortFactory()
+: iPortC32InterfaceList(_FOFF(CPortC32Interface, iLink)),
+  iPortC32InterfaceIter(iPortC32InterfaceList),
+  iDataChannelList(_FOFF(CChannelMgrCmdData, iLink)),
+  iDataChannelIter(iDataChannelList)
+/**
+ * Constructor.
+ */
+	{
+	_LOG_L4C1("CPortFactory::CPortFactory");
+	}
+
+CPortFactory::~CPortFactory()
+/**
+ * Destructor. Delete all objects and memory created/allocated by this class.
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::~CPortFactory");
+
+	// check if the CSY's objects have been created 
+	// C32 creates a new instance of the port factory each time a client
+	// loads the CSY. The C32 recognizes a redundant CSerial name and promptly
+	// destroys the redundant CSY.
+	if (iMuxObjectsCreated)
+		{
+		// client channels
+		CChannelMgrCmdData* anyChannel = NULL;
+		iDataChannelIter.SetToFirst();
+		while ((anyChannel = iDataChannelIter++) != NULL)
+			{
+			iDataChannelList.Remove(*anyChannel);
+			delete anyChannel;
+			}
+
+		// control channel
+		delete iChannelCtrl;
+
+		delete iCommWriterAo;
+		delete iCommReaderAo;
+
+		delete iMux0710Protocol;
+
+		// may not be necessary ???
+		// MAF /\ what does this comment mean
+
+		// delete any remaining C32 port objects that were not closed by the client
+		CPortC32InterfaceBase* port = NULL;
+		iPortC32InterfaceIter.SetToFirst();
+		while ((port = iPortC32InterfaceIter++) != NULL)
+			{
+			delete port;
+			}
+
+		iCommPort.Close();
+		}
+
+	//iMuxObjectsCreated = EFalse;
+
+	_LOG_L4C1("<<CPortFactory::~CPortFactory");
+	_LOG_L3C1(" ");
+	}
+
+void CPortFactory::ConstructL()
+/**
+ * 2nd-phase construction. Registers the CSY Name with C32.
+ */
+	{
+	_LOG_L4C1("CPortFactory::ConstructL");
+
+#ifdef _DEBUG
+	TInt usedCellCount;
+	TInt freeCellCount;
+	usedCellCount = User::CountAllocCells(freeCellCount);
+	_LOG_L4C3("Cell Counts Used = %d   Free = %d", usedCellCount, freeCellCount);
+#endif
+
+	// inform C32 of the CSY name
+	TName name(KCSY_Gsm0710ServerName);
+	TInt retVal1 = SetName(&name);
+	if (retVal1 != KErrNone)
+		{
+		_LOG_L1C3("** Failed to set CSY:%S in C32. Err: %d **", &name, retVal1);
+		User::Leave(retVal1);
+		}
+	iVersion = TVersion(KCSY_Gsm0710MinorVersionNumber,
+						KCSY_Gsm0710MajorVersionNumber,
+						KCSY_Gsm0710BuildVersionNumber);
+	}
+
+void CPortFactory::CreateCsyObjectsL()
+/**
+ * This method is called to create the CSY objects for the multiplexing channels,
+ * message queues, i/o interface, etc.  This method should be called when the
+ * 1st client request to create a port is received by the CSY via NewPortL().
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::CreateCsyObjectsL");
+
+	// set flag
+	iMuxObjectsCreated = ETrue;
+	iOpenPortFailed = EFalse;
+
+	// load physical device drivers for serial port(s)
+
+#ifdef __WINS__
+	// 1st make sure the file server is running
+	RFs fileServer;
+	User::LeaveIfError(fileServer.Connect());
+	fileServer.Close();
+
+	_LIT(KPDDName, "ECDRV");
+	TInt retVal1 = User::LoadPhysicalDevice(KPDDName);
+	if ((retVal1 != KErrNone) && (retVal1 != KErrAlreadyExists))
+		User::Leave(retVal1);
+
+#else  // target
+
+	TBuf<20> commPddName;
+	TInt retVal1;
+
+	commPddName.Copy(KCsyDefaultPDDNameComm1);
+	retVal1 = User::LoadPhysicalDevice(commPddName);
+	if ((retVal1 != KErrNone) && (retVal1 != KErrAlreadyExists))
+		User::Leave(retVal1);
+	// only load 2nd PDD if debugging is enabled 
+
+#ifdef __DEBUGSERIALPORT__
+	commPddName.Copy(KCsyDefaultPDDNameComm2);
+	retVal1 = User::LoadPhysicalDevice(commPddName);
+	if ((retVal1 != KErrNone) && (retVal1 != KErrAlreadyExists))
+		User::Leave(retVal1);
+#endif //__DEBUGSERIALPORT__
+
+#endif  //__WINS__
+
+	// load logical device driver for serial ports
+	_LIT(KLDDName, "ECOMM");
+	retVal1 = User::LoadLogicalDevice(KLDDName);
+	if ((retVal1 != KErrNone) && (retVal1 != KErrAlreadyExists))
+		User::Leave(retVal1);
+
+	ConfigurePhysicalCommPortL();
+	
+	// create 27.010 framer and comm i/o objects
+	iMux0710Protocol = CMux0710Protocol::NewL(*this);
+	iCommWriterAo    = CCommFrameWriterAo::NewL(this, iMux0710Protocol);
+	iMux0710Protocol->SetCommWriter(iCommWriterAo);
+
+	iCommReaderAo    = CCommFrameReaderAo::NewL(this, iMux0710Protocol);
+	iCommReaderAo->Read();  // start it
+	
+	// create the Multiplexer Control Channel
+	iChannelCtrl = CChannelMgrCtrl::NewL(*this, *iMux0710Protocol);
+
+	// create All Multiplexer Channels	
+	for (TUint8 i=1; i < KCsyDefaultMaxDLCChannels; i++)
+		{
+		CChannelMgrCmdData* channelMgrCmd =
+			CChannelMgrCmdData::NewL(i, *this, *iMux0710Protocol);
+		iDataChannelList.AddLast(*channelMgrCmd);
+		}
+
+	// switch to multiplexer mode
+	iMux0710Protocol->SwitchToMuxMode();
+
+#ifdef _DEBUG
+	TInt usedCellCount;
+	TInt freeCellCount;
+	usedCellCount = User::CountAllocCells(freeCellCount);
+	_LOG_L4C3("Cell Counts Used = %d   Free = %d", usedCellCount, freeCellCount);
+#endif
+
+	_LOG_L4C1("<<CPortFactory::CreateCsyObjectsL");
+	}
+
+void CPortFactory::CloseObject(TAny* aObject)
+/**
+ * Utility to close objects created by the port factory. 
+ * Used during construction with the cleanup stack.
+ *
+ * @param aObject - The CObject to close.
+ * @return void
+ */
+	{
+	reinterpret_cast<CObject*>(aObject)->Close();
+	}
+
+CPort* CPortFactory::NewPortL(const TUint aUnit)
+/**
+ * This method is called by C32 when a port is opened via RComm::Open().
+ * An instance of the CSY's class CPortC32Interface is created.
+ * The instance is assigned a channel manager and then is added to
+ * the list of C32 port interface objects.
+ *
+ * @param aUnit - Numeric portion of the port identifier
+ * @return Pointer to the created C32 port interface object
+ */
+	{
+	_LOG_L4C2(">>CPortFactory::NewPortL [aUnit=%d]", aUnit);
+
+	TC32PortInfo portInfo;
+
+	portInfo.iClientType = GetClientType(aUnit);
+	portInfo.iPortNumber = aUnit;
+
+	// check if port number is valid and translates to a client type
+	if (portInfo.iClientType == EC32ClientUndefined)
+		{
+		_LOG_L4C1("<<CPortFactory::NewPortL - ** Unknown client **");
+		return NULL;
+		}
+
+	// check if this is the 1st port to be opened
+	if (!iMuxObjectsCreated)
+		{
+		_LOG_L4C1("first port to be opened");
+		CreateCsyObjectsL();
+		}
+	else if (iChannelCtrl->GetChannelReady() == EFalse)
+		{
+		_LOG_L4C1("CSY objects already exist");
+		// switch to multiplexer mode
+		iMux0710Protocol->SwitchToMuxMode();
+		}
+
+	// first make sure control channel is already connected
+	iChannelCtrl->WaitForChannelReady();
+	
+	if (! iOpenPortFailed)
+		{
+		// create a new C32 Interface Port based on port number
+		CPortC32InterfaceBase* port = NULL;
+	
+		if (portInfo.iClientType == EC32ClientIpNif)
+			{
+			_LOG_L4C1("Raw IP port");
+ 			port = CPortC32InterfaceIp::NewL(*this, portInfo);
+ 			}
+		else
+			{
+			_LOG_L4C1("Normal port");
+ 			port = CPortC32Interface::NewL(*this, portInfo);
+ 			}
+	
+		CleanupStack::PushL(port);
+		CChannelMgrCmdData* channel = FindChannelMgr(aUnit);
+
+		if (channel == NULL)
+			{
+			_LOG_L2C1("** channel is null, delete interface **");
+			CleanupStack::PopAndDestroy(port);
+			User::Leave(KErrNotFound);
+			}
+		TName name;
+		name.Format(_L("%d"), aUnit);
+		port->SetName(&name);
+
+		// channel->Open() will add this port to it's port list, and connect channel if needed
+		// Make sure that during channel init we do not tx/rx through channel
+		channel->Open(port);
+	
+		iNumOfOpenPorts++;
+		_LOG_L4C2("No. of ports = %d",iNumOfOpenPorts);
+ 		
+		port->SetMuxChannel(channel);
+
+		channel->WaitForChannelReady();
+
+		//Need to wait for the channel to be ready. How to wait for something without blocking whole thread?
+		// add it to list of ports
+		iPortC32InterfaceList.AddLast(*port);	
+		CleanupStack::Pop(port);
+
+#ifdef _DEBUG
+		TInt usedCellCount;
+		TInt freeCellCount;
+		usedCellCount = User::CountAllocCells(freeCellCount);
+		_LOG_L4C3("Cell Counts Used = %d   Free = %d", usedCellCount, freeCellCount);
+#endif
+
+		_LOG_L4C2("<<CPortFactory::NewPortL [port=%d]", port);
+		return port;
+		}
+	else //iPortOpenFailed == ETrue
+		{
+		_LOG_L4C1("<<CPortFactory::NewPortL [port=NULL]");
+		User::Leave(KErrTimedOut);
+		return NULL;
+		}
+	}
+ 
+void CPortFactory::Info(TSerialInfo& aSerialInfo)
+/**
+ * Called by C32 to identify the CSY module.
+ * @param aSerialInfo - Reference holder for information to be populated by the function.
+ * @return void
+ */
+	{
+	_LOG_L4C1("CPortFactory::Info");
+
+	aSerialInfo.iDescription	= KCSY_Description;
+	aSerialInfo.iName			= KCSY_Gsm0710ServerName;
+	aSerialInfo.iLowUnit		= KCSY_Gsm0710LowUnit;
+	aSerialInfo.iHighUnit		= KCSY_Gsm0710HighUnit;
+	}
+
+CPortFactory::TC32ClientType CPortFactory::GetClientType(TInt aC32PortNum)
+/**
+ * Returns the ClientType for the specified C32 port number.
+ * @param aC32PortNum -  C32 port number
+ * @return Client type - TSY or NIF
+ */
+	{ 
+	_LOG_L4C2("CPortFactory::GetClientType [aC32PortNum=%d]", aC32PortNum);
+
+	if (aC32PortNum >= KCOMMP_IP_NIF_OFFSET)
+		{
+		_LOG_L4C1("Raw Ip");
+		return CPortFactory::EC32ClientIpNif;
+		}
+	else if (aC32PortNum == KCOMMP_CSD_PPP_NUMBER)
+		{ 
+		_LOG_L4C1("Csd PPP");
+		return CPortFactory::EC32ClientNif;
+		}
+
+	_LOG_L4C1("Tsy");
+	return CPortFactory::EC32ClientTsy;
+	}
+
+CPortC32InterfaceBase* CPortFactory::FindPortC32Interface(const TUint8 aDlcNum)
+/**
+ * This method returns a pointer to the C32 port interface object 
+ * that is associated with the specified DLC number.
+ *
+ * @param aDlcNum - DLC number
+ * @return Pointer to C32 port interface object or NULL if not found
+ */
+	{
+	_LOG_L4C2(">>CPortFactory::FindPortC32Interface [aDlcNum=%d]", aDlcNum);
+
+	CPortC32InterfaceBase* port = NULL;
+
+	CChannelMgrCmdData* anyChannel = NULL;
+	iDataChannelIter.SetToFirst();
+	while ((anyChannel = iDataChannelIter++) != NULL)
+		{
+		if (anyChannel->GetDlcNumber() == aDlcNum)
+			{
+			_LOG_L4C1("AT channel");
+			port = anyChannel->GetC32Port();
+			break;
+			}
+		}
+	
+	_LOG_L4C2("<<CPortFactory::FindPortC32Interface [port=0x%x]",port);
+	return port;
+	}
+
+CChannelMgrCmdData* CPortFactory::FindChannelMgr(const TUint aC32PortNum)
+/**
+ * This method is only called when a port is created.
+ *
+ * @param aC32PortNum - C32 port number
+ * @return Pointer to the channel manager object or NULL
+ */
+	{
+	_LOG_L4C2(">>CPortFactory::FindChannelMgr [aC32PortNum=%d]", aC32PortNum);
+
+	TUint dlcNum = ++iLastDlcNum;
+	_LOG_L4C2("iLastDlcNum: %d", iLastDlcNum);
+
+	//
+	// MAF Horrible
+	// This just counts through the array of channel pointers
+	// and returns a pointer when the count gets to the correct value.
+	// 
+	// We should be able to use an array here and directly access it using
+	// the dlc number!?!?
+	//
+
+	TUint count  = 1;
+	CChannelMgrCmdData* anyChannelCmd;
+
+	iDataChannelIter.SetToFirst();
+	while ((anyChannelCmd = iDataChannelIter++) != NULL)
+		{
+		if (count == dlcNum)
+			{
+			_LOG_L4C2("<<CPortFactory::FindChannelMgr() - found, count %d",count);
+			return anyChannelCmd;
+			}
+		count++;
+		}
+
+	_LOG_L4C1("<<CPortFactory::FindChannelMgr() - *** NOT FOUND ***");
+	return NULL;
+	}
+
+CChannelMgrCmdData* CPortFactory::FindChannelMgrByDlcNum(const TUint8 aDlcNum)
+/**
+ * This method returns a pointer to the channel manager object 
+ * that has the specified  DLC number.
+ *
+ * @param aDlcNum -  DLC number
+ * @return Pointer to the channel manager object or NULL
+ */
+	{
+	_LOG_L4C2(">>CPortFactory::FindChannelMgrByDlcNum [aDlcNum=%d]", aDlcNum);
+
+    CChannelMgrCmdData* channel = NULL;
+	iDataChannelIter.SetToFirst();
+	while ((channel = iDataChannelIter++) != NULL)
+		{
+		if (channel->GetDlcNumber() == aDlcNum)
+			{
+			_LOG_L4C1("AT channel");
+			return channel;
+			}
+		}
+
+	_LOG_L2C1("<<CPortFactory::FindChannelMgrByDlcNum() - NOT FOUND");
+	return NULL;
+	}
+
+TInt CPortFactory::ConfigurePhysicalCommPortL()
+/**
+ * This method is used to configure the specified physical comm port.
+ * The parameters are read from CommDb or supplied by C32.
+ * @param aPhysPortNum - Physical port number
+ * @return KErrorNone or KErrAccessDenied.
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::ConfigurePhysicalCommPortL");
+
+	// create a package pointer
+	TPckgBuf<TCommConfigV01> newCfg;
+	TInt ret, len;
+
+	// get the modem table	- Get port settings from CommDB.
+	CMDBSession* db = CMDBSession::NewL(KCDLatestVersion);
+
+	CleanupStack::PushL(db);
+
+	TUint32 modemId = 0;
+
+	// We are using the same modem as TSY
+	// Accessing the ModemPhoneServicesSMS field in the Global Settings Table
+	CMDBField<TUint32>* globalSettingsField = new(ELeave) CMDBField<TUint32>(KCDTIdModemPhoneServicesSMS);
+	CleanupStack::PushL(globalSettingsField);
+	globalSettingsField->SetRecordId(1);
+	globalSettingsField->LoadL(*db);
+	modemId = *globalSettingsField;	// The field value gives the record id in the Modem Bearer Table.
+	CleanupStack::PopAndDestroy(globalSettingsField);
+	
+	_LOG_L4C2("Accessing modem entry %d in the modem table", modemId);
+
+	TUint32 rate;
+	TUint32 dataBits;
+	TUint32 stopBits;
+	TUint32 parity;
+	TUint32 handshake;
+	TPckgBuf<TCommConfigV01> config;
+	
+	TUint port = 0;
+	TBuf<KCommsDbSvrMaxFieldLength> controlPort;
+	
+	// Accessing the ControlChannelPort Name from the ModemBearer Table in the record number 
+	//corresponding to modemId
+	CMDBField<TDesC>* portField = new(ELeave) CMDBField<TDesC>(KCDTIdControlChannelPortName);
+	CleanupStack::PushL(portField);
+	portField->SetRecordId(modemId);
+	portField->SetMaxLengthL(KMaxTextLength);
+	portField->LoadL(*db);
+	controlPort = *portField;
+	CleanupStack::PopAndDestroy(portField);
+	// Diagnostics - control port
+	if (controlPort.Length())
+		{
+		TBuf8<16> portName;
+		portName.Copy(controlPort.Left(16));
+		_LOG_L4C2("Control port(MODEM_CONTROL_CHANNEL_PORT_NAME) '%S'",
+			&portName);
+
+		// Get number of port out of the port descriptor.
+		_LIT(KDoubleColon, "::");
+		TInt len = controlPort.Find(KDoubleColon);
+		if (len < KErrNone)
+			{
+			_LOG_L1C1("** finding :: in control port failed **");
+			User::Leave(KErrGeneral);
+			}
+		TUint numPos = len + KDoubleColon.iTypeLength;
+		TPtrC numPtr(&controlPort[numPos], controlPort.Length() - numPos);
+		TLex lexer(numPtr);
+		TInt ret = lexer.Val(port);
+		if (ret)
+			{
+			_LOG_L1C1("** lexing to get port number failed **");
+			User::Leave(ret);
+			}
+		}
+	else
+		{
+		_LOG_L1C1("** Control port not set in commDb **");
+		User::Leave(KErrGeneral);
+		}
+	
+	// Accessing the Rate from the ModemBearer Table in the record number 
+	//corresponding to modemId
+	CMDBField<TUint32>* rateField = new(ELeave) CMDBField<TUint32>(KCDTIdRate);
+	CleanupStack::PushL(rateField);
+	rateField->SetRecordId(modemId);
+	rateField->LoadL(*db);
+	rate = *rateField;
+	CleanupStack::PopAndDestroy(rateField);
+	
+	// Accessing the DataBits from the ModemBearer Table in the record number 
+	//corresponding to modemId
+	CMDBField<TUint32>* dataBitsField = new(ELeave) CMDBField<TUint32>(KCDTIdDataBits);
+	CleanupStack::PushL(dataBitsField);
+	dataBitsField->SetRecordId(modemId);
+	dataBitsField->LoadL(*db);
+	dataBits = *dataBitsField;
+	CleanupStack::PopAndDestroy(dataBitsField);
+
+	// Accessing the StopBits from the ModemBearer Table in the record number 
+	//corresponding to modemId
+	CMDBField<TUint32>* stopBitsField = new(ELeave) CMDBField<TUint32>(KCDTIdStopBits);
+	CleanupStack::PushL(stopBitsField);
+	stopBitsField->SetRecordId(modemId);
+	stopBitsField->LoadL(*db);
+	stopBits = *stopBitsField;
+	CleanupStack::PopAndDestroy(stopBitsField);
+	
+	// Accessing the Parity from the ModemBearer Table in the record number 
+	//corresponding to modemId
+	CMDBField<TUint32>* parityField = new(ELeave) CMDBField<TUint32>(KCDTIdParity);
+	CleanupStack::PushL(parityField);
+	parityField->SetRecordId(modemId);
+	parityField->LoadL(*db);
+	parity = *parityField;
+	CleanupStack::PopAndDestroy(parityField);
+	
+	// Accessing the HandShake from the ModemBearer Table in the record number 
+	//corresponding to modemId
+	CMDBField<TUint32>* handshakeField = new(ELeave) CMDBField<TUint32>(KCDTIdHandshaking);
+	CleanupStack::PushL(handshakeField);
+	handshakeField->SetRecordId(modemId);
+	handshakeField->LoadL(*db);
+	handshake = *handshakeField;
+	CleanupStack::PopAndDestroy(handshakeField);
+
+	config().iRate		  = (TBps)rate;
+	config().iDataBits    = (TDataBits)dataBits;
+	config().iStopBits    = (TStopBits)stopBits;
+	config().iParity      = (TParity)parity;
+	config().iHandshake   = (TUint)handshake;
+	config().iParityError = KConfigParityErrorIgnore;
+	config().iFifo        = static_cast<TUint>(EFifoEnable);
+
+	newCfg.Copy(config);
+
+	ret = iCommPort.Open(port);
+	if (ret)
+		{
+		_LOG_L1C3("** Failed CommPort.Open(%d) ret=%d **", port,ret);
+		User::Leave(ret);
+		}
+
+	// Configure the port
+	len = iCommPort.ReceiveBufferLength();
+	
+	if (len < KErrNone)
+		{
+		_LOG_L1C2("** Leave: CommPort.ReceiveBufferLength() len=%d **", len);
+		User::Leave(KErrGeneral);
+		}
+
+	// Increase the receive buffer to make sure we can operate as slowly as we 
+	// can without filling up the LDD's receive buffer with incoming signals 
+	len *= KCSY_ReceiveBufferSizeIncreaseFactor; 
+	ret = iCommPort.SetReceiveBufferLength(len);
+
+	TCommConfig cbuf;
+	TCommConfigV01 &cfg = cbuf();
+	iCommPort.Config(cbuf);					// Get the Configuration Parameters
+
+	cfg.iRate        = newCfg().iRate;
+	cfg.iDataBits    = newCfg().iDataBits;
+	cfg.iStopBits    = newCfg().iStopBits;
+	cfg.iParity      = newCfg().iParity;
+	cfg.iHandshake   = newCfg().iHandshake;
+	cfg.iParityError = newCfg().iParityError;
+	cfg.iFifo        = newCfg().iFifo;
+
+	_LOG_L4C2("  Set Phys Port Config for Port %d", port);
+	_LOG_L4C2("    Rate = 0x%x", cfg.iRate);
+	_LOG_L4C2("    DataBits = 0x%x", cfg.iDataBits);
+	_LOG_L4C2("    Stop Bits = 0x%x", cfg.iStopBits);
+	_LOG_L4C2("    Parity = 0x%x", cfg.iParity);
+	_LOG_L4C2("    Handshake = 0x%x", cfg.iHandshake);
+	_LOG_L4C2("    Parity Error = 0x%x", cfg.iParityError);
+	_LOG_L4C2("    Fifo = 0x%x", cfg.iFifo);
+
+	ret = iCommPort.SetConfig(cbuf);		// Set the Configuration Parameters
+	if (ret)
+		{
+		_LOG_L1C2("** CommPort.SetConfig ret=%d **", ret);
+		User::Leave(KErrNotSupported);
+		}
+
+	// Clean up the stack
+	CleanupStack::PopAndDestroy(db);
+
+	_LOG_L4C2("<<CPortFactory::ConfigurePhysicalCommPortL [ret=%d]", ret);
+	return ret;
+	}
+
+void CPortFactory::ConnectControlChannel()
+/**
+ * This method is called to connect the 27.010 control channel,
+ * which is DLC 0.
+ */
+	{
+	_LOG_L4C1("CPortFactory::ConnectControlChannel");
+
+	TInt ret = 	iChannelCtrl->Connect();	
+	if (ret != KErrNone)
+		{
+		_LOG_L4C2(("<<CCPortFactory::ConnectControlChannel ret=%d"),ret);
+		}
+	}
+
+void CPortFactory::DisconnectControlChannel()
+/**
+ * This method is called to set the 27.010 control channel to the "disconnect" state.
+ */
+	{
+	_LOG_L4C1("CPortFactory::DisconnectAllChannels");
+	iChannelCtrl->Disconnect();
+	}
+
+void CPortFactory::ChannelCtrlDoCancel()
+/**
+ * This method is called when the port has been opened and the max number of retries has been reached.
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::ChannelCtrlDoCancel");
+	
+	iOpenPortFailed = ETrue;
+	iChannelCtrl->NotifyChannelReady();
+
+	_LOG_L4C1("<<CPortFactory::ChannelCtrlDoCancel");
+	}
+	
+
+void CPortFactory::RemoveC32Port(CPortC32InterfaceBase* aPort)
+/**
+ * This method removes the specified C32 port object from the
+ * port factory's list of current/open C32 port objects.
+ * This will allow another client to open that port.
+ * @param aPort - Pointer to C32 port object
+ * @return void
+ */
+	{
+	_LOG_L4C2(">>CPortFactory::RemoveC32Port [aPort=%d]", aPort->GetPortNumber());
+
+	CPortC32InterfaceBase* port = NULL;
+	iPortC32InterfaceIter.SetToFirst();
+	while ((port = iPortC32InterfaceIter++) != NULL)
+		{
+		if (port == aPort)
+			{
+			iPortC32InterfaceList.Remove(*port);
+			_LOG_L4C1("<<CPortFactory::RemoveC32Port - okay");
+			return;
+			}
+		}
+
+	// MAF this is a bad condition
+	_LOG_L4C1("<<CPortFactory::RemoveC32Port ** Not Removed? **");
+	}
+
+void CPortFactory::ConnectIpNifPort(const TUint8 aDlcNum)
+/**
+ * This method connects the port interface object
+ * in the CSY that are used for a data interface to a NIF.
+ * @param void
+ */
+	{
+	_LOG_L4C2("CPortFactory::ConnectIpNifPort [aDlcNum=%d]",aDlcNum);
+
+	CPortC32InterfaceBase* port = FindPortC32Interface(aDlcNum);
+
+	if (port)
+		{
+		CChannelMgrCmdData* iMuxChannel = port->GetMuxChannel();
+		if (iMuxChannel)
+			{
+			
+			TInt err = iMuxChannel->Connect();
+			if (err != KErrNone)
+				{
+				_LOG_L1C2("iMuxChannel->Connect() error =%d",err);
+				}
+			}
+		else
+			{
+			// MAF assert here
+			_LOG_L1C2("** Could not find channel for port [0x%x] **",port);
+			}
+		}
+	else
+		{
+		// MAF assert here
+		_LOG_L1C1("** Could not find port for dlcnumber **");
+		}
+	}
+
+TBool CPortFactory::FindDlcToEnable()
+/**
+ * We have resources again. Find a dlc that has had its flow control
+ * set and re-enable.
+ *
+ * @return ETrue if there are still dlcs that are stopped due to flow control.
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::FindDlcToEnable");
+
+	TInt numberOfStopped = 0;
+	TBool dlcsStillToEnable = EFalse;
+
+    CChannelMgrCmdData* channel = NULL;
+
+	iDataChannelIter.SetToFirst();
+	while ((channel = iDataChannelIter++) != NULL)
+		{
+		if (channel->CsyToModemFlowControl() == EFlowControlOn)
+			{
+			numberOfStopped++;
+			if (numberOfStopped == 1)
+				{
+				_LOG_L4C1("Found a dlc to re-enable");
+				if (channel->SetCsyToModemFlowControl(EFlowControlOff))
+					{
+					_LOG_L4C1("Re-enable failed");
+					dlcsStillToEnable = ETrue;
+					break;
+					}
+				}
+			else
+				{
+				_LOG_L4C1("Other dlc still to re-enable");
+				dlcsStillToEnable = ETrue;
+				}
+			}
+		}
+
+	_LOG_L4C2("<<CPortFactory::FindDlcToEnable numberOfStopped=%d",numberOfStopped);
+	return dlcsStillToEnable;
+	}
+
+void CPortFactory::FindActiveDataDlcToStop()
+/**
+ * MAF come up with a better algorithm. Currently this scans sequentially for a data
+ * DLC to stop.
+ * Check the data dlcs to see if one of them can be stopped
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::FindActiveDataDlcToStop");
+
+    CChannelMgrCmdData* channel = NULL;
+	CPortC32InterfaceBase* port = NULL;
+
+	iDataChannelIter.SetToFirst();
+	while ((channel = iDataChannelIter++) != NULL)
+		{
+		port = channel->GetC32Port();
+		if ((port)&&(port->GetClientType() == EC32ClientIpNif))
+			{
+			if (channel->CsyToModemFlowControl() == EFlowControlOff)
+				{
+				_LOG_L4C1("Found a data dlc to stop");
+				if (channel->SetCsyToModemFlowControl(EFlowControlOn))
+					{
+					_LOG_L4C1("Failed to stop dlc");
+					}
+				else
+					break;
+				}
+			}
+		}
+
+	_LOG_L4C1("<<CPortFactory::FindActiveDataDlcToStop");
+	}
+
+void CPortFactory::StopAnyDlc()
+/**
+ * Time for drastic action - enforce flow control on any DLC (except ctrl).
+ */
+	{
+	_LOG_L4C1(">>CPortFactory::StopAnyDlc");
+
+    CChannelMgrCmdData* channel = NULL;
+
+	iDataChannelIter.SetToFirst();
+	while ((channel = iDataChannelIter++) != NULL)
+		{
+		if (channel->CsyToModemFlowControl() == EFlowControlOff)
+			{
+			_LOG_L4C1("Found a dlc to stop");
+			if (channel->SetCsyToModemFlowControl(EFlowControlOn))
+				{
+				_LOG_L4C1("Failed to stop dlc");
+				}
+			else
+				break;
+			}
+		}
+
+	_LOG_L4C1("<<CPortFactory::StopAnyDlc");
+	}
+
+TBool CPortFactory::DecrementNumOfOpenPorts()
+/**
+ * Used to decrement the number of open ports and disconnect if number = 0
+ *
+ * aReturn returns EFalse if Num of Ports is 0; ETrue otherwise
+ */
+{
+	if (iNumOfOpenPorts==0)
+		return EFalse;
+	else if (--iNumOfOpenPorts == 0)
+		{
+		_LOG_L4C1("******* DISCONNECT ALL *********");
+		DisconnectControlChannel();
+		iLastDlcNum = 0;
+		return EFalse;
+		}	
+	return ETrue;
+}
+
+
+TSecurityPolicy CPortFactory::PortPlatSecCapability(TUint /*aPort*/) const
+/**
+ * This method returns the capabilities required to open the given port number
+ * This 27.010 CSY requires the same capabilities for all port numbers
+ *
+ * @param aPort - The port number to check against
+ * @return TSecurityPolicy - containing the required capabilities to use this CSY
+ */
+{
+	return TSecurityPolicy(ECapabilityNetworkServices, ECapabilityNetworkControl, ECapabilityReadUserData, ECapabilityWriteUserData);
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/src/timeouter.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,96 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation a very simple timeout class.
+//
+
+// timeouter.cpp
+
+/** @file timeouter.cpp
+ *
+ */
+ 
+#include "timeouter.h"
+#include "CsyDebugLogger.h"
+
+
+CActiveTimeouter* CActiveTimeouter::NewL(MTimeoutObserver& aObserver)
+/**
+ * 2 phase constructor. Call this function to create a new 
+ * active timeouter object.
+ *
+ * @param aObserver reference to the Observer object
+ * @return a newly created CActiveTimeouter object
+ */
+	{
+	CActiveTimeouter* p = new (ELeave) CActiveTimeouter(aObserver);
+	CleanupStack::PushL(p);
+	p->ConstructL(); 
+	CleanupStack::Pop(p);
+	return p;
+	}
+
+CActiveTimeouter::~CActiveTimeouter()
+/**
+ * Destructor
+ */
+	{
+	Cancel();
+	}
+
+void CActiveTimeouter::Start(const TTimeIntervalMicroSeconds32& aTimeoutMs)
+/**
+ * Start a timeout
+ *
+ * @param aTimeoutMs The timeout period in microseconds
+ */
+	{
+	Stop(); //Cancel current request if there is one
+	iStatus = KRequestPending;
+	After(aTimeoutMs);
+	}
+  
+void CActiveTimeouter::Stop()
+/**
+ * Stop the timer (if running)
+ */
+	{
+
+	if (IsActive())
+	      Cancel();
+	}
+
+CActiveTimeouter::CActiveTimeouter(MTimeoutObserver& aObserver)
+/**
+ * Constructor
+ *
+ * @param aObserver reference to the Observer object
+ */
+ :	CTimer(CActive::EPriorityStandard),
+	iTheTimeoutObserver(aObserver)
+	{
+	CLASSNAMEINIT(CActiveTimeouter)
+
+	CActiveScheduler::Add(this);
+	}
+
+void CActiveTimeouter::RunL()
+/**
+ * Called by the Active Scheduler when the timeout completes.
+ * This function calls the TimedOut() function implemented 
+ * by the observer.
+ */
+	{
+	iTheTimeoutObserver.TimedOut();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/test/Csy27010UnitTest.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1739 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This contains the Unit Tests dealing with CSY 0710 related
+// *               functionality as documented in the project's Unit Test Spec.
+// *
+// *               The tests may be run either interactively or automatically.
+// *
+// *               The tests are dependant on a predictable response from
+// *               the BP side according to the test spec.
+// *
+// *               The automated tests achieve this predictable response by
+// *               using the Tester component.
+//
+
+// Csy0710UnitTest.cpp
+
+/** @file Csy0710UnitTest.cpp
+ *
+ */
+
+#include "Csy27010UnitTest.h"
+#include <exterror.h>
+
+
+_LIT8(KATCommand1,  "AT+CGMM\r");
+_LIT8(KATCommand2,  "AT+CGMM\r");
+_LIT8(KATCommand3,  "AT+CMUX?\r");
+_LIT8(KATCommand4,  "AT\r");
+_LIT8(KATCommand5,  "AT+CGMI\r");
+_LIT8(KATCommand6,  "AT+CGSN\r");
+_LIT8(KATCommand7,  "AT+CGMR\r");
+_LIT8(KATCommand8,  "AT+CBC\r");
+_LIT8(KATCommand9,  "AT+CSQ\r");
+_LIT8(KATCommand10, "ATS7?\r");
+_LIT8(KATCommand11, "ATS0=5\r");
+_LIT8(KATCommand12, "AT+FCLASS=2.0\r");
+_LIT8(KATCommand13, "AT+CRC=?\r");
+
+//_LIT8(KATCommandToCancel, "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r");
+_LIT8(KATCommandToCancel, "AT\r");
+
+//-----------------------------------------------------------------------------
+// Helper routines
+//-----------------------------------------------------------------------------
+//
+
+TBool CCsy0710UnitTest::HasTestRangesDefined()
+	{
+	return ETrue;
+	}
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+CCsy0710UnitTest* CCsy0710UnitTest::NewL(const TDesC& aUnitTestName,
+								 const TDesC& aLogFileName,
+							     const TDesC& aTestSpecName,
+							     const TDesC& aTestScriptName)
+	{
+	CCsy0710UnitTest* self = new(ELeave) CCsy0710UnitTest(aUnitTestName,
+				aLogFileName, aTestSpecName, aTestScriptName);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CCsy0710UnitTest::~CCsy0710UnitTest()
+	{
+	}
+
+
+CCsy0710UnitTest::CCsy0710UnitTest(const TDesC& aUnitTestName,
+						   const TDesC& aLogFileName,
+						   const TDesC& aTestSpecName,
+						   const TDesC& aTestScriptName)
+: CUnitTestBase(aUnitTestName, aLogFileName, aTestSpecName, aTestScriptName)
+	{}
+
+
+void CCsy0710UnitTest::ConstructL()
+	{	
+	CUnitTestBase::ConstructL();
+	
+	iCmdPortName[0].Copy(_L("gsm0710::1"));
+	iCmdPortName[1].Copy(_L("gsm0710::2"));
+	iCmdPortName[2].Copy(_L("gsm0710::3"));
+	iCmdPortName[3].Copy(_L("gsm0710::4"));
+	iDataPort1Name.Copy(_L("gsm0710::101"));
+	}
+
+void CCsy0710UnitTest::PrintTestSpecIdentifiers()
+	{
+	iTest.Printf(_L("\nCSY 0710 Unit Test\n\n"));
+	iTest.Printf(_L("1: CSY A tests\n"));
+	iTest.Printf(_L("2: CSY B tests\n"));
+	iTest.Printf(_L("3: CSY C tests\n"));
+	iTest.Printf(_L("4: CSY D tests\n"));
+	iTest.Printf(_L("5: CSY E tests\n"));
+	iTest.Printf(_L("6: CSY F tests\n"));
+	iTest.Printf(_L("7: CSY G tests\n"));
+	iTest.Printf(_L("8: CSY H tests\n"));
+	}
+
+
+void CCsy0710UnitTest::PrintTestDetails(TInt /*aTstSpecNumber*/)
+	{
+	// This version prints no helpful info on the screen. Overload this in
+	// your own test class to put out test details for the test spec idenifier
+	// selected
+	}
+
+
+void CCsy0710UnitTest::RunTestsL(TBool aEndInd,TTestMode aTestMode,
+								 TInt& aErrCode, TInt& aLeaveCode, 
+								 TInt aApiNumber, TInt aTestNumber)
+	{
+	switch (aApiNumber)
+		{
+		case 0:
+			aLeaveCode = KErrNone;
+			aErrCode = 8;  // 8 more tests
+			break;
+		case 1:
+			TRAP(aLeaveCode,aErrCode = CsyAL(aTestNumber));
+			break;
+		case 2:
+			TRAP(aLeaveCode,aErrCode = CsyBL(aTestNumber));
+			break;
+		case 3:
+			TRAP(aLeaveCode,aErrCode = CsyCL(aTestNumber));
+			break;
+		case 4:
+			TRAP(aLeaveCode,aErrCode = CsyDL(aTestNumber));
+			break;
+		case 5:
+			TRAP(aLeaveCode,aErrCode = CsyEL(aTestNumber));
+			break;
+		case 6:
+			TRAP(aLeaveCode,aErrCode = CsyFL(aTestNumber));
+			break;
+		case 7:
+			TRAP(aLeaveCode,aErrCode = CsyGL(aTestNumber));
+			break;
+		case 8:
+			TRAP(aLeaveCode,aErrCode = CsyHL(aTestNumber));
+			break;
+		default:
+			ActionNoMatch(aEndInd,aTestMode,aApiNumber, aTestNumber);
+		}
+
+	//CloseAllResources();
+	}
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+
+TInt CCsy0710UnitTest::CsyAL(TInt aTstNum)
+/**
+ * CSY Information Tests
+ * @param aTstNum test number
+ * @return KErrNone or error code
+ */
+	{
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYA-%d\n"), aTstNum);
+
+	TInt ret = KErrNone;
+
+	SetTsIdentifier(_L("CSYA"));
+	SetMethodName(_L("CSYA"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (4);
+			break;
+
+		case 1:		// Start C32
+			iTest.Printf(_L("Start C32...\n"));	
+			SetFunIndex(1);
+			TEST(LoadSerialDeviceDrivers());
+			ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			iTest.Printf(_L("Test 1-1 Passed\n"));
+			return (KErrNone);
+			break;
+
+		case 2:		// Load and Unload CSY multiple times
+			iTest.Printf(_L("Basic check on something else..\n"));	
+			SetFunIndex(1);
+			TEST(LoadSerialDeviceDrivers());
+			ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+			iCommServer.Close();
+			iTest.Printf(_L("Test 1-2 Passed\n"));
+			return (KErrNone);
+			break;
+
+		case 3:		// Open Multiple Sessions to C32
+			iTest.Printf(_L("Open Multiple Sessions to C32...\n"));	
+			SetFunIndex(1);
+			TEST(LoadSerialDeviceDrivers());
+			ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			TEST(OpenAllCommPorts());
+			User::After(5000000);
+			CloseAllCommPorts();
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			User::After(3000000);
+			iTest.Printf(_L("Test 1-3 Passed\n"));
+			return (KErrNone);
+			break;
+
+		case 4: 		// Check that the phone supports the expected extensions
+			iTest.Printf(_L("Get CSY Info...\n"));	
+			SetFunIndex(1);
+			TEST(LoadSerialDeviceDrivers());
+			ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			TEST(GetCsyInfo());
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();			
+			User::After(5000000);
+			return KErrNone;
+			break;
+
+					// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			{
+			return 0;
+			}
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYA-%d **\n"), aTstNum);
+			break;
+		}
+
+	return ret;
+	}
+
+
+TInt CCsy0710UnitTest::CsyBL(TInt aTstNum)
+/**
+ * CSY Open and Close Logical Ports Tests
+ * @param aTstNum test number
+ * @return void
+ */
+	{
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYB-%d\n"), aTstNum);
+
+	TInt ret = KErrNone;
+
+	SetTsIdentifier(_L("CSYB"));
+	SetMethodName(_L("CSYB"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (6);
+			break;
+
+		case 1:		// open & close subsessions
+			iTest.Printf(_L("Open & Close Subsessions...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+			ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(OpenAllCommPorts());
+			CloseAllCommPorts();
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 2-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 2:		// check failure to open comm port	
+			iTest.Printf(_L("Check failure to open comm port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(OpenCommPortFail());
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 2-2 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 3:		// open many ports
+			iTest.Printf(_L("Open many RComm ports...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(OpenAllCommPorts());
+			User::After(5000000);
+			CloseAllCommPorts();
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 2-3 Passed\n"));
+			User::After(3000000);
+			return (KErrNone);
+			break;
+
+		case 4:		// check ability to open same port twice
+			iTest.Printf(_L("Check ability to open RComm port twice...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(OpenCmdPortTwice());
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 2-4 Passed\n"));
+			User::After(3000000);
+			return (KErrNone);
+			break;
+
+		case 5:		// open many subsessions at same time
+			iTest.Printf(_L("Open many RComm ports at same time...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(OpenAllCommPorts());
+			User::After(5000000);
+			CloseAllCommPorts();
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 2-5 Passed\n"));
+			User::After(3000000);
+			return (KErrNone);
+			break;
+
+		case 6:		// check failure to open port with an invalid name
+			iTest.Printf(_L("Check failure to open port with invalid name...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(OpenCmdPortInvalidName());
+			User::After(5000000);
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			User::After(1000000);
+			iTest.Printf(_L("Test 2-6 Passed\n"));
+			User::After(2000000);
+			return (KErrNone);
+			break;
+
+			
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			{
+			return 0;
+			}
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYB-%d **\n"), aTstNum);
+			break;
+		}
+
+	return (ret);
+	}
+
+
+TInt CCsy0710UnitTest::CsyCL(TInt aTstNum)
+/**
+ * CSY Data Transmission Tests.
+ * @param aTstNum test number
+ * @return void
+ */
+	{
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYC-%d\n"), aTstNum);
+
+	TInt ret = KErrNone;
+
+	SetTsIdentifier(_L("CSYC"));
+	SetMethodName(_L("CSYC"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (4);
+			break;
+
+		case 1:		// Check that information can be sent
+			iTest.Printf(_L("Send command on Comm Port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			TEST(SendCmdOneCommPort(0));
+			User::After(1000000);
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 3-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 2:		// Check that information can be sent
+			iTest.Printf(_L("Send multiple commands on Comm Port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			SendCmdsOneCommPort(0);
+			User::After(1000000);
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 3-2 Passed\n"));
+			User::After(3000000);
+			return (KErrNone);
+			break;
+			
+		case 3:		// check BP ack failure
+			iTest.Printf(_L("Test 3-3 Passed\n"));
+			SetFunIndex(1);
+			User::After(3000000);
+			return (KErrNone);
+
+		case 4:		// Check write cancel on outstanding cmd
+			iTest.Printf(_L("Cancel Write Request on Comm Port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			CancelWriteOneCommPort(0);
+			User::After(1000000);
+
+			// common exit test code
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 3-4 Passed\n"));
+			User::After(3000000);
+			return (KErrNone);
+			break;
+
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			{
+			return 0;
+			}
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYC-%d **\n"), aTstNum);
+			break;
+		}
+
+	return (ret);
+	}
+
+
+TInt CCsy0710UnitTest::CsyDL(TInt aTstNum)
+/**
+ * CSY Tests for receive data on channels.
+ * @param aTstNum test number
+ * @return KErrNone or error code
+ */
+	{
+	TInt ret = KErrNone;
+
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYD-%d\n"), aTstNum);
+
+	SetTsIdentifier(_L("CSYD"));
+	SetMethodName(_L("CSYD"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (2);
+			break;
+
+		case 1:		// Check that data can be received
+			iTest.Printf(_L("Recv Data on Comm Port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			TEST(RecvDataOneCommPort(0));
+			iCommPort[0].Close();
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 4-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 2:		// Check that data is received and given to the correct port
+			iTest.Printf(_L("Recv Data and Route to Correct Port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			ret = iCommPort[1].Open(iCommServer, iCmdPortName[1], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			ret = iCommPort[2].Open(iCommServer, iCmdPortName[1], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			ret = iCommPort[3].Open(iCommServer, iCmdPortName[1], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+
+			TEST(RecvDataOneCommPort(0));
+			TEST(RecvDataOneCommPort(1));
+			TEST(RecvDataOneCommPort(2));
+			TEST(RecvDataOneCommPort(3));
+
+			ret = iCommPort[4].Open(iCommServer, iDataPort1Name, ECommShared); //data port
+			if (ret != KErrNone) return __LINE__;
+			TEST(RecvDataOneCommPort(4)); //newly open port will take away the control of the dlc
+			iCommPort[4].Close();
+			// should return control of dlc
+
+			TEST(RecvDataOneCommPort(0));
+			TEST(RecvDataOneCommPort(1));
+			TEST(RecvDataOneCommPort(2));
+			TEST(RecvDataOneCommPort(3));
+
+			iCommPort[3].Close();
+			iCommPort[2].Close();
+			iCommPort[1].Close();
+			iCommPort[0].Close();
+			User::After(1000000);
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 4-2 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			{
+			return 0;
+			}
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYD-%d **\n"), aTstNum);
+			break;
+		}		
+			
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::CsyEL(TInt aTstNum)
+/**
+ * CSY Tests for flow control of data on logical ports.
+ * @param aTstNum test number
+ * @return KErrNone or error code
+ */
+	{
+	TInt ret = KErrNone;
+
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYE-%d\n"), aTstNum);
+
+	SetTsIdentifier(_L("CSYE"));
+	SetMethodName(_L("CSYE"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (1);
+			break;
+
+		case 1:		// Check that flow control signals correct port
+			iTest.Printf(_L("Verify Flow Control Signals to Correct Port...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			TEST(LoadSerialDeviceDrivers());
+            ret = StartC32();
+            if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+                TEST(ret);
+			TEST(iCommServer.Connect());
+			ret = iCommServer.LoadCommModule(KCsyName);
+			if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+			// specific test code
+			ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			ret = iCommPort[1].Open(iCommServer, iCmdPortName[1], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			ret = iCommPort[2].Open(iCommServer, iCmdPortName[2], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+			ret = iCommPort[3].Open(iCommServer, iCmdPortName[3], ECommShared);
+			if (ret != KErrNone) return __LINE__;
+
+			TEST(VerifyFlowControl(0));
+			TEST(VerifyFlowControl(1));
+			TEST(VerifyFlowControl(2));
+			TEST(VerifyFlowControl(3));
+
+			iCommPort[3].Close();
+			iCommPort[2].Close();
+			iCommPort[1].Close();
+			iCommPort[0].Close();
+			User::After(1000000);
+			iCommServer.UnloadCommModule(KCsyName);
+			iCommServer.Close();
+			iTest.Printf(_L("Test 5-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			{
+			return 0;
+			}
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYE-%d **\n"), aTstNum);
+			break;
+		}			
+			
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::CsyFL(TInt aTstNum)
+/**
+ * CSY Tests for 3GPP 27.010 compliance.
+ * @param aTstNum test number
+ * @return KErrNone or error code
+ */
+	{
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYF-%d\n"), aTstNum);
+
+	SetTsIdentifier(_L("CSYF"));
+	SetMethodName(_L("CSYF"));
+
+	iTest.Printf(_L("Verify 3GPP 27.010 Compliance\n"));	
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (8);
+			break;
+
+		case 1:		// Check that AT+CMUX is sent to enter mux mode
+			iTest.Printf(_L("Verify AT+CMUX is sent to enter Mux mode...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 2:		// Check that frames are created correctly
+			iTest.Printf(_L("Verify frames are created properly...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-2 Passed\n"));
+			User::After(2000000);
+			return KErrNone;
+			break;
+
+		case 3:		// Check that channels are created via SABM frames
+			iTest.Printf(_L("Verify channels are created via SABM frames...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-3 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 4:		// Check that received frames are validated
+			iTest.Printf(_L("Verify received frames are validated...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-4 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 5:		// Check that recv frames are ack'd with a UA frame
+			iTest.Printf(_L("Verify received frames are ack'd with a UA frame...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-5 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 6:		// Check that received modem status control frames are processed correctly
+			iTest.Printf(_L("Verify received modem status control frames are processed...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-6 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 7:		// Check that received flow control frames are processed correctly
+			iTest.Printf(_L("Verify received flow control frames are processed...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-7 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 8:		// Check that channel is closed by sending a DISC frame
+			iTest.Printf(_L("Verify channel is closed by when sending DISC frame...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			Verify0710Compliance();
+			iTest.Printf(_L("Test 6-8 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			return 0;
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYF-%d **\n"), aTstNum);
+			break;
+		}			
+			
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::CsyGL(TInt aTstNum)
+/**
+ * CSY Tests
+ * @param aTstNum test number
+ * @return KErrNone or error code
+ */
+	{
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYG-%d\n"), aTstNum);
+
+	SetTsIdentifier(_L("CSYG"));
+	SetMethodName(_L("CSYG"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (14);
+			break;
+
+		case 1:		// Verify no memory allocation until 1st port is opened
+			iTest.Printf(_L("Verify no memory allocation until 1st port is opened...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 2:		// Verify mux startup params are read
+			iTest.Printf(_L("Verify mux startup params are read...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-2 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 3:		// Verify correct serial port PDD is loaded
+			iTest.Printf(_L("Verify correct serial port PDD is loaded...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-3 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 4:		// Verify correct serial port LDD is loaded
+			iTest.Printf(_L("Verify correct serial port LDD is loaded...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-4 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 5:		// Check serial port startup config
+			iTest.Printf(_L("Verify serial port startup config...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-5 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 6:		// Check control channel 0 is created
+			iTest.Printf(_L("Verify control channel 0 is created...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-6 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 7:		// Check command and data channels are created
+			iTest.Printf(_L("Verify cmd and data channels are created...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-7 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 8:		// Verify enter mux AT command is issued to the BP
+			iTest.Printf(_L("Verify enter mux AT command is issued to BP...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-8 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 9:		// Verify cmd channels are setup disable cmd echo
+			iTest.Printf(_L("Verify cmd channels are setup to disable cmd echo...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-9 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 10:	// Verify C32 is informed of the CSY's serial name of "gsm0710"
+			iTest.Printf(_L("Verify C32 is informed of the CSY's serial name of gsm0710...\n"));	
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-10 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 11:	// Verify flow control is set to Off after channel init
+			iTest.Printf(_L("Verify Verify flow control is set to Off after channel init...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-11 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 12:	// Verify NotifyFlowControlChange requests are accepted
+			iTest.Printf(_L("Verify NotifyFlowControlChange requests are accepted...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-12 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 13:	// Verify NotifyFlowControlChange request can be cancelled
+			iTest.Printf(_L("Verify NotifyFlowControlChange request can be cancelled...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-13 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 14:	// Verify NotifyFlowControlChange requests are completed properly
+			iTest.Printf(_L("Verify NotifyFlowControlChange requests are completed properly...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			VerifyStartup();
+			iTest.Printf(_L("Test 7-14 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+			
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			return 0;
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYG-%d **\n"), aTstNum);
+			break;
+		}
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::CsyHL(TInt aTstNum)
+/**
+ * CSY Tests
+ * @param aTstNum test number
+ * @return KErrNone or error code
+ */
+	{
+	if (aTstNum != 0)
+		iTest.Printf(_L("CSYH-%d\n"), aTstNum);
+
+	SetTsIdentifier(_L("CSYH"));
+	SetMethodName(_L("CSYH"));
+
+	switch (aTstNum)
+		{
+		case 0:		// Return how may auto tests are present
+			return (5);
+			break;
+
+		case 1:		// Verify any active or outstanding requests are cancelled
+			iTest.Printf(_L("Verify any active or outstanding requests are cancelled...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			TEST(VerifyShutdown(1));
+			iTest.Printf(_L("Test 8-1 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 2:		// Verify each command channel and control channel is disconnected by sending DISC frame to BP
+			iTest.Printf(_L("Verify channels are disconnected by sending DISC frame to BP...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			TEST(VerifyShutdown(2));
+			iTest.Printf(_L("Test 8-2 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 3:		// Verify all memory allocated is deallocated
+			iTest.Printf(_L("Verify all memory allocated is deallocated...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			TEST(VerifyShutdown(3));
+			iTest.Printf(_L("Test 8-3 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 4:		// Verify all created objects are deleted
+			iTest.Printf(_L("Verify all created objects are deleted...\n"));
+			SetFunIndex(1);
+
+			// common test code
+			TEST(VerifyShutdown(4));
+			iTest.Printf(_L("Test 8-4 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+		case 5:		// Verify BP is returned to non-mux mode for AT commands.
+			iTest.Printf(_L("Verify BP is returned to non-mux mode for AT commands....\n"));
+			SetFunIndex(1);
+
+			// common test code
+			TEST(VerifyShutdown(5));
+			iTest.Printf(_L("Test 8-5 Passed\n"));
+			User::After(3000000);
+			return KErrNone;
+			break;
+
+			// Manual Tests Follow...
+		case 100:		// Return how many manual tests are present
+			return 0;
+			break;
+
+		default:
+			iTest.Printf(_L("** Not implemented CSYH-%d **\n"), aTstNum);
+			break;
+		}
+
+	return (KErrNone);
+	}
+
+
+////////////////////
+// Helper classes
+//
+TInt CCsy0710UnitTest::LoadSerialDeviceDrivers()
+	{
+#ifdef __WINS__
+	TInt ret;
+	_LIT(KPDDName,"ECDRV");
+	_LIT(KLDDName,"ECOMM");
+
+	ret= User::LoadPhysicalDevice(KPDDName);
+	if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+		return (ret);
+
+	ret = User::LoadLogicalDevice(KLDDName);
+	if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+		return (ret);
+#endif
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::OpenAllCommPorts()
+	{
+	TInt ret;
+
+	// Open RComm Ports
+	ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+			
+	// Open Port #2
+	ret = iCommPort[1].Open(iCommServer, iCmdPortName[1], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	// Open Port #3
+	ret = iCommPort[2].Open(iCommServer, iCmdPortName[2], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	// Open Port #4
+	ret = iCommPort[3].Open(iCommServer, iCmdPortName[3], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	return (KErrNone);
+	}
+
+			
+TInt CCsy0710UnitTest::CloseAllCommPorts()
+	{
+	iCommPort[0].Close();
+	iCommPort[1].Close();
+	iCommPort[2].Close();
+	iCommPort[3].Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::GetCsyInfo()
+	{
+	TInt ret;
+	TName csyName(_L("gsm0710"));
+	TSerialInfo serialInfo;
+
+	ret = iCommServer.GetPortInfo(csyName, serialInfo);
+	if (ret == KErrNone)
+		{
+		iTest.Printf(_L("    Descrip   = %S\n"), &serialInfo.iDescription);
+		iTest.Printf(_L("    Name      = %S\n"), &serialInfo.iName);
+		iTest.Printf(_L("    Low Unit  = %d\n"), serialInfo.iLowUnit);
+		iTest.Printf(_L("    High Unit = %d\n"), serialInfo.iHighUnit);
+		User::After(2000000);
+		}
+	return (ret);
+	}
+
+
+TInt CCsy0710UnitTest::OpenCommPortFail()
+	{
+	TInt ret;
+	TName invalidName = _L("gsm0710::A");
+
+	ret = iCommPort[0].Open(iCommServer, invalidName, ECommShared);
+	if (ret == KErrNone) return __LINE__;
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::OpenCmdPortTwice()
+	{
+	TInt ret;
+
+	// Open RComm Port once
+	ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommExclusive);
+	if (ret != KErrNone) return __LINE__;
+
+	// Open same RComm Port again
+	ret = iCommPort[1].Open(iCommServer, iCmdPortName[0], ECommExclusive);
+	if (ret != KErrNone) return __LINE__;
+
+	iCommPort[0].Close();
+	iCommPort[1].Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::OpenCmdPortInvalidName()
+	{
+	TInt ret;
+	TName invalidName = _L("gsm0710::A");
+
+	ret = iCommPort[0].Open(iCommServer, invalidName, ECommShared);
+	if (ret == KErrNone) return __LINE__;
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::SendCmdOneCommPort(TInt aPortNum)
+	{
+	TInt ret;
+
+	// Open RComm Port
+	ret = iCommPort[aPortNum].Open(iCommServer, iCmdPortName[aPortNum], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	// send data
+	TBuf8<32> buf;
+	buf.Copy(KATCommand1);
+
+	TRequestStatus writeRequestStatus = KRequestPending;
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+	
+	TEST(ReadDataFromCommPort(aPortNum));
+	
+	iCommPort[aPortNum].Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::SendCmdsOneCommPort(TInt aPortNum)
+	{
+	TInt ret;
+
+	// Open RComm Port
+	ret = iCommPort[aPortNum].Open(iCommServer, iCmdPortName[aPortNum], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	TRequestStatus writeRequestStatus;
+	TBuf8<32> buf;
+
+	// send data
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand1);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand2);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand3);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand4);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand5);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand6);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand7);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommand8);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+
+	TEST(ReadDataFromCommPort(aPortNum));
+
+	iCommPort[aPortNum].Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::CancelWriteOneCommPort(TInt aPortNum)
+	{
+	TInt ret;
+
+	// Open RComm Port
+	ret = iCommPort[aPortNum].Open(iCommServer, iCmdPortName[aPortNum], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	// wait for CSY to initialize
+	// check current flow control state
+	TFlowControl flow;
+	iCommPort[aPortNum].GetFlowControlStatus(flow);
+	if (flow == EFlowControlOn)
+		{
+		// Port isn't active yet - wait for it to become active
+		//gTest.Printf(_L("Waiting for port 1 to become active...\n\n"));
+		TRequestStatus flowReqStatus;
+		iCommPort[aPortNum].NotifyFlowControlChange(flowReqStatus, flow);
+		User::WaitForRequest(flowReqStatus);
+		if (flow == EFlowControlOn)
+			{
+			iTest.Printf(_L("Incorrect flow %d\n"), flow);
+			iTest.Printf(_L("*** CSY did not init properly!! ***\n"));
+			}
+		}
+
+	User::After(5000000);
+
+	TRequestStatus writeRequestStatus;
+	TBuf8<100> buf;
+
+	// send data
+	writeRequestStatus = KRequestPending;
+	buf.Copy(KATCommandToCancel);
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+
+	// cancel write request
+ 	iCommPort[aPortNum].WriteCancel();
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrCancel && writeRequestStatus != KErrNone) return __LINE__;
+
+	if (writeRequestStatus == KErrNone)
+		{
+		TEST(ReadDataFromCommPort(aPortNum));
+		}
+
+	iCommPort[aPortNum].Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::RecvDataOneCommPort(TInt aPortNum)
+	{
+	iTest.Printf(_L("  Port %d\n"), aPortNum);
+
+	// wait for CSY to initialize
+	// check current flow control state
+	TFlowControl flow;
+	iCommPort[aPortNum].GetFlowControlStatus(flow);
+	if (flow == EFlowControlOn)
+		{
+		// Port isn't active yet - wait for it to become active
+		TRequestStatus flowReqStatus;
+		iCommPort[aPortNum].NotifyFlowControlChange(flowReqStatus, flow);
+		User::WaitForRequest(flowReqStatus);
+		if (flow == EFlowControlOn) return __LINE__;
+		}
+
+	User::After(5000000);
+
+
+	// send data
+	TBuf8<32> buf;
+	buf.Copy(KATCommand1);
+
+	TRequestStatus writeRequestStatus = KRequestPending;
+ 	iCommPort[aPortNum].Write(writeRequestStatus, buf, buf.Length());
+	User::WaitForRequest(writeRequestStatus);
+	if (writeRequestStatus != KErrNone) return __LINE__;
+	
+
+	// Recv Data
+	TRequestStatus readRequestStatus = KRequestPending;
+	TBuf8<80> respBuf;
+	// gTest.Printf(_L("Port 1 Read ...\n"));
+ 	iCommPort[aPortNum].ReadOneOrMore(readRequestStatus,respBuf);
+	User::WaitForRequest(readRequestStatus);
+	if (readRequestStatus != KErrNone) return __LINE__;
+
+	User::After(100000);
+
+	// see if there is any more data to read
+ 	TInt extraRecvData = 0;
+	while ((extraRecvData = iCommPort[aPortNum].QueryReceiveBuffer()) > 0)
+		{
+		respBuf.Zero();
+		readRequestStatus = KRequestPending;
+ 		iCommPort[aPortNum].ReadOneOrMore(readRequestStatus, respBuf);
+ 		//iCommPort[aPortNum].Read(readRequestStatus, respBuf);
+		User::WaitForRequest(readRequestStatus);
+		if (readRequestStatus != KErrNone) return __LINE__;
+		}
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::ReadDataFromCommPort(TInt aPortNum)
+	{
+	// Recv Data
+	TRequestStatus readRequestStatus = KRequestPending;
+	TBuf8<80> respBuf;
+ 	iCommPort[aPortNum].ReadOneOrMore(readRequestStatus, respBuf);
+	User::WaitForRequest(readRequestStatus);
+	if (readRequestStatus != KErrNone) return __LINE__;
+
+	User::After(100000);
+
+	// see if there is any more data to read
+ 	TInt extraRecvData = 0;
+	while ((extraRecvData = iCommPort[aPortNum].QueryReceiveBuffer()) > 0)
+		{
+		respBuf.Zero();
+		readRequestStatus = KRequestPending;
+ 		iCommPort[aPortNum].ReadOneOrMore(readRequestStatus, respBuf);
+		User::WaitForRequest(readRequestStatus);
+		if (readRequestStatus != KErrNone) return __LINE__;
+		}
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::VerifyFlowControl(TInt aPortNum)
+	{
+	iTest.Printf(_L("  Port %d\n"), aPortNum);
+
+	// check current flow control state
+	TFlowControl flow;
+	iCommPort[aPortNum].GetFlowControlStatus(flow);
+	if (flow == EFlowControlOn)
+		{
+		// Port isn't active yet - wait for it to become active
+		TRequestStatus flowReqStatus;
+		iCommPort[aPortNum].NotifyFlowControlChange(flowReqStatus, flow);
+		User::WaitForRequest(flowReqStatus);
+		if (flow == EFlowControlOn)
+			{
+			iTest.Printf(_L("Incorrect flow %d\n"), flow);
+			iTest.Printf(_L("*** CSY did not init properly!! ***\n"));
+			}
+		}
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::Verify0710Compliance()
+	{
+	TInt ret;
+
+	TEST(LoadSerialDeviceDrivers());
+    ret = StartC32();
+    if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+       TEST(ret);
+	TEST(iCommServer.Connect());
+	ret = iCommServer.LoadCommModule(KCsyName);
+	if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+	// specific test code
+	ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[1].Open(iCommServer, iCmdPortName[1], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[2].Open(iCommServer, iCmdPortName[2], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[3].Open(iCommServer, iCmdPortName[3], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	TEST(VerifyFlowControl(0));
+	TEST(VerifyFlowControl(1));
+	TEST(VerifyFlowControl(2));
+	TEST(VerifyFlowControl(3));
+
+	iCommPort[3].Close();
+	iCommPort[2].Close();
+	iCommPort[1].Close();
+	iCommPort[0].Close();
+	User::After(1000000);
+	iCommServer.UnloadCommModule(KCsyName);
+	iCommServer.Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::VerifyStartup()
+	{
+	TInt ret;
+
+	TEST(LoadSerialDeviceDrivers());
+    ret = StartC32();
+    if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+        TEST(ret);
+	TEST(iCommServer.Connect());
+	ret = iCommServer.LoadCommModule(KCsyName);
+	if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+	// specific test code
+	ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[1].Open(iCommServer, iCmdPortName[1], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[2].Open(iCommServer, iCmdPortName[2], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[3].Open(iCommServer, iCmdPortName[3], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	TEST(VerifyStartupFlowControl(0));
+	TEST(VerifyStartupFlowControl(1));
+	TEST(VerifyStartupFlowControl(2));
+	TEST(VerifyStartupFlowControl(3));
+
+	iCommPort[3].Close();
+	iCommPort[2].Close();
+	iCommPort[1].Close();
+	iCommPort[0].Close();
+	User::After(1000000);
+	iCommServer.UnloadCommModule(KCsyName);
+	iCommServer.Close();
+
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::VerifyStartupFlowControl(TInt aPortNum)
+	{
+	// check current flow control state
+	TFlowControl flow;
+	iCommPort[aPortNum].GetFlowControlStatus(flow);
+	if (flow == EFlowControlOn)
+		{
+		// Port isn't active yet - wait for it to become active
+		TRequestStatus flowReqStatus;
+		iCommPort[aPortNum].NotifyFlowControlChange(flowReqStatus, flow);
+		User::WaitForRequest(flowReqStatus);
+		if (flow == EFlowControlOn)
+			{
+			iTest.Printf(_L("Incorrect flow %d\n"), flow);
+			iTest.Printf(_L("*** CSY did not init properly!! ***\n"));
+			}
+		}
+	return (KErrNone);
+	}
+
+
+TInt CCsy0710UnitTest::VerifyShutdown(TInt aTestSubset)
+	{
+	aTestSubset = aTestSubset;
+	TInt ret;
+
+	TEST(LoadSerialDeviceDrivers());
+    ret = StartC32();
+    if ((ret != KErrNone) && (ret != KErrAlreadyExists))
+        TEST(ret);
+	TEST(iCommServer.Connect());
+	ret = iCommServer.LoadCommModule(KCsyName);
+	if (ret!=KErrNone && ret!=KErrAlreadyExists) return __LINE__;
+
+	// specific test code
+	ret = iCommPort[0].Open(iCommServer, iCmdPortName[0], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[1].Open(iCommServer, iCmdPortName[1], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[2].Open(iCommServer, iCmdPortName[2], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+	ret = iCommPort[3].Open(iCommServer, iCmdPortName[3], ECommShared);
+	if (ret != KErrNone) return __LINE__;
+
+	TEST(VerifyStartupFlowControl(0));
+	TEST(VerifyStartupFlowControl(1));
+	TEST(VerifyStartupFlowControl(2));
+	TEST(VerifyStartupFlowControl(3));
+
+	iCommPort[3].Close();
+	iCommPort[2].Close();
+	iCommPort[1].Close();
+	iCommPort[0].Close();
+	User::After(1000000);
+	iCommServer.UnloadCommModule(KCsyName);
+	iCommServer.Close();
+
+	return (KErrNone);
+	}
+
+
+/////////////////////////////////////////////////
+//The following functions also need to be implemented by
+//CUnitTestBase derived classes 
+
+void CCsy0710UnitTest::CreateTestL()
+/**
+ *
+ *
+ */
+	{
+	CCsy0710UnitTest* unitTest=CCsy0710UnitTest::NewL(
+		KCsy0710UnitTest, KCsy0710UnitTestLog, KUnitTestSpec, KCsy0710UnitTestScript);
+
+	CleanupStack::PushL(unitTest);
+
+	TInt ret=unitTest->SetUpTest();
+	
+	if(!ret)
+		{
+		unitTest->RunUnitTestsL();
+		}
+	
+	unitTest->Test().End();
+	
+	CleanupStack::PopAndDestroy(1); //unitTest
+	}
+
+
+#ifndef _ACCEPTANCE_TESTS
+
+GLDEF_C TInt E32Main()
+//
+// Main entry point - make sure everything is going.
+//
+#ifdef BUILD_FOR_JETSTREAM
+	{
+	RProcess().SecureApi(RProcess::ESecureApiOn);
+	RProcess().DataCaging(RProcess::EDataCagingOn);
+	// We must include the brace in the #ifndef to allow the security
+	// checking script 'perl.txt' to pass.
+#else
+	{
+#endif // BUILD_FOR_JETSTREAM
+	CTrapCleanup* cleanup=CTrapCleanup::New(); // get clean-up stack
+
+	TRAPD(ret,CCsy0710UnitTest::CreateTestL());
+
+	delete cleanup;
+	return KErrNone;        
+	}
+
+#endif //_ACCEPTANCE_TESTS
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/test/Csy27010UnitTest.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,117 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This defines the Unit Tests dealing with CSY 0710 related
+// *               functionality as documented in the project's Unit Test Spec.
+// *
+// *               The tests may be run either interactively or automatically.
+// *
+// *               The tests are dependant on a predictable response from
+// *               the BP side according to the test spec.
+// *
+// *               The automated tests achieve this predictable response by
+// *               using the Tester component.
+//
+
+// Csy0710UnitTest.h
+
+/** @file Csy0710UnitTest.h
+ *
+ */
+ 
+#ifndef CSY0710UNITTEST_H__
+#define CSY0710UNITTEST_H__
+
+#include "unitTestBase.h"
+
+_LIT(KCsy0710UnitTest,       "Csy0710UnitTest");
+_LIT(KCsy0710UnitTestLog,    "Csy0710UnitTestLog.txt");
+_LIT(KCsy0710UnitTestScript, "Csy0710UnitTest.cpp;");
+
+const TInt KMaxCommPorts = 4;
+
+const TInt  KMaxDataSessions = 3;
+
+
+class CCsy0710UnitTest : public CUnitTestBase
+	{
+public:
+	static void CreateTestL(); //NewL() is called within this function
+
+	static CCsy0710UnitTest* NewL(const TDesC& aUnitTestName,
+								  const TDesC& aLogFileName,
+								  const TDesC& aTestSpecName,
+								  const TDesC& aTestScriptName);
+	~CCsy0710UnitTest();
+
+private:
+	CCsy0710UnitTest(const TDesC& aUnitTestName,const TDesC& aLogFileName,
+				 const TDesC& aTestSpecName,const TDesC& aTestScriptName);
+
+	void ConstructL();
+
+	// from CUnitTestBase
+	virtual void RunTestsL(TBool aEndInd,TTestMode aTestMode,
+						   TInt& aErrCode, TInt& aLeaveCode, 
+		                   TInt aApiNumber,TInt aTestNumber);
+
+	// tests to be called within RunTestsL()
+	TInt CsyAL(TInt aTstNum);  // 1
+	TInt CsyBL(TInt aTstNum);  // 2
+	TInt CsyCL(TInt aTstNum);  // 3
+	TInt CsyDL(TInt aTstNum);  // 4
+	TInt CsyEL(TInt aTstNum);  // 5
+	TInt CsyFL(TInt aTstNum);  // 6
+	TInt CsyGL(TInt aTstNum);  // 7
+	TInt CsyHL(TInt aTstNum);  // 8
+
+private:
+
+	void PrintTestSpecIdentifiers();
+	void PrintTestDetails(TInt aTstSpecNumber);
+
+	TBool HasTestRangesDefined();
+
+	// Helper functions
+	void CloseAllResources();
+
+	TInt LoadSerialDeviceDrivers();
+	TInt OpenAllCommPorts();
+	TInt CloseAllCommPorts();
+	TInt GetCsyInfo();
+	TInt OpenCommPortFail();
+	TInt OpenCmdPortTwice();
+	TInt OpenCmdPortInvalidName();
+	TInt SendCmdOneCommPort(TInt aPortNum);
+	TInt SendCmdsOneCommPort(TInt aPortNum);
+	TInt CancelWriteOneCommPort(TInt aPortNum);
+	TInt RecvDataOneCommPort(TInt aPortNum);
+	TInt ReadDataFromCommPort(TInt aPortNum);
+	TInt VerifyFlowControl(TInt aPortNum);
+	TInt Verify0710Compliance();
+	TInt VerifyStartup();
+	TInt VerifyStartupFlowControl(TInt aPortNum);
+	TInt VerifyShutdown(TInt aTestSubset);
+
+private:
+	RCommServ   iCommServer;
+	RComm       iCommPort[KMaxCommPorts + 1];
+	RComm		iDataPort;
+	TName       iCmdPortName[KMaxCommPorts];
+	TName       iDataPort1Name;
+	};
+
+#endif//END Csy0710UnitTest_H__
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/test/Csy27010UnitTest.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,46 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:
+//
+
+/** @Csy27010UnitTest.mmp
+ *
+ * Top-level project file for CSY 3GPP 27.010
+ *
+ */
+ 
+TARGET			Csy0710UnitTest.EXE
+TARGETTYPE    EXE
+
+#ifdef BUILD_FOR_JETSTREAM
+MACRO		__SECURE_API__
+MACRO		__DATA_CAGING__
+CAPABILITY	ALL -ROOT
+#endif
+
+SOURCEPATH	  .
+SOURCE        Csy27010UnitTest.cpp
+
+SOURCEPATH    ..\test\unit_test_base
+SOURCE        UnitTestBase.cpp
+
+
+USERINCLUDE   .
+USERINCLUDE   ..\test\unit_test_base
+
+
+SYSTEMINCLUDE \epoc32\include
+
+LIBRARY       euser.lib C32.lib efsrv.lib
+//DEBUGLIBRARY flogger.lib 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/test/unit_test_base/unitTestBase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1266 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the implementation for the base class from 
+// *               which all unit test classes are derived.
+//
+
+// UnitTestBase.cpp
+
+/** @file UnitTestBase.cpp
+ *
+ */
+
+#include "unitTestBase.h"
+
+// This indicates that the CSY is loaded by the TSY
+#define LOADED_BY_TSY	1
+
+//
+// CUnitTestBase
+//
+
+// These methods can be overwritten
+
+TBool CUnitTestBase::HasTestRangesDefined()
+	{
+	return EFalse;
+	}
+
+
+void CUnitTestBase::ConstructL()
+/**
+ *
+ *
+ */
+	{
+	//LOGTEXT(">>ConstructL");
+
+	User::LeaveIfError(iFs.Connect());
+	User::LeaveIfError(iFs.SetSessionPath(KTestSessionPath));
+
+	TInt err=iLogFile.Open(iFs,iLogFileName, EFileWrite);
+
+	if (err==KErrNotFound) // file does not exist - create it
+		{
+		err = iLogFile.Create(iFs, iLogFileName, EFileWrite);
+		}
+	// In simultaneous tests, someone else may have created it between our
+	// calls to Open and Create, so no 'else' here.
+	if ( err == KErrInUse || err == KErrAlreadyExists )
+		{
+		//LOGTEXT("Distinct logging required");
+
+		// Same filename already open by someone else. In order to run more
+		// than one test in, say, BasicCall at once AND have logging that
+		// works, create distinct log files when required.
+		TInt n = 0;
+		while ( err == KErrInUse || err == KErrAlreadyExists )
+			{
+			TName newLogFileName(iLogFileName);
+			n++;
+			newLogFileName.AppendFormat(_L("%d"),n);
+			err = iLogFile.Open(iFs, newLogFileName, EFileWrite);
+			if (! err)
+				{
+				TInt pos = 0;
+				iLogFile.Seek(ESeekEnd, pos);
+				}
+			if ( err == KErrNotFound )
+				{
+				err = iLogFile.Create(iFs, newLogFileName, EFileWrite);
+				break;
+				}
+			}
+		}
+
+	if (err)
+		{
+		iTest.Printf(_L("Couldn't open log file (%d). Does the %S path exist?\n"), err, &KTestSessionPath);
+		User::After(4000000);
+		User::Leave(err);
+		}
+	TInt pos = 0;
+	iLogFile.Seek(ESeekEnd, pos);
+
+	err = iLogFile.Write(_L8("#------------------------Test Run Start-------------------------\r\n"));
+	iLogFile.Flush();
+
+	}
+
+CUnitTestBase::CUnitTestBase(const TDesC& aUnitTestName,
+							 const TDesC& aLogFileName,
+							 const TDesC& aTestSpecName,
+							 const TDesC& aTestScriptName)
+/**
+ *
+ *
+ */
+	:iTest(aUnitTestName),
+	 iUnitTestName(aUnitTestName),
+	 iLogFileName(aLogFileName),
+	 iTestScriptName(aTestScriptName),
+	 iTestSpecName(aTestSpecName)
+	{
+#ifndef __WINS__
+	iTest.SetLogged(EFalse);
+#endif // __WINS__
+	}
+
+CUnitTestBase::~CUnitTestBase()
+/**
+ *
+ *
+ */
+	{
+	iFailedTests.Close();
+
+	if (iLogFile.SubSessionHandle())
+		{
+		iLogFile.Write(_L8("#------------------------Test Run End-------------------------\r\n"));
+		iLogFile.Flush();
+		}
+	iLogFile.Close();
+	iFs.Close();
+	iTest.Close();
+	}
+
+void CUnitTestBase::ResizeConsoleL(const TDesC& aName, TInt aXOrg, TInt aYOrg, TInt aXSize, TInt aYSize)
+	{
+#if defined (__WINS__)
+	CConsoleBase* cons = iTest.Console();
+	CConsoleBase* newCon = NULL;
+
+	TRAPD(err,newCon = Console::NewL(aName,TSize(aXSize,aYSize)));
+	if (!err)
+		{
+		(void)aXOrg; (void)aYOrg; //unable to use these without a dirty hack!
+		delete cons;
+		iTest.SetConsole(newCon);
+		}
+#else //__WINS__
+	(void)aName; (void)aXOrg; (void)aYOrg; (void)aXSize; (void)aYSize;
+#endif //__WINS__
+	}
+
+TBool CUnitTestBase::DoSingleTestL(TInt aMethodNum, TInt aTestNum, TTestMode aTestMode)
+	{
+	//LOGTEXT3(">>DoSingleTestL [aMethodNum=%d, aTestNum=%d]",aMethodNum,aTestNum);
+
+	TInt numMethods;
+	TInt numTests;
+	TInt errorCode;
+	TInt leaveCode;
+
+	// Check if the specified test is in a valid range - if we can
+	if (HasTestRangesDefined())
+		{
+		RunTestsL(EFalse, EBatch, numMethods, leaveCode, 0, 0);
+
+		// Check that the method number is correct
+		if (aMethodNum == 0 || aMethodNum > numMethods)
+			{
+			iTest.Printf(_L("Bad method number: %d - Needs to be in range 1 to %d\n"),
+						aMethodNum, numMethods);
+			iTest.Printf(_L("Press a key when ready\n"));
+			iTest.Console()->Getch();
+			//LOGTEXT("<<DoSingleTestL bad method number");
+			return ETrue;
+			}
+
+
+		TInt testRange = 0;
+		if (aTestNum > 100) testRange = 100;
+
+		// Get the number of tests for this method and test if aTestNum is in range
+		RunTestsL(EFalse, EBatch, numTests, leaveCode, aMethodNum, testRange);
+		numTests += testRange;
+
+		if (aTestNum <= testRange || aTestNum > numTests)
+			{
+			iTest.Printf(_L("Bad test number (%d) for method %d - Needs to be in range %d to %d\n"),
+						aTestNum, aMethodNum, testRange+1, numTests);
+			iTest.Printf(_L("Press a key when ready\n"));
+			iTest.Console()->Getch();
+			//LOGTEXT("<<DoSingleTestL bad test number");
+			return ETrue;
+			}
+		}
+
+	errorCode = KErrNone;
+	leaveCode = KErrNone;
+
+	RunTestsL(EFalse, aTestMode, errorCode, leaveCode, aMethodNum,aTestNum);
+
+	LogTestResult(errorCode, leaveCode, EFalse, aMethodNum, aTestNum, aTestMode);
+
+	//LOGTEXT("<<DoSingleTestL ETrue");
+	return ETrue;
+	}
+
+TBool CUnitTestBase::DoAutoMethodTestsL(TInt aMethodNum)
+	{
+	//LOGTEXT2(">>DoAutoMethodTestsL [aMethodNum=%d]",aMethodNum);
+
+	TInt numMethods;
+	TInt numTests;
+	TInt errorCode;
+	TInt leaveCode;
+
+	if (! HasTestRangesDefined())
+		{
+		iTest.Printf(_L("Cannot auto run tests as test ranges not implemented\n"));
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+
+	// Check that the method number is correct
+	RunTestsL(EFalse, EBatch, numMethods, leaveCode, 0, 0);
+
+	if (aMethodNum == 0 || aMethodNum > numMethods)
+		{
+		iTest.Printf(_L("Bad method number: %d - Needs to be in range 1 to %d\n"),
+					aMethodNum, numMethods);
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+
+
+	// Get the number of automated tests for this method
+	RunTestsL(EFalse, EBatch, numTests, leaveCode, aMethodNum, 0);
+
+	for (TInt testIndex = 1; testIndex <= numTests; testIndex++)
+		{
+		errorCode = KErrNone;
+		leaveCode = KErrNone;
+
+		RunTestsL(EFalse, EBatch, errorCode, leaveCode, aMethodNum, testIndex);
+		LogTestResult(errorCode, leaveCode, EFalse, aMethodNum, testIndex, EBatch);
+
+		if (errorCode || leaveCode)
+			{
+			TTestFailure theFailedTest(aMethodNum, testIndex);
+			(void) iFailedTests.Append(theFailedTest);
+			}
+		}
+
+	//LOGTEXT("<<DoAutoMethodTestsL");
+	return ETrue;
+	}
+
+TBool CUnitTestBase::DoTestsInSpecifiedRangeL(TInt aStartMethodNum,
+											  TInt aStartTestNum,
+											  TInt aEndMethodNum,
+											  TInt aEndTestNum)
+	{
+	//LOGTEXT3(">>DoTestsInSpecifiedRangeL [aStartMethodNum=%d, aEndMethodNum=%d]",
+	//	aStartMethodNum,aEndMethodNum);
+
+	TInt numMethods;
+	TInt numTests;
+	TInt errorCode;
+	TInt leaveCode;
+
+	if (! HasTestRangesDefined())
+		{
+		iTest.Printf(_L("Cannot auto run tests as test ranges not implemented\n"));
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+
+	// Check that the method number is correct
+	RunTestsL(EFalse, EBatch, numMethods, leaveCode, 0, 0);
+
+	if (aStartMethodNum == 0 || aStartMethodNum > numMethods)
+		{
+		iTest.Printf(_L("Bad method number: %d - Needs to be in range 1 to %d\n"),
+					aStartMethodNum, numMethods);
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+	if (aEndMethodNum == 0 || aEndMethodNum > numMethods)
+		{
+		iTest.Printf(_L("Bad method number: %d - Needs to be in range 1 to %d\n"),
+					aEndMethodNum, numMethods);
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+	if (aEndMethodNum == -1)
+		aEndMethodNum = numMethods;
+
+	for (TInt methodIndex = aStartMethodNum; methodIndex <= aEndMethodNum; methodIndex++)
+		{
+		TInt testIndex;
+
+		if ((methodIndex < aEndMethodNum) || (aEndTestNum == -1))
+			{
+			// Get the number of automated tests for the current method
+			RunTestsL(EFalse, EBatch, numTests, leaveCode, methodIndex, 0);
+			}
+		else
+			{
+			// Finish on a specified test.
+			numTests = aEndTestNum;
+			}
+
+		if (methodIndex == aStartMethodNum)
+			testIndex = aStartTestNum;
+		else
+			testIndex = 1;
+
+		iTest.Printf(_L("Running tests %d to %d in method %d\n"),
+			testIndex, numTests, methodIndex);
+		for (; testIndex <= numTests; testIndex++)
+			{
+			errorCode = KErrNone;
+			leaveCode = KErrNone;
+
+			RunTestsL(EFalse, EBatch, errorCode, leaveCode, methodIndex, testIndex);
+
+			LogTestResult(errorCode, leaveCode, EFalse, methodIndex, testIndex, EBatch);
+			}
+		}
+
+	//LOGTEXT("<<DoTestsInSpecifiedRangeL");
+	return ETrue;
+	}
+
+TBool CUnitTestBase::DoAutoMethodsL()
+	{
+	//LOGTEXT(">>DoAutoMethodsL");
+
+	TInt numMethods;
+	TInt leaveCode;
+
+	if (! HasTestRangesDefined())
+		{
+		iTest.Printf(_L("Cannot auto run tests as test ranges not implemented\n"));
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+
+	// Get the number of automated tests for this method
+	RunTestsL(EFalse, EBatch, numMethods, leaveCode, 0, 0);
+
+	iFailedTests.Reset();
+	for (TInt methodIndex = 1; methodIndex <= numMethods; methodIndex++)
+		{
+		DoAutoMethodTestsL(methodIndex);
+		}
+
+	TInt failedCount = iFailedTests.Count();
+	if (   iRepeatFailedTests
+		&& failedCount > 0)
+		{
+		iTest.Printf(_L("%d tests failed. Will retry them now.\n"), failedCount);
+		iLogFile.Write(_L8("#--- Retrying the tests that failed ---\r\n"));
+		for (TInt i = 0; i < failedCount; i++)
+			{
+			TTestFailure theFailedTest = iFailedTests[i];
+			DoSingleTestL(theFailedTest.iMethodNum, theFailedTest.iTestIndex, EBatch);
+			}
+		}
+	iFailedTests.Reset();
+
+	//LOGTEXT("<<DoAutoMethodsL");
+	return ETrue;
+	}
+
+TBool CUnitTestBase::DoTestsL()
+/**
+ * This function selects a unit test, runs it and then logs the result
+ *
+ * @return return a TBool
+ * @retval ETrue if another test to run in interactive mode
+ * @retval EFalse if the test is in batch mode or there is not another
+ *         test to run in interactive mode
+ */
+	{
+	TInt methodNum;
+	TInt testNum;
+	TInt endMethodNum;
+	TInt endTestNum;
+	TTestMode testMode = EBatch;
+	TBool exitTests;
+
+	TBool numOK = SelectTestL(methodNum, testNum,
+		endMethodNum, endTestNum, testMode, exitTests);
+
+	if (! numOK)
+		{
+		iTest.Printf(_L("Bad number entered\n"));
+		iTest.Printf(_L("Press a key when ready\n"));
+		iTest.Console()->Getch();
+		return ETrue;
+		}
+
+	if (exitTests)
+		{
+		return EFalse;
+		}
+
+	// Is this a manual test?
+	if ((testNum != -1) && ((endTestNum == -1) || (testMode == EInteractive)))
+		{
+		iTest.Printf(_L("Running single test %d-%d\n"), methodNum, testNum);
+		DoSingleTestL(methodNum, testNum, testMode);
+		return ETrue;
+		}
+
+	// Do we want to auto run all the tests for a specified method
+	if ((methodNum != -1) && (testNum == -1))
+		{
+		iTest.Printf(_L("Running all tests in method %d\n"), methodNum);
+		DoAutoMethodTestsL(methodNum);
+		return ETrue;
+		}
+
+	// Do we want to run tests from one index to another?
+	if (methodNum != -1)
+		{
+		iTest.Printf(_L("Running tests %d-%d to %d-%d\n"), methodNum, testNum, endMethodNum, endTestNum);
+		DoTestsInSpecifiedRangeL(methodNum, testNum, endMethodNum, endTestNum);
+		return ETrue;
+		}
+
+	// methodNum == -1 && testNum == -1 =>
+	// We want to all the tests for every method automatically
+	iTest.Printf(_L("Running all tests\n"));
+	return DoAutoMethodsL();
+  	}
+
+TInt CUnitTestBase::PostTestDelayTime()
+/**
+ * This virtual function can be overridden by derived tests to
+ * configure the length of delay between running tests in
+ * automated mode. This used to be hard coded to KTsyTestCompleteTime,
+ * which was 3 seconds.
+ *
+ * With 100 tests, that adds up to 5 minutes of wasted time per run!
+ */
+	{
+	return KTsyTestCompleteTime;
+	}
+
+void  CUnitTestBase::ActionNoMatch(TBool aEndInd,TTestMode aTestMode,
+								   TInt aApiNumber,TInt aTestNumber)
+/**
+ * This function provides the default action for the case
+ * when the test identified by the API and test number is
+ * not implemented. It is to be called within RunTestsL()
+ * in the default case of its switch statement
+ */
+	{
+	if(!aEndInd)
+		{
+		iTest.Printf(_L("** Not implemented CSY%S-%d-%d yet **\n"),
+			         &iUnitTestName,aApiNumber,aTestNumber);
+		if(aTestMode==EInteractive)
+			{
+			iTest.Printf(_L("press any key to continue\n"));
+			iTest.Console()->Getch();
+			}
+		}
+	}
+
+TInt CUnitTestBase::CompareTestResult
+(TInt aExpectedResult,TRequestStatus aStatus)
+/**
+ * This function compare the test result with the expected one
+ *
+ * @param aStatus stores the result of a client API request
+ *
+ */
+	{
+	TInt ret=KErrNone;
+	if (aStatus.Int() != aExpectedResult)
+		{
+		if(aStatus==KErrNone)
+			ret=__LINE__;
+		else
+			ret=aStatus.Int();
+		}
+	return ret;
+	}
+
+void  CUnitTestBase::LogTestResult(TInt aErrCode, TInt aLeaveCode,
+								   TBool aEndInd,TInt aApiNumber,
+								   TInt aTestNumber,TTestMode aTestMode)
+/**
+ * This function logs the test result
+ */
+	{
+	TInt err=KErrNone;
+	if ((aErrCode)||(aLeaveCode))
+		{
+		if (aLeaveCode)
+			{
+			iTest.Printf(_L("Test failed with a LEAVE: CSY%S-%d-%d\n"),
+				         &iUnitTestName,aApiNumber,aTestNumber);
+			err=aLeaveCode;
+			}
+		else
+			{
+			iTest.Printf(_L("FAILURE: CSY%S-%d-%d failed with %d\n"),
+				         &iUnitTestName,aApiNumber,aTestNumber,aErrCode);
+			err=aErrCode;
+			}
+
+		//Print out test results in Symbian's requested format
+		TUint count=iFunIndices.Count();
+		for(TUint i = 0; i < count; i++)
+			WriteLog(EFalse,iFunIndices[i],aApiNumber,aTestNumber,err);
+		iFunIndices.Reset();
+
+		if (aTestMode==EInteractive)
+			{
+			iTest.Printf(_L("press any key to continue\n"));
+			iTest.Console()->Getch();
+			}
+		}
+	else
+		{
+		//these code will not be run if a user type E or e
+		//to end running the tests in interactive mode
+		if (!aEndInd)
+			{
+			iTest.Printf(_L("CSY%S-%d-%d finished successfully\n"),
+				         &iUnitTestName,aApiNumber,aTestNumber);
+
+#ifndef LOG_FAILED_TESTS_ONLY
+			//Print out test results in Symbian's requested format
+			TUint count=iFunIndices.Count();
+			for(TUint i = 0; i < count; i++)
+				WriteLog(ETrue,iFunIndices[i],aApiNumber,aTestNumber,err);
+			iFunIndices.Reset();
+#endif
+			iTest.Printf(_L("Waiting briefly for system to close\n"));
+
+			// give some time for test to complete
+//			User::After(this->PostTestDelayTime());
+			}
+		}
+	}
+
+
+TBool CUnitTestBase::UserSelectionL(TChar aMainNumber,
+									TInt aNumMethods,
+									TBool aRangeSpecified,
+									TInt& aApiNum, TInt& aTestNum,
+								    TTestMode& aTestMode)
+	{
+	TInt leaveCode  = 0;
+	aApiNum = UserChoice(aMainNumber);
+
+	if (aApiNum == -1) return EFalse;
+
+	if (aNumMethods != -1 && (aApiNum < 1 || aApiNum > aNumMethods))
+		{
+		aApiNum = -1;
+		aTestNum  = -1;
+		return EFalse;
+		}
+
+	PrintTestDetails(aApiNum);
+
+	TInt numAutoTests   = -1;
+	TInt numManualTests = -1;
+
+	if (! HasTestRangesDefined())
+		iTest.Printf(_L("Test number:"));
+	else
+		{
+		RunTestsL(EFalse, EBatch, numAutoTests, leaveCode, aApiNum, 0);
+		RunTestsL(EFalse, EBatch, numManualTests, leaveCode, aApiNum, 100);
+
+		iTest.Printf(_L("There are %d auto and %d manual tests\n"),
+											numAutoTests, numManualTests);
+		if (aRangeSpecified)
+			iTest.Printf(_L("Range test number:"));
+		else
+			iTest.Printf(_L("Test number or 'A' for all tests:"));
+		}
+
+	TChar numberKey = iTest.Console()->Getch();
+	iTest.Printf(_L("\n"));
+
+	if ((!aRangeSpecified) && HasTestRangesDefined() && ((numberKey == 'A')||(numberKey == 'a')))
+		{
+		aTestMode = EBatch;
+		aTestNum  = -1;
+		return ETrue;
+		}
+
+	aTestNum = UserChoice(numberKey);
+
+	if (aTestNum == -1) return EFalse;
+
+	TBool ret = EFalse;
+
+	if (! HasTestRangesDefined())
+		ret = ETrue;
+
+	if (aTestNum > 0 && aTestNum <= numAutoTests)
+		ret = ETrue;
+
+	if (aTestNum > 100 && aTestNum <= (100+numManualTests))
+		ret = ETrue;
+
+	return ret;
+	}
+
+TBool CUnitTestBase::SelectTestL(TInt& aApiNum, TInt& aTestNum,
+								 TInt& aEndApiNum, TInt& aEndTestNum,
+								 TTestMode& aTestMode, TBool& aExit)
+/**
+ * This function selects a unit test which is identified by its API &
+ * test numbers to be run either in batch or interactive mode
+ *
+ * @return return a TBool to indicate whether or not to end the test in
+ *         interactive mode
+ */
+	{
+	aTestMode = EBatch;
+	aExit     = EFalse;
+
+	iTest.Console()->ClearScreen();
+
+	if (CommandLineL(aApiNum, aTestNum, aEndApiNum, aEndTestNum))
+		{
+		aTestMode = EBatch;
+		iExitAfterTestsComplete = ETrue;
+
+		// we have got the numbers from the command line
+		iTest.Printf(_L("Running %S automated API tests\n"),&iUnitTestName);
+
+		// give tester time to get up and running
+		User::After(KTsyTesterSetupTime);
+		return ETrue;
+		}
+
+	// need to get numbers from the user
+	iTest.Printf(_L("Running %S API Tests - interactively\n"), &iUnitTestName);
+
+	aTestMode = EInteractive;
+
+	// helper to aid user - which identifier relates to which number
+	PrintTestSpecIdentifiers();
+
+	TInt numMethods = -1;
+	TInt leaveCode  = 0;
+	TBool rangeSpecified = EFalse;
+
+	// Get the numbers
+	if (! HasTestRangesDefined())
+		iTest.Printf(_L("\nNumber or 'S' for specific test or 'E' to end:"));
+	else
+		{
+		RunTestsL(EFalse, EBatch, numMethods, leaveCode, 0, 0);
+		iTest.Printf(_L("\nNumber or 'S' for specific test, 'R' for range, 'A' for all or 'E' to end:"), numMethods);
+		}
+
+	TChar numberKey = iTest.Console()->Getch();
+	iTest.Printf(_L("\n"));
+
+	if (!numberKey.IsDigit())
+		{
+		switch (numberKey)
+			{
+		case 'E':
+		case 'e':
+			aExit = ETrue;
+			return ETrue;
+		case 'A':
+		case 'a':
+			{
+			if (HasTestRangesDefined())
+				{
+				aTestMode = EBatch;
+				aApiNum   = -1;
+				aTestNum  = -1;
+				return ETrue;
+				}
+			}
+			return EFalse;
+		case 'R':
+		case 'r':
+			{
+			if (HasTestRangesDefined())
+				{
+				aTestMode = EBatch;
+				iTest.Printf(_L("Enter Start Method of range (1 -> %d):"), numMethods);
+				numberKey = iTest.Console()->Getch();
+				rangeSpecified = ETrue;
+				}
+			else
+				return EFalse;
+			}
+			break;
+		case 'S':
+		case 's':
+			{
+			iTest.Printf(_L("Method to test (1 -> %d):"), numMethods);
+			numberKey = iTest.Console()->Getch();
+			}
+			break;
+		default:
+			iTest.Printf(_L("Incorrect value\n"));
+			return EFalse;
+			}
+		}
+
+	// User to select test case or start of range
+	TBool ret = UserSelectionL(numberKey, numMethods, rangeSpecified,
+		aApiNum, aTestNum, aTestMode);
+
+	if (ret && rangeSpecified)
+		{
+		PrintTestSpecIdentifiers();
+
+		iTest.Printf(_L("Enter end method of range (1 -> %d) or 'L' last"), numMethods);
+		numberKey = iTest.Console()->Getch();
+		iTest.Printf(_L("\n"));
+
+		if ((numberKey == 'L')||(numberKey == 'l'))
+			{
+			aTestMode = EBatch;
+			aEndApiNum   = -1;
+			aEndTestNum  = -1;
+			return ETrue;
+			}
+
+		// User to select end of range
+		ret = UserSelectionL(numberKey, numMethods, ETrue,
+			aEndApiNum, aEndTestNum, aTestMode);
+		}
+
+	return ret;
+	}
+
+TInt  CUnitTestBase::UserChoice(TChar aNumberKey)
+/**
+ * This function gets the number equivalent to the user's keyboard input
+ * and will return once the enter key is pressed
+ *
+ * @param  aNumberKey is a key pressed by the user
+ * @return return the number equivalent to the user's keyboard input
+ */
+	{
+	TInt choice=0;
+	TInt mult=1;
+
+	while ( STATIC_CAST(TInt,aNumberKey) != EKeyEnter )
+		{
+		// If the user pressed Backspace, delete the previous number.
+		if (aNumberKey == 0x8)
+			{
+			if (choice > 0)
+				{
+				iTest.Printf(_L("%c %c"), aNumberKey, aNumberKey);
+				choice /= 10;
+				if (choice == 0)
+					mult = 1;
+				}
+			}
+
+		if (!aNumberKey.IsDigit())
+			{
+			aNumberKey = iTest.Console()->Getch();
+			continue;
+			}
+
+		TInt val = aNumberKey.GetNumericValue();
+		iTest.Printf(_L("%d"),val) ;
+		choice = (choice * mult) + val;
+		if(mult==1)
+			mult *=  10;
+		aNumberKey = iTest.Console()->Getch() ;
+		}
+
+	iTest.Printf(_L("\n")) ;
+	return choice;
+	}
+
+TBool CUnitTestBase::CommandLineL(TInt& aApiNum, TInt& aTestNum,
+								  TInt& aEndApiNum, TInt& aEndTestNum)
+/**
+ * This function takes inputs from command lines in the batch file run_me.bat
+ */
+	{
+	aApiNum = 0;
+	aTestNum = 0;
+
+	TInt commandLineLength;
+#ifndef BUILD_FOR_JETSTREAM
+	commandLineLength = User::CommandLineLength();
+#else
+	RProcess eteltest;
+	commandLineLength = eteltest.CommandLineLength();
+#endif // BUILD_FOR_JETSTREAM
+
+	if (commandLineLength > 0)
+		{
+		HBufC* argv = HBufC::NewLC(commandLineLength);
+		TPtr cmd(argv->Des());
+
+#ifndef BUILD_FOR_JETSTREAM
+		User::CommandLine(cmd);
+#else
+		eteltest.CommandLine(cmd);
+#endif // BUILD_FOR_JETSTREAM
+
+		TLex argParser(*argv);
+
+		TInt argc = 0;
+		while (argParser.NextToken().Length()) argc++;
+		if ((argc < 2) || (argc > 4))
+			{
+			iTest.Console()->Printf(_L("Usage: <app> <api num> <test num> [<end api> <end test>]\n"));
+			return EFalse;
+			}
+
+		argParser.UnGetToMark(); //Returns to the beginning of argv.
+		argParser.SkipSpace();
+
+		argParser.Val(aApiNum);
+		argParser.SkipSpace();
+		argParser.Val(aTestNum);
+
+		if (argc == 4)
+			{
+			argParser.SkipSpace();
+			argParser.Val(aEndApiNum);
+			argParser.SkipSpace();
+			argParser.Val(aEndTestNum);
+			}
+		else
+			{
+			aEndApiNum = aApiNum;
+			aEndTestNum = aTestNum;
+			}
+
+		delete argv;
+		CleanupStack::Pop();//argv
+
+		// we did find some command line params
+		return ETrue;
+		}
+	return EFalse;
+	}
+
+TInt CUnitTestBase::WriteLog(TBool aIsPassed,TUint aFunIndex,TUint aApiNum,
+		                     TUint aTstNum, TInt aErrorCode)
+/**
+ * This function write test result to log in the folowing formats:
+ * AUTO;<DATE>;<TIME>;UTS;<TS-Identifier>;<Functionality-Index>;
+ * PASSED;<Test-Script>;<Method-In-Test-Script>;
+ * or
+ * AUTO;<DATE>;<TIME>;UTS;<TS-Identifier>;<Functionality-Index>;
+ * FAILED;<Test-Script>;<Method-In-Test-Script>;<ErrorCode>
+ */
+	{
+	//Get date & time
+	TTime time;
+	TDateTime dateTime;
+	time.HomeTime();
+	dateTime=time.DateTime();
+	TUint year = dateTime.Year();
+	TUint day = dateTime.Day() + 1;//Day() & Month() starts from 0
+	TUint month = dateTime.Month() + 1;
+	TUint hour = dateTime.Hour();
+	TUint minute = dateTime.Minute();
+	TUint second = dateTime.Second();
+
+	//Prepared the PASSED/FAILED field
+	TBuf8<KBufSize10> passedOrFailed;
+	if(aIsPassed)
+		passedOrFailed.Copy(KPassed);
+	else
+		passedOrFailed.Copy(KFailed);
+
+	TBuf8<KMaxName> testResult;
+
+	testResult.Copy(KAutoTestMarker);//AUTO;
+
+	//<DATE>;<TIME>;
+	TBuf8<KBufSize25> dateTimeField;
+	FormDateTimeBit(dateTimeField,day,ETrue,ETrue);
+	FormDateTimeBit(dateTimeField,month,ETrue,ETrue);
+	FormDateTimeBit(dateTimeField,year,ETrue,EFalse);
+	FormDateTimeBit(dateTimeField,hour,EFalse,ETrue);
+	FormDateTimeBit(dateTimeField,minute,EFalse,ETrue);
+	FormDateTimeBit(dateTimeField,second,EFalse,EFalse);
+	testResult.Append(dateTimeField);
+
+	testResult.Append(iTestSpecName);//UTS;
+
+	//<TS-Identifier>;
+	testResult.Append(iTsIdentifier);
+	testResult.Append(KSemiColon);
+
+	//<Functionality-Index>;
+	TBuf8<KBufSize25> buf;
+	buf.Num(aFunIndex);
+	buf.Append(KSemiColon);
+	testResult.Append(buf);
+
+	//PASSED/FAILED;
+	testResult.Append(passedOrFailed);
+
+	//<Test-Script>;
+	testResult.Append(iTestScriptName);
+
+	//<Method-In-Test-Script>
+	TBuf8<KBufSize100> bufMethodWithId;
+	bufMethodWithId.Copy(iMethodName);
+	bufMethodWithId.Append(KHyphen);
+	buf.Num(aApiNum);
+	buf.Append(KHyphen);
+	bufMethodWithId.Append(buf);
+	buf.Num(aTstNum);
+	buf.Append(KSemiColon);
+	bufMethodWithId.Append(buf);
+	testResult.Append(bufMethodWithId);
+
+	if(!aIsPassed)
+		{
+		buf.Num(aErrorCode);
+		testResult.Append(buf);
+		}
+	testResult.Append(KNewLine);
+
+	TInt err = iLogFile.Write(testResult);
+	iLogFile.Flush();
+
+	return err;
+	}
+
+void CUnitTestBase::FormDateTimeBit(TDes8& aDateTimeField,TUint aDateTimeBit,
+		                            TBool aIsDateSepa,TBool aAddSepa)
+/**
+ * Append a date/time bit(month & hour etc.) and separator or delimiter
+ * into the dateTimeField descriptor
+ */
+	{
+	TBuf8<KBufSize1> separator;//- or :
+	TBuf8<KBufSize4> buf;//year takes 4 digits, the rest takes two digits
+	if(aIsDateSepa)
+		separator.Copy(KHyphen);
+	else
+		separator.Copy(KColon);
+	if(aDateTimeBit < KZeroPadValue)
+		aDateTimeField.Append(KZeroPadding);
+	buf.Num(aDateTimeBit);
+	aDateTimeField.Append(buf);
+	if(aAddSepa)
+		aDateTimeField.Append(separator);
+	else
+		aDateTimeField.Append(KSemiColon);
+	}
+
+
+TInt CUnitTestBase::LoadComms()
+/**
+ *
+ */
+	{
+	// connect to C32
+	TInt ret = iCommServer.Connect();
+	if (ret)
+		{
+		return ret;
+		}
+	return ret;
+	}
+
+TInt CUnitTestBase::UnloadComms()
+/**
+ *
+ */
+	{
+	iCommServer.Close();
+	
+	return (KErrNone);
+	}
+
+void CUnitTestBase::ReadStr(TDes& aDes)
+	{
+	TChar inputKey;
+	TInt count = 0;
+	const TInt KMaxLength = aDes.MaxLength();
+
+	aDes.Zero();
+	for (;;)
+		{
+		inputKey = (TInt) iTest.Getch();
+
+		if ((TInt)inputKey == EKeyEnter)
+			{
+			iTest.Printf(_L("\n"));
+			break;
+			}
+
+		if (inputKey == EKeyBackspace)
+			{
+			if (count > 0)
+				{
+				iTest.Printf(_L("%c"), inputKey);
+				aDes.Delete(--count,1);
+				}
+			}
+		else if (inputKey.IsPrint() && count < KMaxLength)
+			{
+			iTest.Printf(_L("%c"), inputKey);
+			aDes.Append(inputKey);
+			count++;
+			}
+		}
+	}
+
+void CUnitTestBase::GetCompilationDate(TInt& aDay, TInt& aMonth, TInt& /*aYear*/)
+	{
+	// The __DATE__ string is guaranteed to be of the form "Mmm dd yyyy"
+	// eg. Sep  9 2002
+
+	const TUint8* KMonthNames[] = {
+		_S8("Jan"), _S8("Feb"), _S8("Mar"), _S8("Apr"), _S8("May"), _S8("Jun"),
+		_S8("Jul"), _S8("Aug"), _S8("Sep"), _S8("Oct"), _S8("Nov"), _S8("Dec") };
+	const TUint8 KDateString[] = __DATE__;
+	const TPtrC8 KMonth(KDateString, 3);
+	const TPtrC8 KDay(KDateString + 4, 2);
+	const TPtrC8 KYear(KDateString + 7, 4);
+
+	TLex8 lex(KDay);
+	lex.SkipSpaceAndMark();
+	//kmif (lex.Val(aDay)) PANIC(10000);
+	aDay--;               // get a zero based day for compatibility with TDateTime
+	lex.Assign(KYear);
+	//kmif (lex.Val(aYear)) PANIC(10000);
+
+	aMonth = KErrNotFound;
+	for (TInt i = 0; i < 12; i++)
+		{
+		TPtrC8 month(KMonthNames[i], 3);
+		if (month == KMonth) aMonth = i;
+		}
+
+	//kmif (aMonth < 0) PANIC(10000);
+	//kmif (aMonth > 11) PANIC(10000);
+	}
+
+void CUnitTestBase::EnsureTargetDeviceClockIsSet()
+	{
+	TTime now;
+	now.HomeTime();
+	TDateTime date = now.DateTime();
+
+	TInt month, dayInMonth, year;
+	GetCompilationDate(dayInMonth, month, year);
+
+	//LOGTEXT4("day %d  month %d  year %d", dayInMonth, month, year);
+
+	// If boards current date is later than our compilation year, just return
+	if (   date.Year() >= year
+		&& date.Month() >= month
+		&& date.Day() >= dayInMonth)
+		{
+		return;
+		}
+
+	const TInt KCompiledYear = year;
+	for (;;)
+		{
+		iTest.Printf(_L("Enter date as DD MM YYYY (year is optional, defaults to %d) "), year);
+
+		TBuf<12> input;
+		TBuf8<12> input8;
+		ReadStr(input);
+		input.TrimAll();
+		input8.Copy(input);
+
+		TLex8 lex(input8);
+
+		lex.Val(dayInMonth);
+		lex.SkipSpaceAndMark();
+		lex.Val(month);
+		lex.SkipSpaceAndMark();
+		lex.Val(year); // if no year entered, this just returns error - year is unchanged
+
+		TInt err;
+		err = date.SetYear(year);
+		if (!err) err = date.SetMonth(static_cast<TMonth>(month-1));
+		if (!err) err = date.SetDay(dayInMonth-1);
+		if (!err && year < KCompiledYear) err = KErrNotReady;
+
+		if (err == KErrNone)
+			{
+			break; // loop termination condition
+			}
+		else
+			{
+			iTest.Printf(_L("Does not appear to be a correctly formatted date, try again.\n"));
+			month = 0;
+			dayInMonth = 0;
+			year = KCompiledYear;
+			}
+		}
+
+	// Refresh the other time values
+	now.HomeTime();
+	date = now.DateTime();
+	// Now restore the user-entered values
+	date.SetYear(year);
+	date.SetMonth(static_cast<TMonth>(month-1));
+	date.SetDay(dayInMonth-1);
+	User::SetHomeTime(date);
+	}
+
+void CUnitTestBase::RunUnitTestsL()
+/**
+ * This function is called within CreateTestL(), which is a
+ * static member function of CUnitTestBase derived classes,  to run
+ * the unit tests for the appropriate module
+ */
+	{
+	// load the CSY
+	iTest(LoadComms() == KErrNone);
+
+#ifdef __EPOC32__
+//	EnsureTargetDeviceClockIsSet();
+#endif
+
+	// do test sequence
+	TBool noEnd = ETrue;
+	while(noEnd)
+		{
+		noEnd = DoTestsL();
+		if (iExitAfterTestsComplete)
+			noEnd = EFalse;
+		}
+
+	// unload the CSY
+	iTest(UnloadComms() == KErrNone);
+	}
+
+TInt CUnitTestBase::SetUpTest()
+/**
+ * This function is called within CreateTestL(), which is a
+ * static member function of CUnitTestBase derived classes,
+ * to load drivers & start C32
+ *
+ * If you want to give an 'opening page' of instructions for your unit test,
+ * override this and do so. Remember to base call! See DataUnitTest for an
+ * example.
+ *
+ * @return return an error code if set up fails
+ */
+	{
+	iTest.Title();
+
+	iTest.Start(_L("Loading Serial drivers\n"));
+
+	TInt r;
+
+#if defined (__WINS__)
+	r = User::LoadPhysicalDevice(PDD_NAME);
+    r = User::LoadLogicalDevice(LDD_NAME);
+
+//taproot: tushar commented for OMAP
+//#else  // __GCC32__ 
+//	r = User::LoadPhysicalDevice(PDD_SIR_NAME);
+//	r = User::LoadPhysicalDevice(PDD_UART_NAME);
+//  r = User::LoadLogicalDevice(LDD_NAME);
+#endif
+
+	r = StartC32();
+	if ((r != KErrNone) && (r != KErrAlreadyExists))
+		iTest.Printf(_L("Failed to start C32 %d\n"), r);
+
+	return KErrNone;
+	}
+
+void CUnitTestBase::PrintTestSpecIdentifiers()
+	{
+	// This version prints no helpful info on the screen. Overload this in
+	// your own test class to put out test identifier and number of API test
+	}
+
+void CUnitTestBase::PrintTestDetails(TInt /*aTstSpecNumber*/)
+	{
+	// This version prints no helpful info on the screen. Overload this in
+	// your own test class to put out test details for the test spec idenifier
+	// selected
+	}
+
+void CUnitTestBase::SetFunIndex2(TUint aFunIndex1,TUint aFunIndex2)
+	{
+	iFunIndices.Insert(aFunIndex1,0);
+	iFunIndices.Insert(aFunIndex2,1);
+	}
+
+void CUnitTestBase::SetFunIndex3(TUint aFunIndex1,TUint aFunIndex2,
+		                         TUint aFunIndex3)
+	{
+	iFunIndices.Insert(aFunIndex1,0);
+	iFunIndices.Insert(aFunIndex2,1);
+	iFunIndices.Insert(aFunIndex3,2);
+	}
+
+void CUnitTestBase::SetFunIndex4(TUint aFunIndex1,TUint aFunIndex2,
+		                         TUint aFunIndex3,TUint aFunIndex4)
+	{
+	iFunIndices.Insert(aFunIndex1,0);
+	iFunIndices.Insert(aFunIndex2,1);
+	iFunIndices.Insert(aFunIndex3,2);
+	iFunIndices.Insert(aFunIndex4,3);
+	}
+
+TInt CUnitTestBase::GetRequestOrTimeOut(TRequestStatus& aRequestStatus,
+										TTimeIntervalMicroSeconds32 aTimeOut)
+/**
+ * Acts exactly like User::WaitForRequest, except aTimeOut is a timeout period
+ * to give up waiting after.
+ * If the request times out, returns KErrTimedOut, otherwise returns KErrNone
+ * and aRequestStatus is completed as usual.
+ */
+	{
+	//LOGTEXT(">>GetRequestOrTimeOut");
+
+	RTimer timer;
+	TRequestStatus timerRequest;
+	timer.CreateLocal();
+	timer.After(timerRequest, aTimeOut);
+
+	// Wait for the requestto complete or until we time out
+	User::WaitForRequest(timerRequest, aRequestStatus);
+
+	// If timer is no longer pending => we have timed out
+	if (timerRequest != KRequestPending)
+		{
+		//LOGTEXT("<<GetRequestOrTimeOut **** Timed out ****");
+		return KErrTimedOut;
+		}
+
+	timer.Cancel();
+
+	User::WaitForRequest(timerRequest);
+
+	//LOGTEXT2("<<GetRequestOrTimeOut [aRequestStatus=%d]",aRequestStatus);
+	return KErrNone;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/csy27010/test/unit_test_base/unitTestBase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,374 @@
+//
+// * Copyright 2004 Neusoft America Inc.
+// * All rights reserved.
+// * This component and the accompanying materials are made available
+// * under the terms of the Eclipse Public License v1.0
+// * which accompanies this distribution, and is available
+// * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+// *
+// * Contributors:
+// * Keith Collins (Neusoft America Inc.)  original software development and additional code and modifications.
+// * Thomas Gahagen (Neusoft America Inc.)  additional code and modifications.
+// * Zhen Yuan (Neusoft America Inc.)  additional code and modifications.
+// *
+// * Description:  This file contains the defintion for the base class from 
+// *               which all unit test classes are derived.
+//
+
+// UnitTestBase.h
+
+/** @file UnitTestBase.h
+ *
+ */
+
+#ifndef UNITTESTBASE_H__
+#define UNITTESTBASE_H__
+
+#include <e32base.h>
+#include <e32test.h>
+#include <c32comm.h>
+#include "f32file.h"
+//#include "inifile.h"
+
+#include <etel.h>
+#include <etelmm.h>
+
+//#include "Constants.h"
+
+//comment out this line if both passed & failed tests
+//are to be logged in the test log file, reftsyTest.txt
+//#define LOG_FAILED_TESTS_ONLY
+
+#define TEST(AAA) {TInt XXX = (AAA); if (XXX) return (__LINE__);}
+
+//_LIT(KCsyName, "ECUART.CSY");
+_LIT(KCsyName, "GSM0710.CSY");
+//_LIT(KTsyName,    "phonetsy");
+_LIT(KTsyName,    "GSM0707");
+
+_LIT(KTestSessionPath, "c:\\Logs\\Tests\\");
+_LIT(KUnitTestSpec, "UTS;");
+_LIT(KAccTestSpec, "ATS;");
+_LIT(KAutoTestMarker, "AUTO;");
+_LIT(KPassed, "PASSED;");
+_LIT(KFailed, "FAILED;");
+_LIT(KZeroPadding, "0");
+_LIT(KHyphen,"-");
+_LIT(KSemiColon,";");
+_LIT(KColon, ":");
+_LIT(KNewLine, "\r\n");
+
+const TUint KTsyTesterSetupTime = 3000000;
+const TUint KTsyTestCompleteTime = 3000000;
+const TUint KBufSize1 = 1;
+const TUint KBufSize4 = 4;
+const TUint KBufSize25 = 25;
+const TUint KBufSize10 = 10;
+const TUint KBufSize100 = 100;
+const TUint KZeroPadValue = 10;
+const TUint KMaxTestTelNumberSize = 20;
+
+// BttTest.Ini constants
+_LIT(KIniFile, "CommPTest.INI");
+_LIT(KIniSection, "PhoneNumberList");
+_LIT(KIniSection2, "Sms");
+_LIT(KIniSection3, "GeneralSettings");
+_LIT(KIniTelNumConnect1, "TelNumConnect1");
+_LIT(KIniTelNumConnect2, "TelNumConnect2");
+_LIT(KIniTelNumConnect3, "TelNumConnect3");
+_LIT(KIniTelNumConnect4, "TelNumConnect4");
+_LIT(KIniTelNumConnect5, "TelNumConnect5");
+_LIT(KIniTelNumConnect6, "TelNumConnect6");
+_LIT(KIniTelNumConnect7, "TelNumConnect7");
+_LIT(KIniTelNumDataConnect, "TelNumDataConnect");
+_LIT(KIniTelNumNeverConnect, "TelNumNeverConnect");
+_LIT(KIniTelNumRejectCall, "TelNumRejectCall");
+_LIT(KIniTelNumRemoteEndHangUp, "TelNumRemoteEndHangUp");
+_LIT(KIniTelNumIncorrect1, "TelNumIncorrect1");
+_LIT(KIniTelNumIncorrect2, "TelNumIncorrect2");
+_LIT(KIniTelNumMobile1, "TelNumMobile1");
+_LIT(KIniTelNumDTMFTest, "TelNumDTMFTest");
+_LIT(KIniTelNumCallback, "TelNumCallbackService");
+_LIT(KIniTelNumDataServer1, "TelNumDataServer1");
+_LIT(KIniTelNumDataServer2, "TelNumDataServer2");
+_LIT(KIniTelNumDataServer3, "TelNumDataServer3");
+_LIT(KIniTelNumDataServer4, "TelNumDataServer4");
+_LIT(KIniSmsDestNumber, "SmsDestNumber");
+_LIT(KIniTelNumberInMadCow, "SimTelNumberInMadCow");
+_LIT(KIniSmsNetworkName, "SmsNetworkName");
+_LIT(KIniTypeOfTest, "TypeOfTest");
+_LIT(KIniKeepPhoneOpen, "KeepPhoneOpen");
+_LIT(KIniAutoRepeatFailedTests, "AutoRepeatFailedTests");
+_LIT(KIniTypeOfNumber1, "DestNumberIs44Format");
+_LIT(KIniTypeOfNumber2, "MadCowNumberIs44Format");
+
+// Moved from phone
+const TUint KDelayLong   = 10000000;
+const TUint KDelayMedium = 1000000;
+const TUint KDelayShort  = 100000;
+
+//const TUint KOneSecond = 1000000;
+const TUint KTwoSeconds = 2000000;
+const TUint KFiveSeconds = 5000000;
+const TUint KTenSeconds = 10000000;
+const TUint KTwentySeconds = 20000000;
+
+#define KEightSeconds TTimeIntervalMicroSeconds32(8000000)
+
+#if defined (__WINS__)
+#define PDD_NAME _L("ECDRV")
+#define LDD_NAME _L("ECOMM")
+#else  // __GCC32__
+#define PDD_SIR_NAME _L("ESIR")
+#define PDD_UART_NAME _L("ECUART4")
+#define LDD_NAME _L("ECOMM")
+#endif
+
+const TInt KErrWrongValue=KErrGeneral;
+
+//Network Name
+//Size of text string must be less than
+//12 for the  Cellnet and Vodafone test SIM
+//10 for the  Orange test SIM
+//8  for the  One-2-One  test SIM
+//for the SMSP list storage test to pass.
+const TUint KMaxSimNameLen = 12;
+
+class CUnitTestBase : public CBase
+	{
+public:
+	enum TTestMode
+		{
+		EBatch,
+		EInteractive
+		};
+
+	enum TTestPhoneNumbers
+		{
+		ETelNumConnect1,
+		ETelNumConnect2,
+		ETelNumConnect3,
+		ETelNumConnect4,
+		ETelNumConnect5,
+		ETelNumConnect6,
+		ETelNumConnect7,
+		ETelNumDataConnect,
+		ETelNumNeverConnect,
+		ETelNumRejectCall,
+		ETelNumIncorrect1,
+		ETelNumIncorrect2,
+		ETelNumDTMFTest,
+		ETelNumCallbackService,
+		ETelNumDataServer1,
+		ETelNumDataServer2,
+		ETelNumDataServer3,
+		ETelNumDataServer4,
+		ESmsDestNumber,
+		ETelNumberInMadCow,
+		ESmsNetworkName,
+		ETypeOfTest
+		};
+
+//	virtual static void CreateTestL()=0;//not allowed in C++!!
+	~CUnitTestBase();
+
+	inline RTest Test() const;
+
+	//These functions are called within CreateTestL() which is a
+	//static member function of CUnitTestBase derived classes.
+	//Every derived class must implement CreateTestL() as it
+	//first calls NewL() to instantiate the derived class before
+	//calling SetUpTest() and RunUnitTestsL().
+	//CreateTestL() is called in E32Main() which should be in the file
+    //containing the CUnitTestBase derived class implementation
+	//Please look at the SMS test code for an example on how to
+	//code up E32main() and CreateTestL()
+	virtual TInt SetUpTest();    //load drivers & start C32
+	void RunUnitTestsL();
+
+	//Helper Functions
+	TInt CompareTestResult(TInt aExpectedResult,TRequestStatus aStatus);
+
+	//For running more than one at once
+	void ResizeConsoleL(const TDesC& aName, TInt aXOrg, TInt aYOrg, TInt aXSize, TInt aYSize);
+
+	//For test result logging
+	//Setters to be called by derived classes within their specific tests
+	inline void SetTsIdentifier(const TName& aTsIdentifier);
+	inline void SetMethodName(const TName& aMethodName);
+	inline void SetFunIndex(TUint aFunIndex);
+	void SetFunIndex2(TUint aFunIndex1,TUint aFunIndex2);
+	void SetFunIndex3(TUint aFunIndex1,TUint aFunIndex2,
+		              TUint aFunIndex3);
+	void SetFunIndex4(TUint aFunIndex1,TUint aFunIndex2,
+		              TUint aFunIndex3,TUint aFunIndex4);
+
+	// These three made public for the acceptance tests
+	TInt  LoadComms();
+	TInt  UnloadComms();
+	TBool DoSingleTestL(TInt aMethodNum, TInt aTestNum, TTestMode aTestMode);
+
+protected:
+	CUnitTestBase(const TDesC& aUnitTestName,const TDesC& aLogFileName,
+				  const TDesC& aTestSpecName,const TDesC& aTestScriptName);
+	void ConstructL();
+
+	TInt GetRequestOrTimeOut(TRequestStatus& aRequestStatus,
+		TTimeIntervalMicroSeconds32 aTimeOut);
+
+	//Derived classes must implement this function
+	//which is just simply a switch statement to
+	//run their specific tests according to API and test numbers
+	virtual void RunTestsL(TBool aEndInd,TTestMode aTestMode,
+						   TInt& aErrCode, TInt& aLeaveCode,
+		                   TInt aApiNumber,TInt aTestNumber)=0;
+	//this function is to be called within RunTestsL() in the default case
+	//of the switch statement
+	void ActionNoMatch(TBool aEndInd,TTestMode aTestMode,
+					   TInt aApiNumber,TInt aTestNumber);
+
+	// overload this function if you want to show what test is what number
+	virtual void PrintTestSpecIdentifiers();
+	// overload this function to show detail of the tests
+	virtual void PrintTestDetails(TInt aTstSpecNumber);
+
+	// Should the base class automatically connect to the Etel server. Overload if not
+	virtual TBool HasTestRangesDefined();
+
+	void RequestIncomingCallL(RMobileCall& aCall);
+	TBool DoTestsL();
+
+protected:
+	virtual TInt PostTestDelayTime();     ///< configurable delay time after each test
+	inline void LeaveIfPhoneAlreadyOpenL();
+
+private:
+	void GetCompilationDate(TInt& aDay, TInt& aMonth, TInt& aYear);
+	void EnsureTargetDeviceClockIsSet();  ///< prompt user for date if Assabet clock not set
+	void ReadStr(TDes& aDes);
+
+	TBool DoAutoMethodsL();
+	TBool DoAutoMethodTestsL(TInt aMethodNum);
+	TBool DoTestsInSpecifiedRangeL(TInt aStartMethodNum,
+									TInt aStartTestNum,
+									TInt aEndMethodNum,
+									TInt aEndTestNum);
+
+	//DoTestsL() calls SelectTestL(), RunTestsL() and LogTestResult()
+
+	TBool SelectTestL(TInt& aApiNum,TInt& aTestNum,
+						TInt& aEndApiNum, TInt& aEndTestNum,
+						TTestMode& aTestMode, TBool& aExit);
+
+	//These functions are called within SelectTestL()
+	TInt  UserChoice(TChar aNumberKey);
+	TBool UserSelectionL(TChar aMainNumber,
+						TInt aNumMethods,
+						TBool aRangeSpecified,
+						TInt& aApiNum, TInt& aTestNum,
+						TTestMode& aTestMode);
+
+
+
+
+	//process command line params
+	TBool CommandLineL(TInt& aApiNum, TInt& aTestNum,
+						TInt& aEndApiNum, TInt& aEndTestNum);
+
+	void LogTestResult(TInt aErrCode, TInt aLeaveCode, TBool aEndInd,
+		               TInt aApiNumber,TInt aTestNumber,TTestMode aTestMode);
+
+	TInt WriteLog(TBool aIsPassed,TUint aFunIndex,TUint aApiNum,
+		          TUint aTstNum, TInt aErrorCode);
+	void FormDateTimeBit(TDes8& aDateTimeField,TUint aDateTimeBit,
+		                 TBool aIsDateSepa,TBool aAddSepa);
+
+private:
+	RCommServ   iCommServer;
+
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect1;
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect2;
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect3;
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect4;
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect5;
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect6;
+	TBuf<KMaxTestTelNumberSize> iTelNumConnect7;
+	TBuf<KMaxTestTelNumberSize> iTelNumMobile1;
+	TBuf<KMaxTestTelNumberSize> iTelNumDataConnect;
+	TBuf<KMaxTestTelNumberSize> iTelNumNeverConnect;
+	TBuf<KMaxTestTelNumberSize> iTelNumRejectCall;
+	TBuf<KMaxTestTelNumberSize> iTelNumRemoteEndHangUp;
+	TBuf<KMaxTestTelNumberSize> iTelNumIncorrect1;
+	TBuf<KMaxTestTelNumberSize> iTelNumIncorrect2;
+	TBuf<KMaxTestTelNumberSize> iTelNumDTMFTest;
+	TBuf<KMaxTestTelNumberSize> iTelNumCallback;
+	TBuf<KMaxTestTelNumberSize> iTelNumDataServer1;
+	TBuf<KMaxTestTelNumberSize> iTelNumDataServer2;
+	TBuf<KMaxTestTelNumberSize> iTelNumDataServer3;
+	TBuf<KMaxTestTelNumberSize> iTelNumDataServer4;
+	TBuf<KMaxTestTelNumberSize> iSmsDestNumber;
+	TBuf<KMaxTestTelNumberSize> iTelNumberInMadCow;
+	TBuf<KMaxSimNameLen>		iSmsNetworkName;
+	TInt	 iTypeOfTest;
+
+	///< Determines whether to repeat the tests that failed at the end of a full automatic run
+	TBool    iRepeatFailedTests;
+	///< Do we want to keep the phone open between tests?
+	TBool    iKeepPhoneOpen;
+
+	TBool iExitAfterTestsComplete;
+
+private:
+	// Another session with Etel, to be kept permanently open. Helps to test
+	// bad states building up, speeds the tests up too...
+
+	struct TTestFailure
+		{
+		TTestFailure(TInt aMethodNum,TInt aTestIndex) : iMethodNum(aMethodNum), iTestIndex(aTestIndex) {}
+		TInt iMethodNum;
+		TInt iTestIndex;
+		};
+	typedef RArray<TTestFailure> RFailedTestsArray;
+	RFailedTestsArray iFailedTests;
+
+protected:
+	RFs iFs;
+	RFile iLogFile;
+	RTest		iTest;
+	const TName iUnitTestName;
+	const TName iLogFileName;
+	const TName iTestScriptName;
+	const TName iTestSpecName;
+	TName iTsIdentifier;
+	TName iMethodName;
+	RArray<TUint> iFunIndices;
+	};
+
+//inline functions
+RTest CUnitTestBase::Test() const
+	{
+	return iTest;
+	}
+
+void CUnitTestBase::SetTsIdentifier(const TName& aTsIdentifier)
+	{
+	iTsIdentifier=aTsIdentifier;
+	}
+
+void CUnitTestBase::SetMethodName(const TName& aMethodName)
+	{
+	iMethodName=aMethodName;
+	}
+
+void CUnitTestBase::SetFunIndex(TUint aFunIndex)
+	{
+	iFunIndices.Insert(aFunIndex,0);
+	}
+
+void CUnitTestBase::LeaveIfPhoneAlreadyOpenL()
+	{
+	if (iKeepPhoneOpen)
+		User::Leave(KErrAbort);
+	}
+
+#endif//END UNITTESTBASE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/csyrefplugins/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,25 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+#include "../csy27010/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/allcallreleasecompleteobserver.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// MAllCallReleaseCompleteObserver
+
+
+#ifndef ALLCALLRELEASECOMPLETEOBSERVER_H_
+#define ALLCALLRELEASECOMPLETEOBSERVER_H_
+
+//system include
+#include <e32std.h>
+//user include
+
+
+class MAllCallReleaseCompleteObserver
+	{
+public:
+	
+	/**
+	 * All call was released by ATH
+	 */
+	virtual void ReleaseAllCallComplete(TInt aError) = 0;
+	};
+
+#endif /*ALLCALLRELEASECOMPLETENOTIFY_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atanswer.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,186 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atanswer.h
+// This contains CATAnswer which answering incomging call.
+// 
+
+#ifndef ATANSWER_H_
+#define ATANSWER_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+class CATAnswer : public CAtCommandBase
+	{
+public:
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATAnswer* NewL(CGlobalPhonemanager& aGloblePhone,
+			               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATAnswer* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATAnswer();
+	
+	/**
+	 * Seting answer id
+	 * 
+	 * @param aCallId
+	 */
+	void SetAnswerCallId(TInt aCallId);
+	
+	/**
+	 * Seting the call is or not 3rd party
+	 * 
+	 * 
+	 * @param aIsIsvCall ETrue 3rd party  another EFalse
+	 */
+	void SetIsIsvCall(TBool aIsIsvCall);
+	
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+		
+	/**
+	* Start AT request
+	* 
+	*/
+	virtual void StartRequest();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+protected:
+	
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CATAnswer(CGlobalPhonemanager& aGloblePhone, 
+			  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/	
+	void ConstructL();
+	
+	/**
+	* The last execute end of this command
+	*/	
+	void Complete();
+	
+private:
+	
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle response OK
+	 * 
+	 */
+	void HandleConnectedComplete();		
+	
+private:
+	
+	/**
+	 * AT command execute step
+	 * 
+	 */
+	enum TATStep
+		{
+		EATNotInProgress,
+		EATWaitForWriteComplete,
+		EATReadComplete
+		};	
+	
+private:
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iIOStatus;
+	
+	/**
+	 * At command return errors
+	 * 
+	 */
+	TInt iATResult;
+	
+	/**
+	 * Identifier step
+	 * 
+	 */
+	TATStep iAnswerStep;	
+	
+	/**
+	 * answer call id
+	 * 
+	 */
+	TInt iCallId;
+	
+	/**
+	 * The flag of 3rd party call
+	 * 
+	 */
+	TBool iIsIsvCall;
+	
+	};
+
+#endif /*ATANSWER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atchld.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,296 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atchld.h
+// This contains CATChld which hold, resume, release, swap one call.
+// 
+
+#ifndef ATCHLD_H_
+#define ATCHLD_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+class CATChld : public CAtCommandBase
+	{
+public:
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATChld* NewL(CGlobalPhonemanager& aGloblePhone,
+			             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATChld* NewLC(CGlobalPhonemanager& aGloblePhone,
+			              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATChld();
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+		
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start AT request
+	* 
+	*/
+	virtual void StartRequest();	
+	
+public:
+	
+	/**
+	 * IPC type
+	 * 
+	 */
+	enum TIpcType
+		{
+		ELtsyReqCallHangup = 0,   //Invoke function HandleHangUpReqL(TInt aCallId, TInt aHangupCause)     
+		ELtsyReqCallHold = 1,	  //Invoke function HandleHoldReqL(TInt aCallId)
+		ELtsyReqCallResume = 2,	  //Invoke function HandleResumeReqL(TInt aCallId)
+		ELtsyReqCallSwap = 3	  //Invoke function HandleSwapReqL(TInt aHeldCallId, TInt aConnectedCallId)
+		};
+	
+	/**
+	 * which identify AT type
+	 * 
+	 */
+	enum TChldType
+		{
+		EReleaseAllHeldCallOrUDUB = 0,
+		EReleaseAllActiveCallAndAcceptHeldWaiting = 1,
+		EHeldAllActiveCallAndAcceptHeldWaiting = 2,  //For held a call and resume a call
+		EAddHeldCallToConversation = 3,
+		ECallTranster =  4,
+		ERleaseSpecificCall = 5,
+		EHeldAllActiveCallExceptCallX = 6
+		};
+	
+	/**
+	 *Set IPC type 
+	 * 
+	 * @param aIpcType
+	 */
+	void SetIpcType(TIpcType aIpcType);	
+	
+	/**
+	 * Set chld type
+	 * 
+	 * @param aManageType
+	 */
+	void SetChldType(TChldType aManageType);
+	
+	/**
+	 * Set call id
+	 * 
+	 * @param aCallId
+	 */
+	void SetCallId(TInt aCallId);
+	
+	/**
+	 * Set connected call id
+	 * 
+	 * @param aConnectedCallId
+	 */
+	void SetConnectedCallId(TInt aConnectedCallId);
+	
+	/**
+	 * Set hang up case 
+	 * 
+	 * @param aHangupCase
+	 */
+	void SetHangupCase(TInt aHangupCase);
+	
+	/**
+	 * Init member
+	 * 
+	 */
+	void InitVariable();
+	
+	/**
+	 * Prevent second holding when the aHoldCallId is holded
+	 * 
+	 * @param aHoldCallId
+	 */
+	TBool IsHoldCall(TInt aHoldCallId);
+	
+	/**
+	 * Prevent second resumeing when the aActiveCallId is actived
+	 * 
+	 * @param aActiveCallId
+	 */
+	TBool IsActiveCall(TInt aActiveCallId);
+	
+protected:
+	
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CATChld(CGlobalPhonemanager& aGloblePhone,
+			CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/	
+	void ConstructL();
+
+	/**
+	* The last execute end of this command
+	* 
+	*/	
+	virtual void Complete();
+	
+private:
+	
+	/**
+	 * AT command execute step
+	 * 
+	 */
+	enum TATStep
+		{
+		EATNotInProgress,
+		EATWaitForWriteComplete,
+		EATReadComplete
+		};
+	
+private:
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle response OK
+	 * 
+	 */
+	void HandleCHLDComplete();
+	
+	/**
+	 * Hang up call complete
+	 * 
+	 */
+	void HandleHangupComplete();
+	
+	/**
+	 * Hold call complete
+	 * 
+	 */
+	void HandleHoldComplete();
+	
+	/**
+	 * Resume call complete
+	 * 
+	 */
+	void HandleResumeComplete();
+	
+	/**
+	 * Swap call complete
+	 * 
+	 */
+	void HandleSwapComplete();
+	
+private:
+	
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iIOStatus;
+	
+	/**
+	 * At command return errors
+	 * 
+	 */
+	TInt iATResult;
+		
+	/**
+	 * Identifier step
+	 * 
+	 */
+	TATStep iATStep;
+	
+	/**
+	 * 
+	 * 
+	 */
+	TIpcType iIpcType;
+	
+	/**
+	 * 
+	 * 
+	 */
+	TChldType iChldType;
+	
+	/**
+	 * for hangup/hold/resum/swap
+	 * 
+	 */
+	TInt iCallId;
+	
+	/**
+	 * for swap
+	 * 
+	 */
+	TInt iConnectedCallId;
+	
+	/**
+	 * for hangup
+	 * 
+	 */
+	TInt iHangupCause;
+	
+	};
+
+#endif /*ATCHLD_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atclcc.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,224 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atclcc.h
+// This contains CATClcc which query incoming or waitting call information.
+// 
+
+
+#ifndef ATCLCC_H_
+#define ATCLCC_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+//class forward
+class MCallInformationQueryCompleteNotify;
+
+class CATClcc : public CAtCommandBase
+	{
+public:
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATClcc* NewL(CGlobalPhonemanager& aGloblePhone,
+			             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATClcc* NewLC(CGlobalPhonemanager& aGloblePhone,
+			              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATClcc();
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+		
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/	
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);	
+	
+	/**
+	* Start AT request
+	* 
+	*/
+	virtual void StartRequest();
+	
+	/**
+	 * Init member variable
+	 * 
+	 */
+	void InitVariable();
+	
+	/**
+	 * Add query call information complete obsever 
+	 * 
+	 */
+	void AddQueryCallInformationCompleteNotify(MCallInformationQueryCompleteNotify* aQueryCallInfoNotify);
+
+public:
+	
+	/**
+	 * AT execute result
+	 * 
+	 */
+	enum TATProcessStates
+		{
+		EProcessNotInProgress,
+		EProcessInProgress,
+		EProcessError,
+		EProcessOK
+		};
+	
+	/**
+	 * Get AT Process status
+	 * 
+	 */
+	TATProcessStates GetProcessStates() const;
+	
+	/**
+	 * Set AT Process status
+	 * 
+	 */
+	void SetProcessStates(TATProcessStates aProcessState);
+	
+protected:
+	
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CATClcc(CGlobalPhonemanager& aGloblePhone,
+			CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/	
+	void ConstructL();
+	
+	/**
+	* The last execute end of this command
+	* 
+	*/	
+	virtual void Complete();
+	
+private:
+	
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle response OK
+	 * 
+	 */
+	void HandleCLCCComplete();	
+	
+	/**
+	 * Parse AT clcc result
+	 * 
+	 */
+	void ParseCLCCResponseL(const TDesC8& aResponseBuf);
+	
+private:
+	
+	/**
+	 * At step
+	 * 
+	 */
+	enum TATStep
+		{
+		EATNotInProgress,
+		EATWaitForWriteComplete,
+		EATReadComplete
+		};
+	
+private:
+	
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iIOStatus;
+	
+	/**
+	 * At command return errors
+	 * 
+	 */
+	TInt iATResult;
+	
+	/**
+	 * Find OK result
+	 * 
+	 */
+	TBool iOKFounded;
+	
+	/**
+	 * Identifier step
+	 * 
+	 */
+	TATStep iATStep;
+	
+	/**
+	 * Process at command states
+	 * 
+	 */
+	TATProcessStates iProcessStates;
+	
+	/**
+	 * Observer which notify querying call information result
+	 * 
+	 */
+	MCallInformationQueryCompleteNotify* iQueryCallInfoNotify;
+	};
+
+#endif /*ATCLCC_H_*/
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atdialvoice.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,246 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atdialvoice.h
+// This contains CATDialVoice which dial a voice call.
+// 
+
+#ifndef ATDIALVOICE_H_
+#define ATDIALVOICE_H_
+
+//system include
+#include <etelmm.h>
+
+//user include
+#include "atcommandbase.h"
+#include "unsolicitedparams.h"
+#include "athangup.h"
+#include "allcallreleasecompleteobserver.h"
+
+class CATDialVoice : public CAtCommandBase, public MAllCallReleaseCompleteObserver
+	{
+public:
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATDialVoice* NewL(CGlobalPhonemanager& aGloblePhone,
+			                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CATDialVoice* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATDialVoice();
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+		
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Start AT request
+	* 
+	*/
+	virtual void StartRequest();
+	
+	/**
+	 * set telephone number
+	 * 
+	 * @param aTelNum
+	 */
+	void SetTelephoneNumber(const TDesC8& aTelNum);
+	
+	/**
+	 * ETrue : Emergency call
+	 * EFalse : Normal call
+	 */
+	void SetEmergnecyCallFlag(TBool aIsEmergencyCall = EFalse);
+	
+	/**
+	 * Init member
+	 * 
+	 */
+	void InitVariable();
+	
+	/**
+	 * From MAllCallReleaseCompleteObserver
+	 * 
+	 * @param aError
+	 */
+	virtual void ReleaseAllCallComplete(TInt aError);
+	
+protected:
+	
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CATDialVoice(CGlobalPhonemanager& aGloblePhone,
+			     CCtsyDispatcherCallback& aCtsyDispatcherCallback); 
+	
+	/**
+	* 2nd Constructor
+	* 
+	*/	
+	void ConstructL();
+	
+	/**
+	* The last execute end of this command
+	* 
+	*/	
+	virtual void Complete();
+	
+	/**
+	 * Parse +Wind at command
+	 * 
+	 * @param aParams class TUnsolicitedParams
+	 * @param aCommandBuf buffer of at command
+	 */
+	TInt ParseUnsolicitedCommandBufL(TUnsolicitedParams& aParams, const TDesC8& aCommandBuf);
+	
+	/**
+	 * Parse +Wind at command
+	 * 
+	 * @param aParams class TUnsolicitedParams
+	 */
+	TInt ProcessUnsolicitedCallCreated(const TUnsolicitedParams& aParams);
+private:
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle call dialing complete
+	 * 
+	 */
+	void HandleDiallingComplete();
+	
+	/**
+	 * Handle call connecting complete
+	 * 
+	 */
+	void HandleConnectingComplete();
+	
+	/**
+	 * Handle call connected complete
+	 * 
+	 */
+	void HandleConnectedComplete();
+		
+private:
+	
+	/**
+	 * Dial voice call step
+	 * 
+	 */
+	enum TDialVoicStep
+		{
+		EATDialNotInProgress,
+		EATWaitForWriteComplete,
+		EATWaitForDiallingComplete,
+		EATWaitForConnectingComplete,
+		EATWaitForConnectedComplete
+		};
+	
+private:
+	
+	/**
+	 * Telephony number
+	 * 
+	 */
+	TBuf8<RMobilePhone::KMaxMobileTelNumberSize> iTelNum;
+	
+	/**
+	 * call id
+	 * 
+	 */
+	TInt iCallId;
+	
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iStatus;
+	
+	/**
+	 * At Command return errors
+	 * 
+	 */
+	TInt iResult;
+	
+	/**
+	 * OK response is founded
+	 * 
+	 */
+	TBool iOKFounded;
+	
+	/**
+	 * State about reading and writing
+	 * 
+	 */
+	TDialVoicStep iDialStep;
+	
+	/**
+	 * True : Emergency Call
+	 * False : Normal Call
+	 * 
+	 */
+	TBool iIsEmergencyCall;
+	
+	/**
+	 * When Emergency call release all call
+	 */
+	CATHangUp* iATH;
+	};
+
+#endif /*ATDIALVOICE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atdtmfvts.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,242 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atdtmfvts.h
+// This contains CATDtmfVts which send the DTMF to network.
+// 
+
+#ifndef ATDTMFVTS_H_
+#define ATDTMFVTS_H_
+
+//system include
+#include <callbacktimer.h>
+//user include
+#include "atcommandbase.h"
+
+//const define
+const TInt KLtsyTonesLength = 200;
+
+
+//class forward
+class CGlobalPhonemanager;
+class CCtsyDispatcherCallback;
+
+class CATDtmfVts : public CAtCommandBase, 
+				   public MTimerObserver
+	{
+public:
+	/**
+	 * Factory funciton
+	 * 
+	 */
+	static CATDtmfVts* NewL(CGlobalPhonemanager& aGloblePhone,
+			                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CATDtmfVts* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATDtmfVts();
+	
+	/**
+	 * Execute the AT command
+	 * 
+	 */
+	virtual void ExecuteCommand();
+		
+	/**
+	 * Start the request
+	 * 
+	 */
+	virtual void StartRequest();
+	
+	/**
+	 * From CAtCommandBase
+	 * 
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+
+	/**
+	 * From CAtCommandBase
+	 * 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+		
+	/**
+	 * This call id is must an active call id
+	 * 
+	 */
+	TInt SetCallId(TInt aCallId);
+	
+	/**
+	 * Must be invoke when Execucommand
+	 * 
+	 */
+	TInt SetDtmfString(const TDesC& aDtmfString);
+	
+	/**
+	 * Check if the char is the DTMF tones
+	 * 
+	 */
+	TBool CharIsDtmf(const TChar& aDtmfChar);
+	
+	/**
+	 * Check if the string are DTMF tones
+	 * 
+	 */
+	TBool StringIsDtmf(const TDesC& aDtmfString);
+	
+	/**
+     * Reset the all the flag
+	 * 
+	 */
+	void InitVariable();		
+public:
+	/**
+	 * Define the DTMF type
+	 * 
+	 */
+	enum TDtmfWorkType
+		{
+		EDtmfUnknow,
+		EDtmfSendOneTone,   //Send One Char
+		EDtmfSendMoreTones, //Send string tones
+		EDtmfStopOneTone,   //Stop One char
+		EDtmfCancelMoreTones //Cancel More Tones
+		};
+	
+	/**
+	 * 
+     * Set the DTMF Type
+	 */
+	void SetDtmfWorkType(TDtmfWorkType aDtmfWorkType);
+protected:	
+	/**
+	 * Constructor
+	 * 
+	 */
+	CATDtmfVts(CGlobalPhonemanager& aGloblePhone,
+			   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 2nd constructor
+	 * 
+	 */
+	void ConstructL();	
+private:
+	/**
+	 * Overwite the Parent's complete
+	 * 
+	 */
+	virtual void Complete();
+	
+	/**
+	 * Checck if there is any active call current
+	 * 
+	 */
+	TBool IsHaveActiveCall(TInt aActiveCallId);	
+	
+	/**
+	 * From MTimerObserver 
+	 * 
+	 */
+    virtual void TimerRun(TInt aError);
+    
+    /**
+     * Start the timer
+     * 
+     */
+    void StartTimer();	
+    
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle the complete event
+	 * 
+	 */
+	void HandleSendDtmfTonesSuccess();
+	
+private:
+	
+	/**
+	 * Define the state of sending the DTMF tone
+	 * 
+	 */
+	enum TATStep
+		{
+		EATNotInProgress,
+		EATWaitForWriteComplete,
+		EATReadComplete
+		};
+private:
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iIOStatus;
+	
+	/**
+	 * At command return errors
+	 * 
+	 */
+	TInt iATResult;
+	
+	/**
+	 * The sending is done successfully
+	 * 
+	 */
+	TBool iOKFounded;
+	
+	/**
+	 * Identifier step
+	 * 
+	 */
+	TATStep iAnswerStep;	
+	
+	/**
+	 * The calll Id
+	 * 
+	 */
+	TInt iCallId;
+	
+	/**
+	 * The DTMF type
+	 * 
+	 */
+	TDtmfWorkType iDtmfWorkType;
+	
+	/**
+	 * The timer active object
+	 * 
+	 */
+	CCallbackTimer* iCallbackTimer;	
+	};
+
+#endif /*ATDTMFVTS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/athangup.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,187 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Hangup a ongoning call
+
+#ifndef ATHANGUP_H_
+#define ATHANGUP_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+//class forward
+class MAllCallReleaseCompleteObserver;
+
+class CATHangUp : public CAtCommandBase
+	{
+public:
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CATHangUp* NewL(CGlobalPhonemanager& aGloblePhone,
+			               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CATHangUp* NewLC(CGlobalPhonemanager& aGloblePhone,
+			               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destrctor
+	 * 
+	 */
+	virtual ~CATHangUp();
+	
+	/**
+	 * From CAtCommandBase
+	 * 
+	 */
+	virtual void ExecuteCommand();
+	
+	/**
+	 * From CAtCommandBase
+	 * 
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	 * From CAtCommandBase
+	 * 
+	 */		
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);	
+	
+	/**
+	 * From CRequestBase
+	 * 
+	 */	
+	virtual void StartRequest();
+	
+	/**
+	 * Add the call release observer
+	 */
+	void AddAllCallReleaseObserver(MAllCallReleaseCompleteObserver* aObserver);
+	
+	/**
+	 * Reset the internal states
+	 */
+	void InitVariable();
+	
+public:
+	
+	/**
+	 * Define the hungup opertion
+	 * 
+	 */
+	enum THangupOperator
+		{
+		EUnknownAPI,
+		ECustomAPI,
+		ERMobilePhoneAPI
+		};
+	
+	/**
+	 * Set the hangup opertion type
+	 * 
+	 */
+	void SetHangupOperator(THangupOperator aOperator);
+	
+protected:
+	/**
+	 * Constructor
+	 * 
+	 */
+	CATHangUp(CGlobalPhonemanager& aGloblePhone,
+			  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 2nd constructor
+	 * 
+	 */
+	void ConstructL();
+	
+	/**
+	 * From CAtCommandBase
+	 * 
+	 */
+	virtual void Complete();
+	
+private:
+	/**
+	 * Handle IO errors
+	 * 
+	 */
+	void HandleIOError();
+	
+	/**
+	 * Handle response error
+	 * 
+	 */
+	void HandleResponseError();
+	
+	/**
+	 * Handle response OK
+	 * 
+	 */
+	void HandleDisconnectedComplete();		
+
+private:
+	/**
+	 * Define the states for hanging up a call
+	 * 
+	 */
+	enum THangUpStep
+		{
+		EATHangUpNotInProgress,
+		EATHangUpWaitForWriteComplete,
+		EATHangUpReadComplete
+		};
+	
+private:
+	/**
+	 * I/O error when Read or Write
+	 * include timeout
+	 */
+	TInt iIOStatus;
+	
+	/**
+	 * At command return errors
+	 * 
+	 */
+	TInt iATResult;
+		
+	/**
+	 * Identifier step
+	 * 
+	 */
+	THangUpStep iHangupStep;
+	
+	/**
+	 * The hangup opertion type
+	 * 
+	 */
+	THangupOperator iHangupOperator;
+	
+	/**
+	 * Notify all release
+	 * 
+	 */
+	MAllCallReleaseCompleteObserver* iAllCallReleaseObserver;
+	
+	};
+
+#endif /*ATHANGUP_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/athangupcommandrecords.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,112 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Record the infomation related to hangup commands
+
+#ifndef ATHANGUPCOMMANDRECORDS_H_
+#define ATHANGUPCOMMANDRECORDS_H_
+
+//system include
+#include <e32base.h>
+#include <e32cmn.h> 
+
+/**
+ * Hand up command information
+ * 
+ */
+class TATHanupCommandInfo
+	{
+public:
+	TATHanupCommandInfo();
+	TInt iCallId;
+	TInt iHangupCause;
+	};
+
+/**
+ * Hang up command information records
+ */
+class CATHangupCommandRecords : public CBase
+	{
+public:
+	
+	/**
+	 * Factory fucntion
+	 */
+	static CATHangupCommandRecords* NewL();
+	
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CATHangupCommandRecords* NewLC();
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATHangupCommandRecords();
+	
+	/**
+	 * Add hanup information
+	 */
+	TInt AddHangupCommandInfo(TInt aCallId, TInt aHangupCase);
+	
+	/**
+	 * KErrNone get command info
+	 * KErrNotFound not get command info
+	 * and then remove this info from the array
+	 */
+	TInt GetFirstHangupCommandInfoAndRemoveIt(TATHanupCommandInfo& aInfo);
+	
+	/**
+	 * Mark there is one hanup active command
+	 */
+	void SetHangupActiveFlag(TBool aIsActive);
+	
+	/**
+	 * Retrieve the flag of current hangup command
+	 *
+	 * @return The ETrue if there is one acitve hangup command active, EFalase otherwise
+	 */
+	TBool GetHangupActiveFlag() const;
+	
+	/**
+	 * Check if there are any hangup command in this store
+	 */
+	TBool IsHaveRecords() const;
+	
+protected:
+	
+	/**
+	 * Constructor
+	 */
+	CATHangupCommandRecords();
+	
+	/**
+	 * 2nd structor
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * Flag of active hangup command 
+	 */
+	TBool iHangupActive;
+	
+	/**
+	 * Store the hangup command info
+	 */
+	RArray<TATHanupCommandInfo> iHangupInfoArray;
+	};
+
+#endif /*ATHANGUPCOMMANDRECORDS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atring.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,71 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Wait for first one incoming call
+
+#ifndef ATRING_H_
+#define ATRING_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+class CATRing : public CAtCommandBase
+	{
+public:
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CATRing* NewL(CGlobalPhonemanager& aGloblePhone,
+			             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 *
+	 * Factory function
+	 * 
+	 */ 
+	static CATRing* NewLC(CGlobalPhonemanager& aGloblePhone,
+			              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 
+	 * Destructor
+	 * 
+	 */
+	virtual ~CATRing();
+	
+	/**
+	 * Run this command
+	 * 
+	 */
+	virtual void ExecuteCommand(){};
+		
+protected:
+	/**
+	 * 
+	 * Constructor
+	 * 
+	 */
+	CATRing(CGlobalPhonemanager& aGloblePhone,
+			CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 
+	 * 2nd constructor
+	 * 
+	 */
+	void ConstructL();
+	
+	};
+
+#endif /*ATRING_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/atwaitforcallhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,62 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Wait for 1st incoming call
+
+#ifndef ATWAITFORCALLHANDLER_H_
+#define ATWAITFORCALLHANDLER_H_
+
+//system include
+
+//user include
+#include "atcommandcontrolbase.h"
+
+
+//class forward
+class CATRing;
+class CATClcc;
+
+class CATWaitForCallHandler : public CATCommandControlBase
+	{
+public:
+	static CATWaitForCallHandler* NewL(CGlobalPhonemanager& aGloblePhone,
+			                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	static CATWaitForCallHandler* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                            CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	virtual ~CATWaitForCallHandler();
+	
+	void StartToWaitForCall();
+	
+	//From MAtCommandExecuteObserver
+	void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	
+protected:
+	
+	CATWaitForCallHandler(CGlobalPhonemanager& aGloblePhone,
+			              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	void ConstructL();
+	
+	TInt ProcessIncomingCallInfomation();	
+
+private:
+	
+	CATRing* iAtRing;
+	
+	CATClcc* iAtClcc;
+
+	};
+
+#endif /*ATWAITFORCALLHANDLER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/callinformationquerycompletenotify.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,29 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// MCallInformationQueryCompleteNotify. The observer for getting the notification of completion of querying the call infomation
+
+#ifndef CALLINFORMATIONQUERYCOMPLETENOTIFY_H_
+#define CALLINFORMATIONQUERYCOMPLETENOTIFY_H_
+
+//system include
+#include <e32std.h>
+//user include
+
+class MCallInformationQueryCompleteNotify
+	{
+public:
+	virtual void QueryCallInformationComplete(TInt aError) = 0;
+	};
+
+#endif /*CALLINFORMATIONQUERYCOMPLETENOTIFY_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/inc/unsolicitedcommandcallcontrolhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,129 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CUnsolicitedCommandCallControlHandler. The handler for handling the unsolicited command related to call control
+
+#ifndef UNSOLICITEDCOMMANDCALLCONTROLHANDLER_H_
+#define UNSOLICITEDCOMMANDCALLCONTROLHANDLER_H_
+
+//system include
+#include <e32base.h>
+//user include
+#include "atunsolicitedobserver.h"
+#include "callinformationquerycompletenotify.h"
+
+//class forward
+class CGlobalPhonemanager;
+class CCtsyDispatcherCallback;
+class CATClcc;
+
+class CUnsolicitedCommandCallControlHandler : public CBase, 
+											  public MLtsyUnsolicitedCommandObserver,
+											  public MCallInformationQueryCompleteNotify											  
+	{
+public:
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CUnsolicitedCommandCallControlHandler* NewL(CGlobalPhonemanager& aGloblePhone,
+			                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CUnsolicitedCommandCallControlHandler* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                                            CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CUnsolicitedCommandCallControlHandler();
+
+	/**
+	 * From MLtsyUnsolicitedCommandObserver
+	 * 
+	 */
+	virtual void UnsolicitedCommandArriving(TInt aEvent, const TDesC8& aWindPkg);
+	
+	/**
+	 * From MCallInformationQueryCompleteNotify
+	 * 
+	 */
+	virtual void QueryCallInformationComplete(TInt aError);
+	
+protected:
+	/**
+	 * Constructor
+	 * 
+	 */
+	CUnsolicitedCommandCallControlHandler(CGlobalPhonemanager& aGloblePhone,
+			                              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd constructor
+	 * 
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * Handler sim remove event
+	 * 
+	 */
+	void HandleSimRemoveEvent();
+	
+	/**
+	 * Handle product init event
+	 * 
+	 */
+	void HandleProductInitEvent();
+	
+	/**
+	 * Handle network lost event
+	 * 
+	 */
+	void HandleNetworkLostEvent();
+	
+	/**
+	 * Handle call created event
+	 * 
+	 */
+	void HandleCallCreatedEvent(const TDesC8& aWindPkg);
+	
+	/**
+	 * Handle call release event
+	 * 
+	 */
+	void HandleCallReleasedEvent(const TDesC8& aWindPkg);
+
+private:
+	/**
+	 * Phone manager
+	 * 
+	 */
+	CGlobalPhonemanager& iGlobalPhone;
+	
+	/**
+	 * Call back reference
+	 * 
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+	/**
+	 * The at command for querying the call infomation
+	 * 
+	 */
+	CATClcc* iAtClcc;
+	};
+
+#endif /*UNSOLICITEDCOMMANDCALLCONTROLHANDLER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atanswer.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,292 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atanswer.cpp
+// This contains CATAnswer which answering incomging call.
+// 
+
+//system include
+
+//user include
+#include "atanswer.h"
+#include "ltsycallinformationmanager.h"
+#include "mslogger.h"
+
+//const define
+const TInt KLtsyAnswerReadTimeOut = 20;
+_LIT8(KLtsyAnswerCallCommand, "ATA\r");
+
+
+// ---------------------------------------------------------------------------
+// CATAnswer::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATAnswer* CATAnswer::NewL(CGlobalPhonemanager& aGloblePhone,
+						   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::NewL()"));
+	
+	CATAnswer* self = CATAnswer::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATAnswer::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATAnswer* CATAnswer::NewLC(CGlobalPhonemanager& aGloblePhone,
+						    CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::NewLC()"));
+	
+	CATAnswer* self = new (ELeave) CATAnswer(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::~CATAnswer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATAnswer::~CATAnswer()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::SetAnswerCallId
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::SetAnswerCallId(TInt aCallId)
+	{
+	iCallId = aCallId;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATAnswer::SetIsIsvCall
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::SetIsIsvCall(TBool aIsIsvCall)
+	{
+	iIsIsvCall = aIsIsvCall;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATAnswer::SetIsIsvCall
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATAnswer::CATAnswer(CGlobalPhonemanager& aGloblePhone,
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+					 :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::CATAnswer()"));
+	
+	iIOStatus = KErrNone;
+	iATResult = KErrNone;
+	iAnswerStep = EATNotInProgress;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATAnswer::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::ConstructL()"));
+	
+	CAtCommandBase::ConstructL();
+	AddExpectStringL(KLtsyNoCarrierString);
+	
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyAnswerReadTimeOut);	
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::ExecuteCommand()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::ExecuteCommand()"));
+	
+	//Write AT command
+	iTxBuffer.Copy(KLtsyAnswerCallCommand);
+	Write();
+	iAnswerStep = EATWaitForWriteComplete;
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::StartRequest()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::StartRequest()"));
+	
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::ParseResponseL()"));
+	
+	if (aResponseBuf.Match(KLtsyOkString) == 0)
+		{
+		iATResult = KErrNone;
+		}
+	else if (aResponseBuf.Match(KLtsyErrorString) == 0)
+		{
+		iATResult = KErrArgument;
+		}
+	else if (aResponseBuf.Match(KLtsyNoCarrierString) == 0)
+		{
+		iATResult = KErrEtelNoCarrier;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::HandleIOError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::HandleIOError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::HandleIOError()"));
+	
+	//Call back
+	iCtsyDispatcherCallback.CallbackCallControlAnswerComp(iIOStatus, iCallId);
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::HandleResponseError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::HandleResponseError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::HandleResponseError()"));
+	
+	//Call back
+	iCtsyDispatcherCallback.CallbackCallControlAnswerComp(iATResult, iCallId);
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::HandleConnectedComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::HandleConnectedComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::HandleConnectedComplete()"));
+
+	//Setting call states
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+			                                                             iCallId, 
+			                                                             RMobileCall::EStatusAnswering);	
+		
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+			                                                             iCallId, 
+			                                                             RMobileCall::EStatusConnected);
+			                                                             
+    //Call back
+	iCtsyDispatcherCallback.CallbackCallControlAnswerComp(KErrNone, iCallId);
+				                                                             						
+	//Change Call State to active
+	TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));
+	if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+		{
+		tCallInfo.SetCallState(TLtsyCallInformation::EActiveCall);
+		}
+	
+	//If exist other call , should set hold
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (n != iCallId)
+			{
+			TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
+			if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed &&
+				tCallInfo.GetCallState() != TLtsyCallInformation::EHeldCall )
+				{
+				tCallInfo.SetCallState(TLtsyCallInformation::EHeldCall);
+				
+				//Notify CTSY call state has changed
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+						                                                             n, 
+						                                                 RMobileCall::EStatusHold);				
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::Complete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::Complete()
+	{
+	//Invoke base class complete
+	CAtCommandBase::Complete();
+	
+	//Let other command can use I/O port
+	iPhoneGlobals.iEventSignalActive = EFalse;	
+	}
+
+// ---------------------------------------------------------------------------
+// CATAnswer::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATAnswer::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{  
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATAnswer::EventSignal()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aStatus = %d"),aStatus);
+	
+	iIOStatus = aStatus;
+	
+	//I/O error
+	if (iIOStatus != KErrNone)
+		{
+		HandleIOError();
+		Complete();
+		return;
+		}
+	
+	switch (iAnswerStep)
+		{
+		case EATWaitForWriteComplete:
+			iAnswerStep = EATReadComplete;
+			break;
+			
+		case EATReadComplete:
+			if (iATResult == KErrNone)
+				{
+				HandleConnectedComplete();
+				}
+			else
+				{
+				HandleResponseError();
+				}
+			Complete();
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atchld.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,622 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atchld.cpp
+// This contains CATChld which hold, resume, release, swap one call.
+// 
+
+
+//sysmtem include
+
+//user include
+#include "atchld.h"
+#include "ltsycallinformationmanager.h"
+#include "athangupcommandrecords.h"
+#include "mslogger.h"
+
+//const define
+const TInt KLtsyCHLDReadTimeout = 3;
+const TInt KLtsyCHLDWaitForModemTime = 1000*250; // 0.25 seconds
+_LIT8(KLtsyCHLDCommandFormat1, "AT+CHLD=%d\r");
+_LIT8(KLtsyCHLDCommandFormat2, "AT+CHLD=%d%d\r");
+_LIT8(KLtsyReleaseOutgoingCommand, "ATH1\r");    //Hang up outging call
+
+
+// ---------------------------------------------------------------------------
+// CATChld::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATChld* CATChld::NewL(CGlobalPhonemanager& aGloblePhone,
+		               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATChld* self = CATChld::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATChld* CATChld::NewLC(CGlobalPhonemanager& aGloblePhone,
+		               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATChld* self = new (ELeave) CATChld(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATChld::~CATChld
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATChld::~CATChld()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::CATChld
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATChld::CATChld(CGlobalPhonemanager& aGloblePhone,
+		         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+				 : CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::CATChld()"));
+	
+	//Set At type
+	iAtType = ELtsyAT_Call_CHLD;
+	
+	//Init variable
+	InitVariable();
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::InitVariable
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::InitVariable()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::InitVariable()"));
+	
+	iIOStatus = KErrNone;
+	iATResult = KErrNone;
+	iATStep = EATNotInProgress;
+	iIpcType = ELtsyReqCallHangup;
+	iChldType = ERleaseSpecificCall;
+	iCallId = KLtsyErrorCallId;
+	iConnectedCallId = KLtsyErrorCallId;
+	iHangupCause = -1;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::IsHoldCall
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TBool CATChld::IsHoldCall(TInt aHoldCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::IsHoldCall()"));
+	if (aHoldCallId >= KLtsyMinCallId && aHoldCallId <= KLtsyMaxCallId)
+		{
+		const TLtsyCallInformation& tCallInfo = iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(aHoldCallId);
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo() &&
+			TLtsyCallInformation::EHeldCall == tCallInfo.GetCallState())
+			{
+			return ETrue;
+			}		
+		}
+	return EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::IsActiveCall
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TBool CATChld::IsActiveCall(TInt aActiveCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::IsActiveCall()"));
+	
+	if (aActiveCallId >= KLtsyMinCallId && aActiveCallId <= KLtsyMaxCallId)
+		{
+		const TLtsyCallInformation& tCallInfo = iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(aActiveCallId);
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo() &&
+			TLtsyCallInformation::EActiveCall == tCallInfo.GetCallState())
+			{
+			return ETrue;
+			}		
+		}	
+	
+	return EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::ConstructL()"));
+	
+	//Invoke base class function
+	CAtCommandBase::ConstructL();
+	
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyCHLDReadTimeout);	
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::ExecuteCommand()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::ExecuteCommand()"));
+	
+	if (iChldType == EReleaseAllHeldCallOrUDUB ||
+		iChldType == EReleaseAllActiveCallAndAcceptHeldWaiting ||
+		iChldType == EHeldAllActiveCallAndAcceptHeldWaiting ||
+		iChldType == EAddHeldCallToConversation ||
+		iChldType == ECallTranster)
+		{
+		iTxBuffer.Format(KLtsyCHLDCommandFormat1, iChldType);
+		}
+	else
+		{
+		if (iChldType == ERleaseSpecificCall) //Release one call
+			{
+			
+			const TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));
+			
+			if (TLtsyCallInformation::EDialingCall == tCallInfo.GetCallState() ||
+				TLtsyCallInformation::EAlertingCall == 	tCallInfo.GetCallState())
+				{
+				//Hang up dialing or Alerting call(Outgoing call)
+				iTxBuffer.Copy(KLtsyReleaseOutgoingCommand);
+				}
+			else //Other call
+				{
+				iTxBuffer.Format(KLtsyCHLDCommandFormat2, EReleaseAllActiveCallAndAcceptHeldWaiting, iCallId);
+				}
+			}
+		else
+			{
+			iTxBuffer.Format(KLtsyCHLDCommandFormat2, EHeldAllActiveCallAndAcceptHeldWaiting, iCallId);
+			}
+		}
+	
+	LOGTEXT2(_L8("[Ltsy CallControl] CHLD Command = %S"), &iTxBuffer);
+	
+	//Setting waiting for modem time, when Command is too fast, Modem response error
+	if (iIpcType == ELtsyReqCallHold || 
+		iIpcType == ELtsyReqCallResume ||
+		iIpcType == ELtsyReqCallSwap)
+		{
+		User::After(KLtsyCHLDWaitForModemTime);
+		}
+	
+	Write();
+	iATStep = EATWaitForWriteComplete;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::SetIpcType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::SetIpcType(TIpcType aIpcType)
+	{
+	iIpcType = aIpcType;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::SetChldType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::SetChldType(TChldType aChldType)
+	{
+	iChldType = aChldType;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::SetCallId
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::SetCallId(TInt aCallId)
+	{
+	iCallId = aCallId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::SetConnectedCallId
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::SetConnectedCallId(TInt aConnectedCallId)
+	{
+	iConnectedCallId = aConnectedCallId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::SetHangupCase
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::SetHangupCase(TInt aHangupCase)
+	{
+	iHangupCause = aHangupCase;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::ParseResponseL()"));
+	
+	if (aResponseBuf.Match(KLtsyOkString) == 0)
+		{
+		iATResult = KErrNone;
+		}
+	else if (aResponseBuf.Match(KLtsyErrorString) == 0)
+		{
+		iATResult = KErrArgument;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleIOError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleIOError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleIOError()"));
+	
+	//Hangup
+	if (iIpcType == ELtsyReqCallHangup)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlHangUpComp(iIOStatus, iCallId);
+		}
+	else if (iIpcType == ELtsyReqCallHold) //Hold call
+		{
+		iCtsyDispatcherCallback.CallbackCallControlHoldComp(iIOStatus, iCallId);
+		}
+	else if (iIpcType == ELtsyReqCallResume) //Resume call
+		{
+		iCtsyDispatcherCallback.CallbackCallControlResumeComp(iIOStatus, iCallId);
+		}
+	else if (iIpcType == ELtsyReqCallSwap) //Swap call
+		{
+		iCtsyDispatcherCallback.CallbackCallControlSwapComp(iIOStatus);
+		}		
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleResponseError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleResponseError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleResponseError()"));
+	
+	//Hangup
+	if (iIpcType == ELtsyReqCallHangup)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlHangUpComp(iATResult, iCallId);
+		}
+	else if (iIpcType == ELtsyReqCallHold) //Hold call
+		{
+		iCtsyDispatcherCallback.CallbackCallControlHoldComp(iATResult, iCallId);
+		}
+	else if (iIpcType == ELtsyReqCallResume) //Resume call
+		{
+		iCtsyDispatcherCallback.CallbackCallControlResumeComp(iATResult, iCallId);
+		}
+	else if (iIpcType == ELtsyReqCallSwap) //Swap call
+		{
+		iCtsyDispatcherCallback.CallbackCallControlSwapComp(iATResult);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleCHLDComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleCHLDComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleCHLDComplete()"));
+	
+	//Hangup
+	if (iIpcType == ELtsyReqCallHangup)
+		{
+		HandleHangupComplete();
+		}
+	else if (iIpcType == ELtsyReqCallHold) //Hold call
+		{
+		HandleHoldComplete();
+		}
+	else if (iIpcType == ELtsyReqCallResume) //Resume call
+		{
+		HandleResumeComplete();
+		}
+	else if (iIpcType == ELtsyReqCallSwap) //Swap call
+		{
+		HandleSwapComplete();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleHangupComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleHangupComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleHangupComplete()"));
+	
+	const TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));
+	
+	if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+		{
+		if (tCallInfo.GetCallState() == TLtsyCallInformation::EInComingCall ||
+			tCallInfo.GetCallState() == TLtsyCallInformation::EWaitingCall	)
+			{
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCCallRejected, 
+					                                                             iCallId, 
+					                                                             RMobileCall::EStatusDisconnecting);
+			
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCCallRejected, 
+					                                                             iCallId, 
+					                                                             RMobileCall::EStatusIdle);			
+			}
+		else
+			{
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing, 
+					                                                             iCallId, 
+					                                                             RMobileCall::EStatusDisconnecting);
+			
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing, 
+					                                                             iCallId, 
+					                                                             RMobileCall::EStatusIdle);			
+			}
+		}
+	
+	//Call back
+	iCtsyDispatcherCallback.CallbackCallControlHangUpComp(KErrNone, iCallId);
+	//Setting all call id state unused
+	iPhoneGlobals.GetCallInfoManager().ResetCallInformationByCallId(iCallId);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleHoldComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleHoldComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleHoldComplete()"));
+	
+	iCtsyDispatcherCallback.CallbackCallControlHoldComp(KErrNone, iCallId);
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+			                                                             iCallId, 
+			                                                             RMobileCall::EStatusHold);
+	
+	//Notify CTSY Call id Idel
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
+		if (n == iCallId)
+			{
+			if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+				{
+				//Setting my call state active
+				tCallInfo.SetCallState(TLtsyCallInformation::EHeldCall);				
+				}
+			}
+		else
+			{
+			if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+				{
+				//Setting my call state active
+				tCallInfo.SetCallState(TLtsyCallInformation::EActiveCall);
+				
+				//Notify CTSY call state change
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																					 n,
+																                     RMobileCall::EStatusConnected);
+				}
+			}
+		}	
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleResumeComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleResumeComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleResumeComplete()"));
+	
+	iCtsyDispatcherCallback.CallbackCallControlResumeComp(KErrNone, iCallId);
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+			                                                             iCallId, 
+			                                                             RMobileCall::EStatusConnected);
+
+	//Notify CTSY Call id Idel
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
+		if (n == iCallId)
+			{
+			if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+				{
+				//Setting my call state active
+				tCallInfo.SetCallState(TLtsyCallInformation::EActiveCall);				
+				}			
+			}
+		else
+			{
+			if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+				{
+				//Setting my call state active
+				tCallInfo.SetCallState(TLtsyCallInformation::EHeldCall);
+				
+				//Notify CTSY call state change
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																					 n,
+																                     RMobileCall::EStatusHold);
+				}			
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::HandleSwapComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::HandleSwapComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::HandleSwapComplete()"));
+	
+	iCtsyDispatcherCallback.CallbackCallControlSwapComp(KErrNone);
+	
+	//One call or two calls situation
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
+		
+		if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed &&
+			tCallInfo.GetCallState() == TLtsyCallInformation::EActiveCall)
+			{
+			tCallInfo.SetCallState(TLtsyCallInformation::EHeldCall);
+			//Notify CTSY call state change
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																				 n,
+															                     RMobileCall::EStatusHold);			
+			}
+		else if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed &&
+				((tCallInfo.GetCallState() == TLtsyCallInformation::EHeldCall) || 
+				 (tCallInfo.GetCallState() == TLtsyCallInformation::EWaitingCall) ||
+				 (tCallInfo.GetCallState() == TLtsyCallInformation::EInComingCall))) //????
+			{
+			tCallInfo.SetCallState(TLtsyCallInformation::EActiveCall);
+			//Notify CTSY call state change
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																				 n,
+															                     RMobileCall::EStatusConnected);			
+			}		
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::Complete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::Complete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::Complete()"));
+	
+	//Check Hang up arrray
+	if ((iIpcType == ELtsyReqCallHangup) && iPhoneGlobals.GetCallInfoManager().GetHangupCommandRecords().IsHaveRecords())
+		{
+		InitVariable();
+		
+		TATHanupCommandInfo tHangupInfo;
+		iPhoneGlobals.GetCallInfoManager().GetHangupCommandRecords().GetFirstHangupCommandInfoAndRemoveIt(tHangupInfo);
+		
+		//Set hang up info
+		SetCallId(tHangupInfo.iCallId);
+		SetHangupCase(tHangupInfo.iHangupCause);
+		SetIpcType(CATChld::ELtsyReqCallHangup);
+		SetChldType(CATChld::ERleaseSpecificCall);
+		StartRequest();
+		return;
+		}
+	
+	//Invoke base class complete
+	CAtCommandBase::Complete();
+	
+	//Set hang up active
+	iPhoneGlobals.GetCallInfoManager().GetHangupCommandRecords().SetHangupActiveFlag(EFalse);
+	
+	//Let other command can use I/O port
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATChld::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATChld::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATChld::EventSignal()"));
+	if(aEventSource == EReadCompletion)
+	    {
+	    LOGTEXT(_L8("[Ltsy CallControl] The EventSource = EReadCompletion"));
+	    }
+	else if(aEventSource == EWriteCompletion)
+	    {
+	    LOGTEXT(_L8("[Ltsy CallControl] The EventSource = EWriteCompletion"));
+	    }
+	else if(aEventSource == ETimeoutCompletion)
+	    {
+	    LOGTEXT(_L8("[Ltsy CallControl] The EventSource = ETimeoutCompletion"));
+	    }
+	else
+	    {
+	    LOGTEXT(_L8("[Ltsy CallControl] The EventSource = Unknown"));
+	    }
+	    
+	LOGTEXT2(_L8("[Ltsy CallControl]aStatus = %d"),aStatus);
+
+	iIOStatus = aStatus;
+	
+	if (iIOStatus != KErrNone)
+		{
+		HandleIOError();
+		Complete();
+		return;
+		}
+	
+	switch (iATStep)
+		{
+		case EATWaitForWriteComplete:
+			iATStep = EATReadComplete;
+			break;
+			
+		case EATReadComplete:
+			ClearCurrentLine();
+			if (iATResult == KErrNone)
+				{
+				HandleCHLDComplete();
+				}
+			else
+				{
+				HandleResponseError();
+				}
+			Complete();
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atclcc.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,511 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atclcc.cpp
+// This contains CATClcc which query incoming or waitting call information.
+// 
+
+//system include
+
+//user include
+#include "mslogger.h"
+#include "atmanager.h"
+#include "activecommandstore.h"
+#include "atclcc.h"
+#include "callinformationquerycompletenotify.h"
+#include "ltsycommondefine.h"
+#include "ltsycallinformationmanager.h"
+
+//const define
+const TInt KLtsyClccReadTimeout = 2;
+
+//List current call information 
+_LIT8(KLtsyCLCCCommand, "AT+CLCC\r");
+_LIT8(KLtsyCLCCMatchString, "+CLCC:*");
+
+
+// ---------------------------------------------------------------------------
+// CATClcc::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATClcc* CATClcc::NewL(CGlobalPhonemanager& aGloblePhone,
+			           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::NewL()"));
+	
+	CATClcc* self = CATClcc::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATClcc* CATClcc::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::NewLC()"));
+	
+	CATClcc* self = new (ELeave) CATClcc(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+// ---------------------------------------------------------------------------
+// CATClcc::~CATClcc
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATClcc::~CATClcc()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::~CATClcc()"));
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::CATClcc
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATClcc::CATClcc(CGlobalPhonemanager& aGloblePhone, 
+		         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+				 :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::CATClcc()"));
+	
+	iAtType = ELtsyAT_General_CLCC;
+	
+	iQueryCallInfoNotify = NULL;
+	InitVariable();
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ConstructL()"));
+	
+	//Invoke base class function
+	CAtCommandBase::ConstructL();
+	
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyClccReadTimeout);
+	
+	//Add expecting string
+	AddExpectStringL(KLtsyCLCCMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::ExecuteCommand()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ExecuteCommand()"));
+	
+	iOKFounded = EFalse;
+	iTxBuffer.Copy(KLtsyCLCCCommand);
+	Write();
+	iATStep = EATWaitForWriteComplete;
+	iProcessStates = EProcessInProgress;
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::InitVariable
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::InitVariable()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::InitVariable()"));
+	
+	iOKFounded = EFalse;
+	iIOStatus = KErrNone;
+	iATResult = KErrNone;
+	iATStep = EATNotInProgress;
+	iProcessStates = EProcessNotInProgress;	
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::AddQueryCallInformationCompleteNotify
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::AddQueryCallInformationCompleteNotify(MCallInformationQueryCompleteNotify* aQueryCallInfoNotify)
+	{
+	iQueryCallInfoNotify = aQueryCallInfoNotify;
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::GetProcessStates
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATClcc::TATProcessStates CATClcc::GetProcessStates() const
+	{
+	return iProcessStates;
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::SetProcessStates
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::SetProcessStates(CATClcc::TATProcessStates aProcessState)
+	{
+	iProcessStates = aProcessState;
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::StartRequest()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::StartRequest()"));
+	
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::ParseCLCCResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::ParseCLCCResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ParseCLCCResponseL()"));
+	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array, aResponseBuf);
+	TInt nCount = array.Count();
+	
+	//  1       2      3      4       5       6
+	//+CLCC : <id1>, <dir>, <stat>, <mode>, <mpty>
+	//Its count must >= 6
+	if (nCount < 6)	  
+		{
+		CleanupStack::PopAndDestroy(1);
+		return;
+		}
+	
+	//Parse +CLCC :* buffer
+	//Only care Waiting call and incoming call
+	TInt nVal(0);
+	TLex8 tLex(array[3]);
+	if (tLex.Val(nVal) == KErrNone)
+		{		
+		if (nVal == TLtsyCallInformation::EActiveCall ||
+			nVal == TLtsyCallInformation::EHeldCall ||
+			nVal == TLtsyCallInformation::EDialingCall ||
+			nVal == TLtsyCallInformation::EAlertingCall )
+			{
+			CleanupStack::PopAndDestroy(1);
+			LOGTEXT(_L8("[Ltsy CallControl] First Parse state of the call not find incoming call and waiting call"));
+			return;			
+			}
+		
+		}
+	else
+		{
+		CleanupStack::PopAndDestroy(1);
+		LOGTEXT(_L8("[Ltsy CallControl] First Parse state of the call Failing"));
+		return;
+		}
+	
+	//Parse incoming call or waiting call
+	
+	//Call id
+	tLex.Assign(array[1]);
+	if ((tLex.Val(nVal) != KErrNone)||
+	    (nVal < KLtsyMinCallId)	||
+		(nVal > KLtsyMaxCallId))
+		{
+		CleanupStack::PopAndDestroy(1);
+		LOGTEXT(_L8("[Ltsy CallControl] Parse call id of the call Failing"));
+		return;
+		}
+   
+	//Parse call id success
+	TLtsyCallInformation& callinfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(nVal));
+	callinfo.SetCallIdIsUsedInfo(TLtsyCallInformation::EUsed);
+	callinfo.SetCallId(nVal);
+	
+	TBool bSuccess(ETrue);
+	for (TInt n = 2; bSuccess && n < nCount; n++)
+		{
+		//Direction Call
+		if (n == 2)
+			{
+			tLex.Assign(array[n]);
+			if (tLex.Val(nVal) == KErrNone)
+				{
+				if (TLtsyCallInformation::EMoCall == nVal)
+					{
+					callinfo.SetCallDirection(TLtsyCallInformation::EMoCall);
+					}
+				else
+					{
+					callinfo.SetCallDirection(TLtsyCallInformation::EMtCall);
+					}
+				}
+			else
+				{
+				bSuccess = EFalse;
+				LOGTEXT(_L8("[Ltsy CallControl] Parse direction call Failing"));
+				}
+			}
+		
+		//State of the Call
+		if (n == 3)
+			{
+			tLex.Assign(array[n]);
+			if (tLex.Val(nVal) == KErrNone)
+				{
+				if (TLtsyCallInformation::EInComingCall == nVal)
+					{
+					callinfo.SetCallState(TLtsyCallInformation::EInComingCall);
+					}
+				else
+					{
+					callinfo.SetCallState(TLtsyCallInformation::EWaitingCall);
+					}
+				}
+			else
+				{
+				bSuccess = EFalse;
+				LOGTEXT(_L8("[Ltsy CallControl] Parse state of the call Failing"));				
+				}
+			}
+		
+		//Teleservice
+		if (n == 4)
+			{
+			tLex.Assign(array[n]);
+			if (tLex.Val(nVal) == KErrNone)
+				{
+				if (TLtsyCallInformation::EVoiceCall == nVal)
+					{
+					callinfo.SetCallMode(TLtsyCallInformation::EVoiceCall);
+					}
+				else if (TLtsyCallInformation::EDataCall == nVal)
+					{
+					callinfo.SetCallMode(TLtsyCallInformation::EDataCall);
+					}
+				else if (TLtsyCallInformation::EFaxCall == nVal)
+					{
+					callinfo.SetCallMode(TLtsyCallInformation::EFaxCall);
+					}
+				else
+					{
+					callinfo.SetCallMode(TLtsyCallInformation::EUnKnowCall);
+					}
+				}
+			else
+				{
+				bSuccess = EFalse;
+				LOGTEXT(_L8("[Ltsy CallControl] Parse teleservice Failing"));					
+				}
+			}
+
+		//multiparty
+		if (n == 5)
+			{
+			tLex.Assign(array[n]);
+			if (tLex.Val(nVal) == KErrNone)
+				{
+				if (TLtsyCallInformation::ENotConference == nVal)
+					{
+					callinfo.SetConferenceCall(TLtsyCallInformation::ENotConference);
+					}
+				else
+					{
+					callinfo.SetConferenceCall(TLtsyCallInformation::EIsConference);
+					}
+				}
+			else
+				{
+				bSuccess = EFalse;
+				LOGTEXT(_L8("[Ltsy CallControl] Parse multiparty Failing"));				
+				}
+			}
+		
+		//telenum
+		if (n == 6)
+			{
+			callinfo.SetMobileTelNum(array[n]);
+			}		
+
+		//type of address
+		if (n == 7)
+			{
+			tLex.Assign(array[n]);
+			if (tLex.Val(nVal) == KErrNone)
+				{
+				callinfo.SetAddressType(nVal);
+				}
+			else
+				{
+				bSuccess = EFalse;
+				LOGTEXT(_L8("[Ltsy CallControl] Parse type of address Failing"));				
+				}
+			}
+		
+		//alpah
+		if (n == 8)
+			{
+			callinfo.SetMobileName(array[n]);
+			}
+		}
+	
+	//Parse failer
+	if (!bSuccess)
+		{
+		iPhoneGlobals.GetCallInfoManager().ResetCallInformationByCallId(callinfo.GetCallId());
+		}
+	
+	CleanupStack::PopAndDestroy(1);
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::ParseResponseL()"));
+	
+	//Process expecting string +CLCC : *
+	if (aResponseBuf.Match(KLtsyCLCCMatchString) == 0)
+		{
+		ParseCLCCResponseL(aResponseBuf);
+		}
+	else if (aResponseBuf.Match(KLtsyOkString) == 0) //Process expecting string OK
+		{
+		iATResult = KErrNone;
+		iProcessStates = EProcessOK;
+		iOKFounded = ETrue;		
+		}
+	else if (aResponseBuf.Match(KLtsyErrorString) == 0) //Process expecting string ERROR
+		{
+		iATResult = KErrArgument;
+		iProcessStates = EProcessError;
+		iOKFounded = EFalse;		
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::HandleIOError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::HandleIOError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::HandleIOError()"));
+	
+	iProcessStates = EProcessError;
+	
+	if (iQueryCallInfoNotify != NULL)
+		{
+		iQueryCallInfoNotify->QueryCallInformationComplete(iIOStatus);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::HandleResponseError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::HandleResponseError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::HandleResponseError()"));
+	
+	if (iQueryCallInfoNotify != NULL)
+		{
+		iQueryCallInfoNotify->QueryCallInformationComplete(iATResult);
+		}	
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::HandleCLCCComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::HandleCLCCComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::HandleCLCCComplete()"));
+	
+	if (iQueryCallInfoNotify != NULL)
+		{
+		iQueryCallInfoNotify->QueryCallInformationComplete(KErrNone);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::Complete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::Complete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::Complete()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] iIOStatus = %d"), iIOStatus);
+	LOGTEXT2(_L8("[Ltsy CallControl] iATResult = %d"), iATResult);
+	
+	//Remove Ative Command and stop timer
+	CAtCommandBase::Complete();
+	
+	//Let other command can use I/O port
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATClcc::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATClcc::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{  
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATClcc::EventSignal()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aEventSource = %d\taStatus = %d"),aStatus);
+	
+	iIOStatus = aStatus;
+	if (iIOStatus != KErrNone)
+		{
+		HandleIOError();	
+		Complete();
+		return;
+		}
+	
+	switch (iATStep)
+		{
+		case EATWaitForWriteComplete:
+			iATStep = EATReadComplete;
+			break;
+			
+		case EATReadComplete:
+			ClearCurrentLine();
+			if (iATResult == KErrNone)
+				{
+				if (iOKFounded)
+					{
+					HandleCLCCComplete();
+					Complete();
+					}
+				}
+			else
+				{
+				HandleResponseError();
+				Complete();
+				}
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atdialvoice.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,648 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atdialvoice.cpp
+// This contains CATDialVoice which dial a voice call.
+//
+
+//user include
+#include "atdialvoice.h"
+#include "ltsycommondefine.h"
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include "globalphonemanager.h"
+#include "activecommandstore.h"
+#include "atmanager.h"
+#include "ltsycallinformationmanager.h"
+#include "mslogger.h"
+
+//const define 
+const TInt KLtsyWaitForConnect = 60;
+_LIT8(KLtsyDialVoiceCommandFormat,"ATD%S;\r");
+_LIT8(KLtsyBusyString, "BUSY");
+_LIT8(KLtsyNoAnswerString, "NO ANSWER");
+_LIT8(KLtsyUnsolicitedCallCreated, "+WIND: 5*");
+_LIT8(KLtsyUnsolicitedCallingAltert, "+WIND: 2");
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDialVoice* CATDialVoice::NewL(CGlobalPhonemanager& aGloblePhone,
+		                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::NewL()"));
+	
+	CATDialVoice* self = CATDialVoice::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDialVoice* CATDialVoice::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::NewLC()"));
+	
+	CATDialVoice* self = new (ELeave) CATDialVoice(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::~CATDialVoice
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDialVoice::~CATDialVoice()
+	{
+	delete iATH;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::CATDialVoice
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDialVoice::CATDialVoice(CGlobalPhonemanager& aGloblePhone, 
+		                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+				           :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)	
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::CATDialVoice()"));
+	
+	iAtType = ELtsyAT_Call_ATD;
+	iResult = KErrNone;
+	iOKFounded = EFalse;
+	iCallId = KLtsyErrorCallId;
+	iStatus = KErrNone;
+	iDialStep = EATDialNotInProgress;
+	iIsEmergencyCall = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::ConstructL()"));
+	
+	//Invoke base class function
+	CAtCommandBase::ConstructL();
+	
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyWaitForConnect);
+	
+	//Add expecting string
+	AddExpectStringL(KLtsyUnsolicitedCallCreated);
+	AddExpectStringL(KLtsyUnsolicitedCallingAltert);
+	AddExpectStringL(KLtsyBusyString);
+	AddExpectStringL(KLtsyNoAnswerString);
+	AddExpectStringL(KLtsyNoCarrierString);
+	
+	//Create Hang up call
+	iATH = CATHangUp::NewL(iPhoneGlobals, iCtsyDispatcherCallback);
+	
+	//Add Observer
+	iATH->AddAllCallReleaseObserver(this);
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::SetEmergnecyCallFlag
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::InitVariable()
+	{
+	iAtType = ELtsyAT_Call_ATD;
+	iResult = KErrNone;
+	iOKFounded = EFalse;
+	iCallId = KLtsyErrorCallId;
+	iStatus = KErrNone;
+	iDialStep = EATDialNotInProgress;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::ReleaseAllCallComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::ReleaseAllCallComplete(TInt /*aError*/)
+	{
+	//if aError equal KErrNone or other dial Emergency call
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::SetEmergnecyCallFlag
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::SetEmergnecyCallFlag(TBool aIsEmergencyCall)
+	{
+	iIsEmergencyCall = aIsEmergencyCall;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::SetTelephoneNumber
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::SetTelephoneNumber(const TDesC8& aTelNum)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::SetTelephoneNumber()"));
+	
+	iTelNum.Copy(aTelNum.Left(iTelNum.MaxLength()));
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::ExecuteCommand()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::ExecuteCommand()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] Telephone number = %S"), &iTelNum);
+	
+	iOKFounded = EFalse;
+	iTxBuffer.Format(KLtsyDialVoiceCommandFormat, &iTelNum);
+	Write(); 
+	iDialStep = EATWaitForWriteComplete;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::StartRequest()
+	{
+	if (iIsEmergencyCall && iPhoneGlobals.GetCallInfoManager().IsHaveUsedCallId())
+		{
+		iATH->InitVariable();
+		iATH->StartRequest();
+		}
+	else
+		{
+		ExecuteCommand();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::ParseUnsolicitedCommandBufL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATDialVoice::ParseUnsolicitedCommandBufL(TUnsolicitedParams& aParams, const TDesC8& aCommandBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::ParseUnsolicitedCommandBufL()"));
+	
+	RArray<TPtrC8> rArray;
+	CleanupClosePushL(rArray);
+	
+	iParser->ParseRespondedBuffer(rArray, aCommandBuf);
+	aParams.InitParams();
+	
+	TInt nCount = rArray.Count();
+	if (nCount <= 1)
+		{
+		CleanupStack::PopAndDestroy(1);
+		return KErrGeneral;
+		}
+
+	for(TInt index =1; index < nCount; index++)
+		{
+		if(index == 1)
+			{
+			TInt tVal(0);
+			TLex8 tLex(rArray[index]);
+			TInt nRes = tLex.Val(tVal);
+			if (nRes == KErrNone)
+				{
+				aParams.iEvent = tVal;
+				}
+			else
+				{
+				CleanupStack::PopAndDestroy(1);
+				return nRes;
+				}
+			}
+		
+		if(index == 2)
+			{
+			TInt tVal(0);
+			TLex8 tLex(rArray[index]);
+			TInt nRes = tLex.Val(tVal);
+			if (nRes == KErrNone)
+				{
+				aParams.iIdx = tVal;
+				}
+			else
+				{
+				CleanupStack::PopAndDestroy(1);	
+				return nRes;
+				}
+			}
+		}
+	
+	CleanupStack::Pop(1);
+	
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::ProcessUnsolicitedCallCreated
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATDialVoice::ProcessUnsolicitedCallCreated(const TUnsolicitedParams& aParams)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::ProcessUnsolicitedCallCreated()"));
+	
+	if (aParams.iEvent !=  KLtsyUnsolicitedEvent05)
+		{
+		return KErrGeneral;
+		}
+	
+	TInt nCallId = aParams.iIdx;
+	if ((nCallId < KLtsyMinCallId) || (nCallId > KLtsyMaxCallId))
+		{
+		nCallId = iPhoneGlobals.GetCallInfoManager().FindUnUesedCallId();
+		if (KErrNotFound == nCallId)
+			{
+			return KErrNotFound;
+			}
+		}
+	
+	iCallId = nCallId;
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::ParseResponseL()"));
+	
+	if (aResponseBuf.Match(KLtsyUnsolicitedCallCreated) == 0)
+		{
+		LOGTEXT2(_L8("[Ltsy CallControl] iDialStep = %d"),iDialStep);
+		ASSERT(iDialStep == EATWaitForDiallingComplete);
+		
+		TUnsolicitedParams aParams;
+		iResult = ParseUnsolicitedCommandBufL(aParams, aResponseBuf);
+		if (iResult == KErrNone)
+			{
+			iResult = ProcessUnsolicitedCallCreated(aParams);
+			}
+		}
+	else if (aResponseBuf.Match(KLtsyUnsolicitedCallingAltert) == 0)
+		{
+		LOGTEXT2(_L8("[Ltsy CallControl] iDialStep = %d"),iDialStep);
+		ASSERT(iDialStep == EATWaitForConnectingComplete);
+		iResult = KErrNone;
+		}
+	else if (aResponseBuf.Match(KLtsyOkString) == 0)
+		{
+		LOGTEXT2(_L8("[Ltsy CallControl] iDialStep = %d"),iDialStep);
+		LOGTEXT(_L8("[Ltsy CallControl] The call was connected successfully"));
+		
+		// if no KLtsyUnsolicitedCallingAltert string was received before we receive "OK"
+		// it aslo means the call has been connected even though such KLtsyUnsolicitedCallingAltert
+		// or KLtsyUnsolicitedCallCreated was not received
+		if(iDialStep == EATWaitForConnectingComplete || iDialStep == EATWaitForDiallingComplete)
+		    {
+		    LOGTEXT(_L8("[Ltsy CallControl] No alert string [+WIND: 2] received before we receive string [ok]"));
+		    
+		    if (iCallId == KLtsyErrorCallId)
+		    	{
+		    	iCallId = iPhoneGlobals.GetCallInfoManager().FindUnUesedCallId();
+		    	}
+		    
+		    HandleConnectingComplete();
+		    iDialStep = EATWaitForConnectedComplete;
+		    }
+		
+		iResult = KErrNone;
+		}
+	else if (aResponseBuf.Match(KLtsyBusyString) == 0)
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] Busy tone was detected"));
+		//iResult = KErrEtelBusyDetected;
+		iResult = KErrGsmCCUserBusy;
+		}
+	else if (aResponseBuf.Match(KLtsyNoAnswerString) == 0)
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] No answer from remote party"));
+		//iResult = KErrEtelNoAnswer;
+		iResult = KErrGsmCCUserAlertingNoAnswer;
+		}
+	else if (aResponseBuf.Match(KLtsyNoCarrierString) == 0)
+		{
+		// that could be the problem of the client, when there were two ongoing call, but a new call is coming up. As
+		// GSM only support two ongoing calls
+		LOGTEXT(_L8("[Ltsy CallControl] No carrier was detected"));
+		if(iCallId == KLtsyErrorCallId)
+		    {
+		    iResult = KErrEtelNoCarrier;
+		    return;
+		    }
+		        
+		const TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));		
+		if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+			{
+			if (tCallInfo.GetCallState() == TLtsyCallInformation::EDialingCall)
+				{
+				iResult = KErrEtelNoCarrier;
+				}
+			else
+				{
+				iResult = KErrGsmCCNormalCallClearing;
+				}
+			}
+		}
+	else if (aResponseBuf.Match(KLtsyErrorString) == 0)
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] There was an error connecting the call"));
+		iResult = KErrArgument;
+		}
+	else
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] An unknown problem occurred connecting the call"));
+		iResult = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::Complete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::Complete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::Complete()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] iStatus = %d"), iStatus);
+	LOGTEXT2(_L8("[Ltsy CallControl] iResult = %d"), iResult);
+	//Remove Active Command and Stop timer
+	CAtCommandBase::Complete();
+		
+	//Let other command can use I/O port
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::HandleIOErrorL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::HandleIOError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::HandleIOError()"));
+	
+	if (iDialStep == EATWaitForWriteComplete)
+		{
+		if (iIsEmergencyCall)
+			{
+			iCtsyDispatcherCallback.CallbackCallControlDialEmergencyComp(iStatus, KLtsyErrorCallId);
+			}
+		else
+			{
+			iCtsyDispatcherCallback.CallbackCallControlDialVoiceComp(iStatus, KLtsyErrorCallId);
+			}
+		}
+	else
+		{
+		//Call id has not be allocated
+		if (KLtsyErrorCallId == iCallId)
+			{
+			if (iIsEmergencyCall)
+				{
+				iCtsyDispatcherCallback.CallbackCallControlDialEmergencyComp(iStatus, iCallId);
+				}
+			else
+				{
+				iCtsyDispatcherCallback.CallbackCallControlDialVoiceComp(iStatus, iCallId);
+				}
+			}
+		else
+			{
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(iStatus, 
+					                                                             iCallId, 
+																		         RMobileCall::EStatusDisconnecting);
+			
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(iStatus, 
+					                                                             iCallId, 
+																		         RMobileCall::EStatusIdle);
+			//Setting ltsy call information
+			iPhoneGlobals.GetCallInfoManager().ResetCallInformationByCallId(iCallId);
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::HandleResponseError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::HandleResponseError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::HandleResponseError()"));
+	
+	//Call id has not be allocated
+	if (KLtsyErrorCallId == iCallId)
+		{
+		if (iIsEmergencyCall)
+			{
+			iCtsyDispatcherCallback.CallbackCallControlDialEmergencyComp(iResult, iCallId);
+			}
+		else
+			{
+			iCtsyDispatcherCallback.CallbackCallControlDialVoiceComp(iResult, iCallId);
+			}
+		}
+	else
+		{
+		iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(iResult, 
+																			 iCallId, 
+																			 RMobileCall::EStatusDisconnecting);
+		
+		iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(iResult, 
+																			 iCallId, 
+																			 RMobileCall::EStatusIdle);
+		//Setting ltsy call information
+		iPhoneGlobals.GetCallInfoManager().ResetCallInformationByCallId(iCallId);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::HandleDiallingCompleteL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::HandleDiallingComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDialVoice::HandleDiallingComplete()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] Call id = %d"), iCallId);
+	
+	if (iIsEmergencyCall)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlDialEmergencyComp(KErrNone, iCallId);
+		}
+	else
+		{
+		iCtsyDispatcherCallback.CallbackCallControlDialVoiceComp(KErrNone, iCallId);
+		}
+	
+	LOGTEXT(_L8("[Ltsy CallControl] Call status = RMobileCall::EStatusDialling"));
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																		 iCallId, 
+													 RMobileCall::EStatusDialling);
+	
+	//Setting ltsy call information
+	TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));
+	tCallInfo.SetCallId(iCallId);
+	tCallInfo.SetCallIdIsUsedInfo(TLtsyCallInformation::EUsed);
+	tCallInfo.SetCallDirection(TLtsyCallInformation::EMoCall);
+	tCallInfo.SetCallState(TLtsyCallInformation::EDialingCall);
+	tCallInfo.SetCallMode(TLtsyCallInformation::EVoiceCall);
+	tCallInfo.SetConferenceCall(TLtsyCallInformation::ENotConference);
+	//Emergency call flag
+	if (iIsEmergencyCall)
+		{
+		tCallInfo.SetEmergencyCallFlag(ETrue);
+		}
+	
+	
+	//If have another and it's state is not hold so setting hold
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (n != iCallId)
+			{
+			TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
+			if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed && 
+				tCallInfo.GetCallState() != TLtsyCallInformation::EHeldCall)
+				{
+				//Setting ltsy call state
+				tCallInfo.SetCallState(TLtsyCallInformation::EHeldCall);
+				
+				//Notify CTSY state change
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																					 n, 
+																      RMobileCall::EStatusHold);				
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::HandleConnectingCompleteL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::HandleConnectingComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Call status = RMobileCall::EStatusConnecting"));
+	
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+																		 iCallId, 
+													 RMobileCall::EStatusConnecting);	
+	
+	//Setting ltsy call information
+	TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));
+	tCallInfo.SetCallState(TLtsyCallInformation::EAlertingCall);
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::HandleConnectedCompleteL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::HandleConnectedComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Call status = RMobileCall::EStatusConnected"));
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrNone, 
+			                                                              iCallId, 
+			                                           RMobileCall::EStatusConnected);
+	
+	//Setting ltsy call information
+	TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(iCallId));
+	tCallInfo.SetCallState(TLtsyCallInformation::EActiveCall);	
+	}
+
+// ---------------------------------------------------------------------------
+// CATDialVoice::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDialVoice::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CATDialVoice::EventSignal()"));
+	
+	iStatus = aStatus;
+	
+	if (aStatus != KErrNone)
+		{
+		HandleIOError();
+		Complete();
+		return;
+		}
+	
+	switch (iDialStep)
+		{
+		case EATWaitForWriteComplete:
+			iDialStep = EATWaitForDiallingComplete;
+			break;
+			
+		case EATWaitForDiallingComplete:
+			//first clean current line
+			ClearCurrentLine();
+			//Process result
+			if (iResult == KErrNone)
+				{
+				HandleDiallingComplete();
+				iDialStep = EATWaitForConnectingComplete;
+				}
+			else
+				{
+				HandleResponseError();
+				Complete();
+				}
+			break;
+			
+		case EATWaitForConnectingComplete:
+			//first clean current line
+			ClearCurrentLine();
+			//Process result
+			if (iResult == KErrNone)
+				{
+				HandleConnectingComplete();
+				iDialStep = EATWaitForConnectedComplete;
+				}
+			else
+				{
+				HandleResponseError();
+				Complete();
+				}
+		    break;
+		    
+		case EATWaitForConnectedComplete:
+			//first clean current line
+			ClearCurrentLine();
+			//Process result
+			if (iResult == KErrNone)
+				{
+				HandleConnectedComplete();
+				}
+			else
+				{
+				HandleResponseError();
+				}
+			
+			Complete();
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atdtmfvts.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,395 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atdtmfvts.h
+// This contains CATDtmfVts which dial a voice call.
+// 
+
+//system include
+
+//user include
+#include "atdtmfvts.h"
+#include "mslogger.h"
+#include "ltsycommondefine.h"
+#include "ltsycallinformationmanager.h"
+
+//const define
+_LIT8(KLtsyVTSFirstCharFormat, "AT+VTS=%c");
+_LIT8(KLtsyVTSMoreCharFormat, ";+VTS=%c");
+_LIT8(KLtsyCarriageReturn,"\r");
+const TInt KLtsyVTSReadTimeout = 2;
+const TInt KLtsyStopAndCancelTimeOut = 100000; // 0.1 second
+
+
+CATDtmfVts* CATDtmfVts::NewL(CGlobalPhonemanager& aGloblePhone,
+			                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::NewL()"));
+	
+	CATDtmfVts* self = CATDtmfVts::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CATDtmfVts* CATDtmfVts::NewLC(CGlobalPhonemanager& aGloblePhone,
+			                  CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::NewLC()"));
+	
+	CATDtmfVts* self = new (ELeave) CATDtmfVts(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CATDtmfVts::~CATDtmfVts()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::~CATDtmfVts()"));
+	}
+
+CATDtmfVts::CATDtmfVts(CGlobalPhonemanager& aGloblePhone,
+		               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+					   :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::CATDtmfVts()"));
+	
+	InitVariable();
+	}
+
+void CATDtmfVts::InitVariable()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::InitVariable()"));
+	
+	iDtmfWorkType = EDtmfUnknow;
+	iOKFounded = EFalse;
+	iAnswerStep = EATNotInProgress;
+	iCallId = KLtsyErrorCallId;
+	iIOStatus = KErrNone;
+	iATResult = KErrNone;	
+	}
+
+void CATDtmfVts::SetDtmfWorkType(TDtmfWorkType aDtmfWorkType)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::SetDtmfWorkType()"));
+	
+	iDtmfWorkType = aDtmfWorkType;
+	}
+
+void CATDtmfVts::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::ConstructL()"));
+	
+	//Invoke base class function
+	CAtCommandBase::ConstructL();
+	
+	//Create Timer
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyVTSReadTimeout);
+	}
+
+void CATDtmfVts::ExecuteCommand()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::ExecuteCommand()"));
+	
+	if (iDtmfWorkType == EDtmfStopOneTone ||
+	    iDtmfWorkType == EDtmfCancelMoreTones)
+		{
+		StartTimer();
+		}
+	else
+		{
+		iOKFounded = EFalse;
+		if (iTxBuffer.Length() > 0)
+			{
+			LOGTEXT2(_L8("[Ltsy CallControl] VTS = %S"), &iTxBuffer);
+			Write();
+			iAnswerStep = EATWaitForWriteComplete;
+			}		
+		}
+	}
+
+TBool CATDtmfVts::IsHaveActiveCall(TInt aActiveCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::IsHaveActiveCall()"));
+	
+	if (aActiveCallId >= KLtsyMinCallId && aActiveCallId <= KLtsyMaxCallId)
+		{
+		const TLtsyCallInformation& tCallInfo = iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(aActiveCallId);
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo() &&
+			TLtsyCallInformation::EActiveCall == tCallInfo.GetCallState())
+			{
+			return ETrue;
+			}
+		}
+	return EFalse;
+	}
+
+void CATDtmfVts::StartRequest()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::StartRequest()"));
+	
+	ExecuteCommand();
+	}
+
+TInt CATDtmfVts::SetCallId(TInt aCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::SetCallId()"));
+	
+	if (!IsHaveActiveCall(aCallId))
+		{
+		return KErrEtelCallNotActive;
+		}
+	
+	iCallId = aCallId;
+	
+	return KErrNone;
+	}
+
+TInt CATDtmfVts::SetDtmfString(const TDesC& aDtmfString)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::SetDtmfString()"));
+	
+	if (!StringIsDtmf(aDtmfString))
+		{
+		return KErrArgument;
+		}
+	
+	TInt nLen = aDtmfString.Length();
+	for (TInt n = 0; n < nLen; n++)
+		{
+		if (n == 0)
+			{
+			iTxBuffer.Format(KLtsyVTSFirstCharFormat, (TUint8)(aDtmfString[n]));
+			}
+		else
+			{
+			TBuf8<16> buf;
+			buf.Format(KLtsyVTSMoreCharFormat, (TUint8)(aDtmfString[n]));
+			
+			if ((buf.Length() + iTxBuffer.Length()) >= KLtsyGenericBufferSize)
+				{
+				return KErrOverflow;
+				}
+			iTxBuffer.Append(buf);
+			}
+		}
+	
+	//Converts the content of this descriptor to upper case.
+	iTxBuffer.UpperCase();
+	iTxBuffer.Append(KLtsyCarriageReturn);
+	
+	return KErrNone;
+	}
+
+TBool CATDtmfVts::CharIsDtmf(const TChar& aDtmfChar)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CATDtmfVts::IsDtmf()"));
+	
+	TUint uC = aDtmfChar.GetUpperCase();
+	
+	switch(uC)
+		{
+		case '0':
+		case '1':
+		case '2':
+		case '3':
+		case '4':
+		case '5':
+		case '6':
+		case '7':
+		case '8':
+		case '9':
+		case 'A':
+		case 'B':
+		case 'C':
+		case 'D':
+		case '*':
+		case '#':
+			return ETrue;
+		}
+	return EFalse;
+	}
+
+TBool CATDtmfVts::StringIsDtmf(const TDesC& aDtmfString)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CATDtmfVts::StringIsDtmf()"));
+	
+	TInt nLen = aDtmfString.Length();
+	if (nLen == 0) 
+		{
+		return EFalse;
+		}
+	
+	for (TInt n = 0; n < nLen; n++)
+		{
+		if (!CharIsDtmf(aDtmfString[n]))
+			{
+			return EFalse;
+			}
+		}
+	
+	return ETrue;
+	}
+
+void CATDtmfVts::Complete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::Complete()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] iIOStatus = %d"), iIOStatus);
+	LOGTEXT2(_L8("[Ltsy CallControl] iATResult = %d"), iATResult);
+	
+	//Remove Ative Command and stop timer
+	CAtCommandBase::Complete();
+	
+	//Init
+	InitVariable();
+	
+	//Let other command can use I/O port
+	iPhoneGlobals.iEventSignalActive = EFalse;	
+	}
+
+void CATDtmfVts::StartTimer()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::StartTimer()"));	
+	
+    if (iCallbackTimer->IsActive())
+    	{
+    	iCallbackTimer->Cancel();
+    	}
+	iCallbackTimer->After(KLtsyStopAndCancelTimeOut);	
+	}
+
+void CATDtmfVts::TimerRun(TInt aError)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::TimerRun()"));
+	
+	if (aError != KErrNone)
+		{
+		User::After(KLtsyStopAndCancelTimeOut);
+		}
+	
+	if (iDtmfWorkType == EDtmfStopOneTone)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlStopDtmfToneComp(KErrNone);
+		}
+	else if (iDtmfWorkType == EDtmfCancelMoreTones)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlSendDtmfTonesCancelComp(KErrNone);
+		}
+	
+	//Init
+	InitVariable();
+	
+	//Let other command can use I/O port
+	iPhoneGlobals.iEventSignalActive = EFalse;	
+	}
+
+void CATDtmfVts::HandleIOError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::HandleIOError()"));
+	
+	if (iDtmfWorkType == EDtmfSendOneTone)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlStartDtmfToneComp(iIOStatus);
+		}
+	else if (iDtmfWorkType == EDtmfSendMoreTones)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlSendDtmfTonesComp(iIOStatus);
+		}		
+	}
+
+void CATDtmfVts::HandleResponseError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::HandleResponseError()"));
+	
+	if (iDtmfWorkType == EDtmfSendOneTone)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlStartDtmfToneComp(iATResult);
+		}
+	else if (iDtmfWorkType == EDtmfSendMoreTones)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlSendDtmfTonesComp(iATResult);
+		}			
+	}
+
+void CATDtmfVts::HandleSendDtmfTonesSuccess()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::HandleSendDtmfTonesSuccess()"));
+	
+	if (iDtmfWorkType == EDtmfSendOneTone)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlStartDtmfToneComp(KErrNone);
+		}
+	else if (iDtmfWorkType == EDtmfSendMoreTones)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlSendDtmfTonesComp(KErrNone);
+		}
+	}
+
+void CATDtmfVts::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::ParseResponseL()"));
+	
+	if (aResponseBuf.Match(KLtsyOkString) == 0)
+		{
+		iATResult = KErrNone;
+		iOKFounded = ETrue;
+		}
+	else if(aResponseBuf.Match(KLtsyErrorString) == 0)
+		{
+		iATResult = KErrArgument;
+		}
+	}
+
+void CATDtmfVts::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATDtmfVts::EventSignal()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aEventSource = %d\taStatus = %d"),aStatus);
+	
+	iIOStatus = aStatus;
+	
+	//Process I/O Error
+	if (iIOStatus != KErrNone)
+		{
+		HandleResponseError();
+		Complete();
+		return;
+		}
+	
+	//Process at step
+	switch(iAnswerStep)
+		{
+		case EATWaitForWriteComplete:
+			iAnswerStep = EATReadComplete;
+			break;
+			
+		case EATReadComplete:
+			ClearCurrentLine();
+			if (iATResult == KErrNone)
+				{
+				HandleSendDtmfTonesSuccess();
+				}
+			else
+				{
+				HandleResponseError();
+				}
+			Complete();
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/athangup.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,293 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Hangup a ongoning call
+
+//system include
+
+//user include
+#include "athangup.h"
+#include "atmanager.h"
+#include "activecommandstore.h"
+#include "mslogger.h"
+#include "ltsycallinformationmanager.h"
+#include "allcallreleasecompleteobserver.h"
+
+//const define
+const TInt KLtsyHangupReadTimeout = 2;
+_LIT8(KLtsyHangUpAllCallCommand, "ATH\r"); //ATH0
+
+
+CATHangUp* CATHangUp::NewL(CGlobalPhonemanager& aGloblePhone,
+			               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::NewL()"));
+	
+	CATHangUp* self = CATHangUp::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CATHangUp* CATHangUp::NewLC(CGlobalPhonemanager& aGloblePhone,
+			               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::NewLC()"));
+	
+	CATHangUp* self = new (ELeave) CATHangUp(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CATHangUp::~CATHangUp()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::~CATHangUp()"));
+	}
+
+CATHangUp::CATHangUp(CGlobalPhonemanager& aGloblePhone,
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+					 :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::CATHangUp()"));
+	
+	iAtType = ELtsyAT_Call_ATH;
+	iIOStatus = KErrNone;
+	iATResult = KErrNone;
+	iHangupStep = EATHangUpNotInProgress;
+	iHangupOperator = EUnknownAPI;
+	iAllCallReleaseObserver = NULL;
+	}
+
+void CATHangUp::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::ConstructL()"));
+	
+	//Invoke base class function
+	CAtCommandBase::ConstructL();
+	
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KLtsyHangupReadTimeout);
+	}
+
+
+void CATHangUp::ExecuteCommand()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::ExecuteCommand()"));
+	
+	iTxBuffer.Copy(KLtsyHangUpAllCallCommand);
+	Write();
+	iHangupStep = EATHangUpWaitForWriteComplete;
+	}
+
+void CATHangUp::StartRequest()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::StartRequest()"));
+	
+	ExecuteCommand();
+	}
+
+void CATHangUp::AddAllCallReleaseObserver(MAllCallReleaseCompleteObserver* aObserver)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::AddAllCallReleaseObserver()"));
+	
+	iAllCallReleaseObserver = aObserver;
+	}
+
+void CATHangUp::InitVariable()
+	{
+	iAtType = ELtsyAT_Call_ATH;
+	iIOStatus = KErrNone;
+	iATResult = KErrNone;
+	iHangupStep = EATHangUpNotInProgress;
+	iHangupOperator = EUnknownAPI;	
+	}
+
+void CATHangUp::SetHangupOperator(THangupOperator aOperator)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::SetHangupOperator()"));
+	
+	iHangupOperator = aOperator;
+	}
+
+void CATHangUp::HandleIOError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::HandleIOError()"));
+	
+	if (iHangupOperator == ECustomAPI)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlTerminateAllCallsComp(iIOStatus);
+		}
+	else if (iHangupOperator == ERMobilePhoneAPI)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneTerminateAllCallsComp(iIOStatus);
+		}
+	else
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] Hangup unknown operator!!!!"));
+		}
+	}
+
+void CATHangUp::HandleResponseError()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::HandleResponseError()"));
+	
+	if (iHangupOperator == ECustomAPI)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlTerminateAllCallsComp(iATResult);
+		}
+	else if (iHangupOperator == ERMobilePhoneAPI)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneTerminateAllCallsComp(iATResult);
+		}
+	else
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] Hangup unknown operator!!!!"));
+		}
+	}
+
+void CATHangUp::HandleDisconnectedComplete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::HandleDisconnectedComplete()"));
+	
+	if (iHangupOperator == ECustomAPI)
+		{
+		iCtsyDispatcherCallback.CallbackCallControlTerminateAllCallsComp(iATResult);
+		}
+	else if (iHangupOperator == ERMobilePhoneAPI)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneTerminateAllCallsComp(iATResult);
+		}
+	else 
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] Hangup unknown operator!!!!"));
+		if (iAllCallReleaseObserver == NULL)
+			{
+			return;
+			}
+		}
+
+	//Notify CTSY all call idel
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		TLtsyCallInformation& tCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(n));
+		if (tCallInfo.GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+			{
+			
+			if (tCallInfo.GetCallState() == TLtsyCallInformation::EInComingCall ||
+				tCallInfo.GetCallState() == TLtsyCallInformation::EWaitingCall	)
+				{
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCCallRejected, 
+						                                                             n, 
+						                                                             RMobileCall::EStatusDisconnecting);			
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCCallRejected, 
+																					 n,
+																					 RMobileCall::EStatusIdle);				
+				}
+			else
+				{
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing, 
+						                                                             n, 
+						                                                             RMobileCall::EStatusDisconnecting);			
+				iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing, 
+																					 n,
+																					 RMobileCall::EStatusIdle);				
+				}
+			}		
+		}
+	
+	//Setting all call id state unused
+	iPhoneGlobals.GetCallInfoManager().ResetAllCalInformation();
+	}
+
+void CATHangUp::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::ParseResponseL()"));
+	
+	if (aResponseBuf.Match(KLtsyOkString) == 0)
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] Hang up call reponse is OK"));
+		
+		iATResult = KErrNone;
+		}
+	else if (aResponseBuf.Match(KLtsyErrorString) == 0)
+		{
+		LOGTEXT(_L8("[Ltsy CallControl] Hang up call reponse is Error"));
+		
+		iATResult = KErrArgument;
+		}
+	}
+
+void CATHangUp::Complete()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::Complete()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] iIOStatus = %d"), iIOStatus);
+	LOGTEXT2(_L8("[Ltsy CallControl] iATResult = %d"), iATResult);
+	
+	//Remove Ative Command and stop timer
+	CAtCommandBase::Complete();
+		
+	//Let other command can use I/O port
+	if (iAllCallReleaseObserver == NULL)
+		{
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		}
+	else
+		{
+		if (iIOStatus != KErrNone)
+			{
+			iAllCallReleaseObserver->ReleaseAllCallComplete(iIOStatus);
+			}
+		else
+			{
+			iAllCallReleaseObserver->ReleaseAllCallComplete(iATResult);
+			}
+		}
+	}
+
+void CATHangUp::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATHangUp::EventSignal()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aEventSource = %d\taStatus = %d"),aStatus);
+	
+	iIOStatus = aStatus;
+	if (iIOStatus != KErrNone)
+		{
+		HandleIOError();
+		Complete();
+		return;
+		}
+	
+	switch (iHangupStep)
+		{
+		case EATHangUpWaitForWriteComplete:
+			iHangupStep = EATHangUpReadComplete;
+			break;
+			
+		case EATHangUpReadComplete:
+			if (iATResult == KErrNone)
+				{
+				HandleDisconnectedComplete();
+				}
+			else
+				{
+				HandleResponseError();
+				}
+			Complete();
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/athangupcommandrecords.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,118 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Record the infomation related to hangup commands
+
+//system include
+
+//user include
+#include "athangupcommandrecords.h"
+#include "mslogger.h"
+
+TATHanupCommandInfo::TATHanupCommandInfo()
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting TATHanupCommandInfo::TATHanupCommandInfo()"));	
+	iCallId = -1;
+	iHangupCause = -1;
+	}
+
+/**
+ * 
+ *
+ */
+CATHangupCommandRecords* CATHangupCommandRecords::NewL()
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::NewL()"));
+	CATHangupCommandRecords* self = CATHangupCommandRecords::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CATHangupCommandRecords* CATHangupCommandRecords::NewLC()
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::NewLC()"));
+	CATHangupCommandRecords* self = new (ELeave) CATHangupCommandRecords;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CATHangupCommandRecords::~CATHangupCommandRecords()
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::~CATHangupCommandRecords()"));
+	iHangupInfoArray.Close();
+	}
+
+CATHangupCommandRecords::CATHangupCommandRecords()
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::CATHangupCommandRecords()"));
+	iHangupActive = EFalse;
+	}
+
+void CATHangupCommandRecords::ConstructL()
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::ConstructL()"));
+	}
+
+TInt CATHangupCommandRecords::AddHangupCommandInfo(TInt aCallId, TInt aHangupCase)
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::AddHangupCommandInfo()"));
+	TATHanupCommandInfo tInfo;
+	tInfo.iCallId = aCallId;
+	tInfo.iHangupCause = aHangupCase;
+	TInt nRes = iHangupInfoArray.Append(tInfo);
+	return nRes;
+	}
+
+TInt CATHangupCommandRecords::GetFirstHangupCommandInfoAndRemoveIt(TATHanupCommandInfo& aInfo)
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::GetFirstHangupCommandInfoAndRemoveIt()"));
+	TInt nCount = iHangupInfoArray.Count();
+	LOGTEXT2( _L8("[Ltsy CallControl] Hang up command information array count = %d"), nCount);
+	
+	if (nCount > 0)
+		{
+		aInfo.iCallId = iHangupInfoArray[0].iCallId;
+		aInfo.iHangupCause = iHangupInfoArray[0].iHangupCause;
+		iHangupInfoArray.Remove(0);
+		return KErrNone;
+		}
+	return KErrNotFound;
+	}
+
+void CATHangupCommandRecords::SetHangupActiveFlag(TBool aIsActive)
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::SetHangupActiveFlag()"));
+	iHangupActive = aIsActive;
+	}
+
+TBool CATHangupCommandRecords::GetHangupActiveFlag() const
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CATHangupCommandRecords::GetHangupActiveFlag()"));
+	return iHangupActive;
+	}
+
+
+TBool CATHangupCommandRecords::IsHaveRecords() const
+	{
+	if (iHangupInfoArray.Count() > 0)
+		{
+		return ETrue;
+		}
+	else
+		{
+		return EFalse;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atring.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,71 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Wait for first one incoming call
+
+//system include
+
+//user include
+#include "atring.h"
+#include "mslogger.h"
+
+//const define
+_LIT8(KLtsyIncomingExtCallIndication,"+CRING:*");
+_LIT8(KLtsyIncomingCallIndication,"RING");
+
+CATRing* CATRing::NewL(CGlobalPhonemanager& aGloblePhone,
+			           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATRing::NewL()"));
+	
+	CATRing* self = CATRing::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+CATRing* CATRing::NewLC(CGlobalPhonemanager& aGloblePhone,
+			            CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATRing::NewLC()"));
+	
+	CATRing* self = new (ELeave) CATRing(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CATRing::~CATRing()
+	{
+	}
+
+CATRing::CATRing(CGlobalPhonemanager& aGloblePhone,
+		         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                 :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATRing::CATRing()"));
+	
+	iAtType = ELtsyAT_Call_RING;
+	}
+
+void CATRing::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATRing::ConstructL()"));
+	
+	CAtCommandBase::ConstructL(); //Not must
+	RemoveAllExpectString();
+	AddExpectStringL(KLtsyIncomingCallIndication);
+	AddExpectStringL(KLtsyIncomingExtCallIndication);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/atwaitforcallhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,190 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Wait for 2nd incoming call
+
+//system include
+
+//user include
+#include "atwaitforcallhandler.h"
+#include "atclcc.h"
+#include "atring.h"
+#include "atmanager.h"
+#include "activecommandstore.h"
+#include "ltsycallinformationmanager.h"
+#include "mslogger.h"
+
+CATWaitForCallHandler* CATWaitForCallHandler::NewL(CGlobalPhonemanager& aGloblePhone,
+		                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::NewL()"));
+	
+	CATWaitForCallHandler* self = CATWaitForCallHandler::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CATWaitForCallHandler* CATWaitForCallHandler::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                                            CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::NewLC()"));
+	
+	CATWaitForCallHandler* self = new (ELeave) CATWaitForCallHandler(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CATWaitForCallHandler::~CATWaitForCallHandler()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::~CATWaitForCallHandler()"));
+	
+	delete iAtRing;
+	iAtRing = NULL;
+	
+	delete iAtClcc;
+	iAtClcc = NULL;
+	}
+
+
+CATWaitForCallHandler::CATWaitForCallHandler(CGlobalPhonemanager& aGloblePhone,
+		                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+											 :CATCommandControlBase(aGloblePhone, aCtsyDispatcherCallback) 
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::CATWaitForCallHandler()"));
+	
+	iPhoneGlobals.GetCallInfoManager().SetIncomingCallFlag(EFalse);
+	}
+
+void CATWaitForCallHandler::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::ConstructL()"));
+	
+	iAtClcc = CATClcc::NewL(iPhoneGlobals, iCtsyDispatcherCallback);
+	iAtRing = CATRing::NewL(iPhoneGlobals, iCtsyDispatcherCallback);
+	iAtRing->SetAtCommandObserver(this);
+	}
+
+
+void CATWaitForCallHandler::StartToWaitForCall()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::StartToWaitForCall()"));
+	
+	iPhoneGlobals.iAtManager->GetActiveCommandStore()->AddUnsolicitedAtCommand(iAtRing);
+	}
+
+TInt CATWaitForCallHandler::ProcessIncomingCallInfomation()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::ProcessIncomingCallInfomation()"));
+	
+	TInt nCallId = iPhoneGlobals.GetCallInfoManager().FindIncomingCallId();
+	
+	if (KErrNotFound == nCallId)
+		{
+		return KErrNotFound;
+		}
+	
+	//Incoming call information
+	TLtsyCallInformation& tIncomingCallInfo(iPhoneGlobals.GetCallInfoManager().GetCallInformationByCallId(nCallId));
+	
+	RMobileCall::TMobileCallInfoV1 tMobileCallInfo;
+	
+	//Call id
+	tMobileCallInfo.iCallId = tIncomingCallInfo.GetCallId();
+	
+	//Call service
+	TLtsyCallInformation::TCallMode tCallService(tIncomingCallInfo.GetCallMode());
+	if (TLtsyCallInformation::EVoiceCall == tCallService)
+		{
+		tMobileCallInfo.iService = RMobilePhone::EVoiceService;
+		}
+	else if (TLtsyCallInformation::EDataCall == tCallService)
+		{
+		tMobileCallInfo.iService = RMobilePhone::ECircuitDataService;
+		}
+	else if (TLtsyCallInformation::EFaxCall == tCallService)
+		{
+		tMobileCallInfo.iService = RMobilePhone::EFaxService;
+		}
+	else
+		{
+		tMobileCallInfo.iService = RMobilePhone::EServiceUnspecified;
+		}
+		
+	//Call back
+	iCtsyDispatcherCallback.CallbackCallControlNotifyIncomingCallInd(KErrNone, tMobileCallInfo);
+	
+	//Ring State
+	tMobileCallInfo.iStatus = RMobileCall::EStatusRinging;
+	
+	//Telephone number
+	tMobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Copy(tIncomingCallInfo.GetMobileTelNum());
+	
+	iCtsyDispatcherCallback.CallbackCallControlNotifyCallInfoChangeInd(KErrNone, tMobileCallInfo);
+	
+	return KErrNone;
+	}
+
+void CATWaitForCallHandler::AtCommandExecuteComplete(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CATWaitForCallHandler::AtCommandExecuteComplete()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aEventSource = %d\taStatus = %d"),aStatus);
+		
+	//Process read or timeout error
+	if (aStatus != KErrNone)
+		{
+		//Reset Ring Count
+		iPhoneGlobals.GetCallInfoManager().SetIncomingCallFlag(EFalse);
+		
+		//Init ATCLCC Variable
+		iAtClcc->InitVariable();
+		
+		//Init InComing Call State
+		TInt nCall = iPhoneGlobals.GetCallInfoManager().FindIncomingCallId();
+		if (nCall != KErrNotFound)
+			{
+			iPhoneGlobals.GetCallInfoManager().ResetCallInformationByCallId(nCall);
+			}
+		return;
+		}
+	
+	//Clear Ring String
+	iAtRing->ClearCurrentLine();
+	
+	//CLCC find incoming information If first ring  coming
+	if (!iPhoneGlobals.GetCallInfoManager().GetIncomingCallFlag())
+		{
+		TInt nRet = iPhoneGlobals.CheckGlobalPhoneStatus();
+		if (nRet == KErrNone)
+			{
+			iPhoneGlobals.iEventSignalActive = ETrue;
+			iPhoneGlobals.GetCallInfoManager().SetIncomingCallFlag(ETrue);
+			iAtClcc->StartRequest();			
+			}
+		}	
+	
+	//Find At Clcc OK
+	if (iAtClcc->GetProcessStates() == CATClcc::EProcessOK)
+		{
+		TInt nRes = ProcessIncomingCallInfomation();
+		iAtClcc->InitVariable();
+		}	
+	
+	//Process AT CLCC error
+	if (iAtClcc->GetProcessStates() == CATClcc::EProcessError )
+		{
+		iAtClcc->InitVariable();
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/callcontrol/src/unsolicitedcommandcallcontrolhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,291 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CUnsolicitedCommandCallControlHandler. The handler for handling the unsolicited command related to call control
+
+//system include
+
+//user include
+#include "unsolicitedcommandcallcontrolhandler.h"
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include "ltsycommondefine.h"
+#include "globalphonemanager.h"
+#include "unsolicitedparams.h"
+#include "atclcc.h"
+#include "ltsycallinformationmanager.h"
+#include "mslogger.h"
+
+CUnsolicitedCommandCallControlHandler* CUnsolicitedCommandCallControlHandler::NewL(CGlobalPhonemanager& aGloblePhone,
+		                                                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::NewL()"));
+	
+	CUnsolicitedCommandCallControlHandler* self = CUnsolicitedCommandCallControlHandler::NewLC(aGloblePhone, 
+			                                                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CUnsolicitedCommandCallControlHandler* CUnsolicitedCommandCallControlHandler::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                                                                            CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::NewLC()"));
+	
+	CUnsolicitedCommandCallControlHandler* self = new (ELeave) CUnsolicitedCommandCallControlHandler(aGloblePhone, 
+			                                                                                         aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CUnsolicitedCommandCallControlHandler::~CUnsolicitedCommandCallControlHandler()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::~CUnsolicitedCommandCallControlHandler()"));
+	}
+
+CUnsolicitedCommandCallControlHandler::CUnsolicitedCommandCallControlHandler(CGlobalPhonemanager& aGloblePhone,
+		                                                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+																			 :iGlobalPhone(aGloblePhone),
+																			  iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::CUnsolicitedCommandCallControlHandler()"));
+	}
+
+void CUnsolicitedCommandCallControlHandler::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::ConstructL()"));
+	
+	iAtClcc = CATClcc::NewL(iGlobalPhone, iCtsyDispatcherCallback);
+	
+	iAtClcc->AddQueryCallInformationCompleteNotify(this);
+	}
+
+void CUnsolicitedCommandCallControlHandler::QueryCallInformationComplete(TInt /*aError*/)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::QueryCallInformationComplete()"));
+	
+	if (iAtClcc->GetProcessStates() == CATClcc::EProcessOK)
+		{
+		TInt nCallId = iGlobalPhone.GetCallInfoManager().FindWaitingCallId();
+		
+		LOGTEXT2(_L8("[Ltsy CallControl] The Waiting Call Id = %d"), nCallId);
+		if (KErrNotFound == nCallId)
+			{
+			iAtClcc->InitVariable();
+			return;
+			}
+		
+		//Waiting call information
+		TLtsyCallInformation& tWaitingCallInfo(iGlobalPhone.GetCallInfoManager().GetCallInformationByCallId(nCallId));
+		
+		RMobileCall::TMobileCallInfoV1 tMobileCallInfo;
+		
+		//Call id
+		tMobileCallInfo.iCallId = tWaitingCallInfo.GetCallId();
+		
+		//Call service
+		TLtsyCallInformation::TCallMode tCallService(tWaitingCallInfo.GetCallMode());
+		if (TLtsyCallInformation::EVoiceCall == tCallService)
+			{
+			tMobileCallInfo.iService = RMobilePhone::EVoiceService;
+			}
+		else if (TLtsyCallInformation::EDataCall == tCallService)
+			{
+			tMobileCallInfo.iService = RMobilePhone::ECircuitDataService;
+			}
+		else if (TLtsyCallInformation::EFaxCall == tCallService)
+			{
+			tMobileCallInfo.iService = RMobilePhone::EFaxService;
+			}
+		else
+			{
+			tMobileCallInfo.iService = RMobilePhone::EServiceUnspecified;
+			}	
+		
+		//Call back
+		iCtsyDispatcherCallback.CallbackCallControlNotifyIncomingCallInd(KErrNone, tMobileCallInfo);
+		
+		//Waiting States
+		tMobileCallInfo.iStatus = RMobileCall::EStatusRinging;		
+		
+		//Telephone number
+		tMobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Copy(tWaitingCallInfo.GetMobileTelNum());
+			
+		//Callback
+		iCtsyDispatcherCallback.CallbackCallControlNotifyCallInfoChangeInd(KErrNone, tMobileCallInfo);		
+		}
+	
+	//Init iAtCll for reusing it
+	iAtClcc->InitVariable();	
+	}
+
+void CUnsolicitedCommandCallControlHandler::HandleSimRemoveEvent()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::HandleSimRemoveEvent()"));
+	
+	TInt nErr = KErrEtelNoCarrier;
+	
+	for (TInt nCallId = KLtsyMinCallId; nCallId <= KLtsyMaxCallId; nCallId++)
+		{
+		TLtsyCallInformation& tCallInfo(iGlobalPhone.GetCallInfoManager().GetCallInformationByCallId(nCallId));
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo())
+			{
+			//Notify disconnecting status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(nErr,
+					                                                             nCallId, 
+					                                                             RMobileCall::EStatusDisconnecting);				
+			
+			//Nofity idel status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(nErr,
+					                                                             nCallId, 
+					                                                             RMobileCall::EStatusIdle);				
+			}
+		}
+	
+	iGlobalPhone.GetCallInfoManager().ResetAllCalInformation();	
+	}
+
+void CUnsolicitedCommandCallControlHandler::HandleProductInitEvent()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::HandleProductInitEvent()"));
+	
+	TInt nErr = KErrEtelNoCarrier;
+	
+	for (TInt nCallId = KLtsyMinCallId; nCallId <= KLtsyMaxCallId; nCallId++)
+		{
+		TLtsyCallInformation& tCallInfo(iGlobalPhone.GetCallInfoManager().GetCallInformationByCallId(nCallId));
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo())
+			{
+			//Notify disconnecting status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(nErr,
+					                                                             nCallId, 
+					                                                             RMobileCall::EStatusDisconnecting);				
+			//Notify idel status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(nErr,
+					                                                             nCallId, 
+					                                                             RMobileCall::EStatusIdle);				
+			}
+		}
+	
+	iGlobalPhone.GetCallInfoManager().ResetAllCalInformation();		
+	}
+
+void CUnsolicitedCommandCallControlHandler::HandleNetworkLostEvent()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::HandleNetworkLostEvent()"));
+	
+	TInt nErr = KErrEtelNoCarrier;	
+	
+	for (TInt nCallId = KLtsyMinCallId; nCallId <= KLtsyMaxCallId; nCallId++)
+		{
+		TLtsyCallInformation& tCallInfo(iGlobalPhone.GetCallInfoManager().GetCallInformationByCallId(nCallId));
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo())
+			{
+			//Notify disconnecting status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(nErr,
+					                                                             nCallId, 
+					                                                             RMobileCall::EStatusDisconnecting);				
+			//Notify idel status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(nErr,
+					                                                             nCallId, 
+					                                                             RMobileCall::EStatusIdle);				
+			}
+		}
+	
+	iGlobalPhone.GetCallInfoManager().ResetAllCalInformation();		
+	}
+
+void CUnsolicitedCommandCallControlHandler::HandleCallCreatedEvent(const TDesC8& aWindPkg)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::HandleCallCreatedEvent()"));
+	
+	TUnsolicitedParams::TUnsolicitedParamsPckgBuf* pPckg = (TUnsolicitedParams::TUnsolicitedParamsPckgBuf*)(&aWindPkg);
+	TInt nCallId = (*pPckg)().iIdx;
+	LOGTEXT2(_L8("[Ltsy CallControl] nCallId = %d"), nCallId);
+	
+	if (iAtClcc->GetProcessStates() == CATClcc::EProcessNotInProgress)
+		{
+		TInt nRet = iGlobalPhone.CheckGlobalPhoneStatus();
+		if (nRet == KErrNone)
+			{
+			iGlobalPhone.iEventSignalActive = ETrue;
+			iAtClcc->StartRequest();			
+			}
+		}
+	}
+
+void CUnsolicitedCommandCallControlHandler::HandleCallReleasedEvent(const TDesC8& aWindPkg)
+	{
+	//if call id is incoming call reset incoming call states
+	iGlobalPhone.GetCallInfoManager().SetIncomingCallFlag(EFalse);
+	
+	//Notify CTSY incoming call release
+	TUnsolicitedParams::TUnsolicitedParamsPckgBuf* pPckg = (TUnsolicitedParams::TUnsolicitedParamsPckgBuf*)(&aWindPkg);
+	TInt nCallId = (*pPckg)().iIdx;		
+	LOGTEXT2(_L8("[Ltsy CallControl] nCallId = %d"), nCallId);
+	
+	if (nCallId >= KLtsyMinCallId && nCallId <= KLtsyMaxCallId)
+		{
+		TLtsyCallInformation& tCallInfo(iGlobalPhone.GetCallInfoManager().GetCallInformationByCallId(nCallId));
+		if (TLtsyCallInformation::EUsed == tCallInfo.GetCallIdIsUsedInfo())
+			{
+			//Notify disconnecting status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing,
+																				 nCallId,
+																				 RMobileCall::EStatusDisconnecting);			
+			//Notify idel status
+			iCtsyDispatcherCallback.CallbackCallControlNotifyCallStatusChangeInd(KErrGsmCCNormalCallClearing,
+																				 nCallId,
+																				 RMobileCall::EStatusIdle);
+			
+			iGlobalPhone.GetCallInfoManager().ResetCallInformationByCallId(nCallId);
+			}
+		}	
+	}
+
+void CUnsolicitedCommandCallControlHandler::UnsolicitedCommandArriving(TInt aEvent, 
+																	   const TDesC8& aWindPkg)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CUnsolicitedCommandCallControlHandler::UnsolicitedCommandArriving()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] nEvent = %d"), aEvent);
+	
+	switch (aEvent)
+		{
+		case KLtsyUnsolicitedEvent00:
+			HandleSimRemoveEvent();
+			break;
+			
+		case KLtsyUnsolicitedEvent03:
+			HandleProductInitEvent();
+			break;
+			
+		case KLtsyUnsolicitedEvent08:
+			HandleNetworkLostEvent();
+			break;
+			
+		case KLtsyUnsolicitedEvent05:
+			HandleCallCreatedEvent(aWindPkg);
+			break;
+			
+		case KLtsyUnsolicitedEvent06:
+			HandleCallReleasedEvent(aWindPkg);
+			break;
+			
+		default:
+			break;
+		}
+	
+	LOGTEXT(_L8("[Ltsy CallControl] End CUnsolicitedCommandCallControlHandler::UnsolicitedCommandArriving()"));
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/activecommandstore.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,83 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CActiveCommandStore which store one and only one solicited active at command and a number of active 
+// unsolicited at commands
+// 
+
+#ifndef ACTIVECOMMANDSTORE_H_
+#define ACTIVECOMMANDSTORE_H_
+
+#include "atcommandbase.h"
+
+//Class forward
+
+/**
+ * This class is used to manager a list of active AT commands
+ * 
+ */
+class CActiveCommandStore : public CBase
+	{
+public:
+    /**
+     * Factory function
+     */
+	static CActiveCommandStore* NewL();
+	
+	/**
+	 * Factory function
+	 */
+	static CActiveCommandStore* NewLC();
+	
+	/**
+	 * Destructor
+	 */
+	virtual ~CActiveCommandStore();
+	
+	/**
+	 * Add unsolicited AT command
+	 */
+	TInt AddUnsolicitedAtCommand(CAtCommandBase *aAtCommand);
+	
+	/**
+	 * Add the solicited AT command
+	 */
+	TInt AddSolicitedAtCommand(CAtCommandBase *aAtCommand);
+	
+	/**
+	 * Remove the At command
+	 */
+	TInt RemoveActiveAtCommand(const CAtCommandBase *aAtCommand);
+	
+	/**
+	 * Get the active command list
+	 */
+	RPointerArray<CAtCommandBase>& GetActiveCommandArray();
+protected:
+    /**
+     * constructor
+     */
+	CActiveCommandStore();
+	
+	/**
+	 * 2nd constructor
+	 */
+	void ConstructL();
+private:
+    /**
+     * The list store the acitve AT command solicited and unsolicited
+     */
+	RPointerArray<CAtCommandBase> iArray;
+	};
+
+#endif /*ACTIVECOMMANDSTORE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/asynchelperrequest.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,105 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file asynchelperrequest.h
+// 
+
+#ifndef __ASYNCHELPERREQUEST_H__
+#define __ASYNCHELPERREQUEST_H__
+
+//system include
+#include <e32base.h>
+//user include
+#include "cltsypacketserviceshandler.h"
+// forward class
+class CCtsyDispatcherCallback;
+class CGlobalPhonemanager;
+/**
+ * This is a helper class. 
+ * There are sometimes, CTSY passed an asynchronous request to LTSY, and LTSY alreay know what should be returned(No need to Send AT command to Baseband).
+ * But as the passed request is 'Asynchronous', so we have to somehow return this value to CTSY in an asynchronous way.
+ * So we just inherit form CTimer which an Active object, and reuturn the alreay-known value to CTSY some time later.
+ *  
+ */
+class CAsyncHelperRequest : public CTimer
+	{
+public:
+	/**
+	 * 2nd Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 * @param aPriority
+	 */
+	static CAsyncHelperRequest* NewL(CGlobalPhonemanager& aGloblePhone,
+			                   CCtsyDispatcherCallback& aCallBack,
+			                   TInt aPriority = CActive::EPriorityLow);	
+	/**
+	 * Destructor
+	 *
+	 */
+	virtual ~CAsyncHelperRequest();
+	
+	/**
+	 * Set request IPC
+	 */
+	void SetRequestId(const TInt aIpc);
+protected:
+    /**
+     * constructor
+     */
+	CAsyncHelperRequest(CGlobalPhonemanager& aGloblePhone,CCtsyDispatcherCallback& aCallBack,TInt aPriority);
+	
+	/**
+	 * Typicl RunL which inherit from CActive
+	 */
+	virtual void RunL();
+private:
+    /**
+     * Start the timer
+     */
+	void StartTimer(const TTimeIntervalMicroSeconds32 aTimeout = 100000);
+	
+	/**
+	 * Stop the timer
+	 */
+	void StopTimer();
+protected:	
+    /**
+     * Call back dispatcher
+     */
+    CCtsyDispatcherCallback& iCallBack;
+    
+    /**
+     * The global phone reference
+     */
+    CGlobalPhonemanager& iGloblePhone;	
+private:
+    /**
+     * The IPC requtest ID which is used to identiy what callback function should be returned
+     */
+	TInt iRequestId;
+	
+	/**
+	 * Store the IPC request ID
+	 */
+	RArray<TInt> iReqArray;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+	};
+
+
+
+#endif //__ASYNCHELPERREQUEST_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,278 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atcommandbase.h
+// This contains CAtCommandBase which is the base class for AT command
+// 
+
+#ifndef ATCOMMANDBASE_H_
+#define ATCOMMANDBASE_H_
+
+// system include
+#include <e32base.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+// user include
+#include "atcommandtype.h"
+#include "ltsycommondefine.h"
+#include "respondbufparser.h"
+#include "requestbase.h"
+#include "globalphonemanager.h"
+
+
+// const defination
+const TUint KLtsyGenericBufferSize = 200;
+
+// forward class
+class CGlobalPhonemanager;
+class CAtManager;
+class CCommEngine;
+class CCtsyDispatcherCallback;
+class MAtCommandExecuteObserver;
+class CRequestBase;
+class CATSwitchOnLineMode;
+
+/**
+* This class provide the common functionalities for AT Command
+*
+*/
+class CAtCommandBase : public CRequestBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	virtual ~CAtCommandBase();
+public:// pure virtual functions	
+
+	/**
+	* Pure virtual function. Start Execute AT Command
+	*/
+	virtual void ExecuteCommand()=0;
+	
+	/**
+	* Cancel the AT Command execution
+	*/
+	virtual void CancelCommand();
+	
+public:// virtual functions	
+	/**
+	* Must be called after the AT Command execution get complete
+	*/
+	virtual void Complete();
+	
+	/**
+	* It can be overrided by inherited class
+	* 
+	* @param aResponseBuf Line buf reading from baseband which is 
+	*  parsered by class CAtCommandBase or CAtCommandBase's subtype
+	*/	
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	 * Virtual Function
+	 * This function would be called after one of @see TAtEventSource happened.
+	 * Subclass should implement this function.
+	 * 
+	 * @param aEventSource One of them: EReadCompletion, EWriteCompletion and ETimeoutCompletion
+	 * @param aStatus KErrNone if the event was complete without any error, or otherwise.
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+public:
+	/**
+	* Return the AT Type
+	* @return TLtsyATCommandType The AT Type and @see TLtsyATCommandType
+	*/
+	TLtsyATCommandType AtType();
+	
+	/**
+	* Add expected response string after an AT Command was executed
+	*
+	* @param aExpectStr
+	*/
+	void AddExpectStringL(const TDesC8& aExpectStr);
+	
+	/**
+	* Add expected response string after an AT Command was executed
+	*
+	* @param aExpectStr
+	*/
+	void RemoveExpectString(const TDesC8& aExpectStr);
+	
+	/**
+	* Reset and clean all the expect string
+	*
+	*/
+	void RemoveAllExpectString();
+	
+	/**
+	* Add an AT Command to ATCommandStore
+	*
+	*/
+	void AddUnsolicitedAtCommand();
+	
+	/**
+	* Remove an AT Command in ATCommandStore
+	*
+	*/
+	void RemoveAtCommand();
+	
+	/**
+	* Issue writing AT Command to baseband
+	*
+	*/
+	void Write();
+	
+	/**
+	 * Set write and read timout
+	 */
+	void SetTimeOut(TInt aWriteTimeOut, TInt aReadTimeOut);
+	
+	/**
+	* Clean the whole buffer received from baseband
+	*/
+	void ClearBuffer();
+	
+	/**
+	* Clean the current line in the buffer
+	*/
+	void ClearCurrentLine();
+	
+	/**
+	* The buffer for storing the all received data from comms engine
+	*/
+	TPtrC8 Buffer() const;
+	
+	/**
+	* The current line in the buffer
+	*/
+	TPtrC8 CurrentLine() const;
+	/**
+	* The last line which had not matched in the buffer
+	*/
+	TPtrC8 PrecedingLine() const;
+	
+	/**
+	* Check if the passed string was matched with Expected AT String
+	*
+	* @param aReadLine
+	* @return TBool ETrue if matched, otherwise EFalse
+	*/
+	virtual TBool MatchExpectString(const TDesC8& aReadLine);
+	/**
+	 * Set AT command observer
+	 * If the observer was set, the AT command should return the data from baseband back to it but not Dispatcher Callback handler.
+	 * 
+	 * @param aAtCommandObserver The AT command observer @see MAtCommandExecuteObserver
+	 */
+	void SetAtCommandObserver(MAtCommandExecuteObserver* aAtCommandObserver);
+	
+	/**
+	 * Remove the AT command observer
+	 * 
+	 */
+	void RemoveAtCommandObserver();
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	void GenericEventSignal(TAtEventSource aEventSource, TInt aStatus);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aAtManager
+	* @param aCommEngine
+	* @param aAtCommandObserver
+	*/
+	CAtCommandBase(CGlobalPhonemanager& aGloblePhone, CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	* This function must be called in his subtype class for 
+	* creating instance of class CRespondBufParser
+	*/
+	void ConstructL();
+    /**
+	* Start timer and would be expired after time periond of aTimeOut seconds
+	*/
+	void StartTimer(const TInt aTimeOut);
+private:
+  	/**
+	* Stop the timer
+	*/
+	void StopTimer();
+
+protected:
+    /**
+	* Identify the Type of AT Command
+	*/
+	TLtsyATCommandType iAtType;
+	
+	/**
+	* The array of strings which contain the expected Response Message from BaseBand
+	*/
+	RArray<TPtrC8> iExpectingArray;
+	
+	/**
+	* The buffer contains the "AT" String which should be sent to BaseBand Modem
+	*/
+	TBuf8<KLtsyGenericBufferSize> iTxBuffer;
+	
+	/**
+	* The expired time in which the Writing of AT command should be complete
+	*/
+	TInt iWriteTimeOut;
+	
+	/**
+	* The expired time in which the response message should be received
+	*/
+	TInt iReadTimeOut;
+	
+	/**
+	* The pointer to class CRespondBufParserparser for parsering response 
+	* message buffer
+	* 
+	*/	
+	CRespondBufParser* iParser;
+	
+	/**
+	* The dispacher callback handler
+	*/
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+private:	
+	/**
+	* The AT command observer.
+	* In most of cases, when the AT command was complete, it should use dispathcer callback handler to return data back to CTSY.
+	* But in some of cases, AT command should return the data back to the AT Command Observer which actually return the composed data
+	* (some of them were collected from other AT commands)
+	* back to CTSY.
+	* 
+	* Not own
+	*/
+	MAtCommandExecuteObserver* iAtCommandObserver;
+	
+	/**
+	* The buffer contains the line which had not matched
+	*/
+	TBuf8<KLtsyGenericBufferSize> iNoMatchedLastLine;
+	
+	
+	CATSwitchOnLineMode* iATSwitchOnLineMode;
+
+	};
+
+#endif /*ATCOMMANDBASE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandcontrolbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,127 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CATCommandControlBase which is composite class of a number classes
+// 
+
+#ifndef ATCOMMANDCONTROLBASE_H_
+#define ATCOMMANDCONTROLBASE_H_
+
+//system include
+#include <e32base.h>
+
+//user include 
+#include "atcommandtype.h"
+#include "atcommandexecuteobserver.h"
+#include "requestbase.h"
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+
+//forward class
+class CAtCommandBase;
+class CRequestBase;
+
+/**
+ * This class is a composite class which is composed of a number of AT commands
+ * 
+ */
+class CATCommandControlBase : public CRequestBase, public MAtCommandExecuteObserver
+	{
+public:
+    /**
+     * Destructor
+     */
+	virtual ~CATCommandControlBase();
+public:
+    /**
+     * Add an AT command
+     * 
+     * @param aAtCommand The AT command which is to be added in
+     */
+	TInt AddAtCommand(const CAtCommandBase* aAtCommand);
+	
+	/**
+	 * Remove the AT command
+	 */
+	void RemoveAtCommand(const CAtCommandBase* aAtCommand);
+	
+	/**
+	 * Remove the AT command by its AT type
+	 */
+	void RemoveAtCommandByAtType(TLtsyATCommandType aType);
+	
+	/**
+	 * Get the AT command by its AT type
+	 * 
+	 * @param aType @see TLtsyATCommandType
+	 */
+	CAtCommandBase& GetAtCommandByAtTypeL(TLtsyATCommandType aType);
+	
+	/**
+	 * Remove all the AT commands
+	 */
+	void CleanAllAtCommands();
+	
+	/**
+	 * Remove all the AT commands and destroy them also
+	 */
+	void CleanAndDeleteAllAtCommands();	
+public:
+    /**
+     * Define the type to delete the AT command
+     */
+	enum TAutoDeleteAtCommand
+		{
+		/**
+		 * Delete all at command instance contained in the RPointArray when destructor
+		 */
+		EAutoDelete,
+		/**
+		 * Only close RPointArray, not delete at command instance contained in the RPonintArray
+		 */
+		ENoDelete
+		};
+	/**
+	 * Set the type of auto delete type
+	 */
+	void SetIsAutoDelete(TAutoDeleteAtCommand aIsDel);
+	
+	/**
+	 * Get the auto delete type
+	 */
+	TAutoDeleteAtCommand GetIsAutoDelete();
+protected:
+    /**
+     * Constructor
+     */
+	CATCommandControlBase(CGlobalPhonemanager& aGloblePhone, 
+		                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+protected:
+    /**
+     * The dispatcher call back
+     */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+private:
+    /**
+     * Auto delete type
+     */
+    TAutoDeleteAtCommand iIsDel;
+    
+    /**
+     * AT commands store
+     */
+    RPointerArray<CAtCommandBase> iArray;	
+	};
+
+#endif /*ATCOMMANDCONTROLBASE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandexecuteobserver.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,32 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atcommandexecuteobserver.h
+// 
+
+#ifndef ATCOMMANDEXECUTEOBSERVER_H_
+#define ATCOMMANDEXECUTEOBSERVER_H_
+
+//symstem include
+
+//user include
+#include "ltsycommondefine.h"
+
+
+class MAtCommandExecuteObserver
+	{
+public:
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus) = 0;
+	};
+
+#endif /*ATCOMMANDEXECUTEOBSERVER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atcommandtype.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,104 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atcommandtype.h
+// 
+
+#ifndef ATCOMMANDTYPE_H_
+#define ATCOMMANDTYPE_H_
+
+//Identifer at command class
+
+const TInt KLtsyGeneralAtCommandTypeUnitId = 0;
+const TInt KLtsyCallControlAtCommandTypeUnitId = 200;
+const TInt KLtsyPhoneAtCommandTypeUnitId = 400;
+const TInt KLtsySecurityAtCommandTypeUnitId = 600;
+const TInt KLtsyCellBroadcastAtCommandTypeUnitId = 800;
+const TInt KLtsyPhonebookOnTypeUnitId = 1000;
+const TInt KLtsyPhonebookTypeUnitId = 1200;
+const TInt KLtsySimTypeUnitId = 1400;
+const TInt KLtsySmsTypeUnitId = 1600;
+const TInt KLtsyCallControlMultipartyTypeUnitId = 1800;
+const TInt KLtsySupplementaryServicesTypeUnitId = 2000;
+const TInt KLtsyPacketServicesTypeUnitId = 2200;
+const TInt KLtsySatTypeUnitId = 2400;
+
+enum TLtsyATCommandType
+	{
+	/*Not Use*/
+	ELtsyAt_User_NotUse = -1,
+	/*General*/
+	ELtsyAT_General_AT = KLtsyGeneralAtCommandTypeUnitId + 1,	//AT
+	ELtsyAT_General_WIND = KLtsyGeneralAtCommandTypeUnitId + 2,	//+WIND (Unsolicited command)
+	ELtsyAT_General_CLCC = KLtsyGeneralAtCommandTypeUnitId + 3, //AT+CLCC (list current call information)
+	
+	/*Call Control*/
+	ELtsyAT_Call_ATD = KLtsyCallControlAtCommandTypeUnitId + 1,		//ATD
+	ELtsyAT_Call_ATH = KLtsyCallControlAtCommandTypeUnitId + 2,     //ATH
+	ELtsyAT_Call_RING = KLtsyCallControlAtCommandTypeUnitId + 3,    //RING or +CRING : *
+	ELtsyAT_Call_CHLD = KLtsyCallControlAtCommandTypeUnitId + 4,    //CHLD(for use release/hold/resume/swap a call)
+	
+	/*Phone*/
+	ELtsyAT_Phone_ModemStatus      = KLtsyPhoneAtCommandTypeUnitId + 1,
+	ELtsyAT_Phone_NwkRegStatus     = KLtsyPhoneAtCommandTypeUnitId + 2,
+	ELtsyAT_Phone_SimCardStatus    = KLtsyPhoneAtCommandTypeUnitId + 3,
+	ELtsyAT_Phone_NwkInfo          = KLtsyPhoneAtCommandTypeUnitId + 4,
+	ELtsyAT_Phone_GetSignal        = KLtsyPhoneAtCommandTypeUnitId + 5,
+	ELtsyAT_Phone_GetBattery       = KLtsyPhoneAtCommandTypeUnitId + 6,
+	ELtsyAT_Phone_SMSSetting1      = KLtsyPhoneAtCommandTypeUnitId + 7,
+	ELtsyAT_Phone_SMSSetting2      = KLtsyPhoneAtCommandTypeUnitId + 8,
+	ELtsyAT_Phone_RegistNwk        = KLtsyPhoneAtCommandTypeUnitId + 9,
+	ELtsyAT_Phone_GPRSRegNwk       = KLtsyPhoneAtCommandTypeUnitId + 10,
+	ELtsyAT_Phone_SetWind          = KLtsyPhoneAtCommandTypeUnitId + 11,
+	ELtsyAT_Phone_GetImei          = KLtsyPhoneAtCommandTypeUnitId + 12,
+	ELtsyAT_Phone_GetManufacturer  = KLtsyPhoneAtCommandTypeUnitId + 13,
+	ELtsyAT_Phone_GetModel         = KLtsyPhoneAtCommandTypeUnitId + 14,
+	ELtsyAT_Phone_GetRevision      = KLtsyPhoneAtCommandTypeUnitId + 15,
+	ELtsyAT_Phone_SetOperFormat    = KLtsyPhoneAtCommandTypeUnitId + 16,
+	ELtsyAT_Phone_CheckFdnSupport  = KLtsyPhoneAtCommandTypeUnitId + 17,
+	ELtsyAT_Phone_GetFdnStatus     = KLtsyPhoneAtCommandTypeUnitId + 18,
+	ELtsyAT_Phone_SetTDRSingal     = KLtsyPhoneAtCommandTypeUnitId + 19,
+	/*Security*/
+	
+	/*Cell Broad Cast*/
+	
+	/*Phone book On*/
+	
+	/*Phone book*/
+	
+	ELtsyAT_Phonebook_SmsStoreGetInfo=KLtsyPhonebookTypeUnitId  + 1,
+	/*Sim*/
+	
+	/*Sms*/
+	ELtsyAT_Sms_GetMessageStoreInfo = KLtsySmsTypeUnitId + 1,
+	
+	ELtsyAT_Sms_ReceiveMessage = KLtsySmsTypeUnitId+2,
+	/*Call Control Multiparty*/
+	
+	/*Supplementary Services*/
+	
+	/*PacketServices*/
+	ELtsyAT_Packet_ActivateContext          = KLtsyPacketServicesTypeUnitId + 1,
+	ELtsyAT_Packet_GetContextAddr           = KLtsyPacketServicesTypeUnitId + 2,
+	ELtsyAT_Packet_SwitchOnlineMode         = KLtsyPacketServicesTypeUnitId + 3,
+	ELtsyAT_Packet_HangUp                   = KLtsyPacketServicesTypeUnitId + 4,
+	ELtsyAT_Packet_DeactivateContext        = KLtsyPacketServicesTypeUnitId + 5,
+	ELtsyAT_Packet_ConnectContext           = KLtsyPacketServicesTypeUnitId + 6,
+	ELtsyAT_Packet_DeleteContext1           = KLtsyPacketServicesTypeUnitId + 7,
+	ELtsyAT_Packet_DeleteContext2           = KLtsyPacketServicesTypeUnitId + 8,
+	ELtsyAT_Packet_DeleteContext3           = KLtsyPacketServicesTypeUnitId + 9,
+	ELtsyAT_Packet_DeleteContext4           = KLtsyPacketServicesTypeUnitId + 10
+	/*Sat*/
+	};
+
+#endif /*ATCOMMANDTYPE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/athelpercommand.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,99 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file athelpercommand.h
+// 
+
+
+#ifndef __ATHELPERCOMMAND_H__
+#define __ATHELPERCOMMAND_H__
+
+//user include
+#include "atcommandbase.h"
+
+/**
+ * \class CATHelperCommand 
+ * \brief get Modem status.
+ *
+ * CATHelperCommand inherits from the CAtCommandBase class. 
+ * This file defines the AT command for simple AT command 
+ * which only return OK or Error
+ */
+class CATHelperCommand : public CAtCommandBase
+{
+public:
+	static CATHelperCommand* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATHelperCommand();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Cancel the AT Command execution
+	 */
+	virtual void CancelCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Set the string which should be executed AT Command
+	 */
+	void SetAtCommandString(const TDesC8& aATString);
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	/**
+	 * Start this request
+	 */
+	void SetATType(TLtsyATCommandType aATType);
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATHelperCommand(CGlobalPhonemanager& aGloblePhone, 
+		              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+	/**
+	* The buffer contains the "AT" String which should be sent to BaseBand Modem
+	*/
+	TBuf8<KLtsyGenericBufferSize> iATBuffer;
+
+};
+#endif //__ATHELPERCOMMAND_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atipcrequestcompleteobserver.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,25 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains MIpcRequestCompleteObserver which store one and only one solicited active at command and a number of active 
+// 
+
+#ifndef ATIPCREQUESTCOMPLETEOBSERVER_H_
+#define ATIPCREQUESTCOMPLETEOBSERVER_H_
+
+class MIpcRequestCompleteObserver
+    {
+public:    
+    virtual void NotifyIpcRequestComplete(TInt aIpcId) = 0;
+    };
+#endif /* ATIPCREQUESTCOMPLETEOBSERVER_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atmanager.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,113 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atmanager.h
+// This contains CAtManager which manage AT commands
+//
+
+#ifndef ATMANAGER_H_
+#define ATMANAGER_H_
+
+// system include
+#include <e32base.h>
+
+// user include
+#include "mcommobserver.h"
+#include "atcommandbase.h"
+
+//class forward
+class CActiveCommandStore;
+
+/**
+ * This class is acting an interface between Comms Engine and AT commands, which manage to find active
+ * AT command and send the Event to it.
+ * 
+ */
+class CAtManager : public CBase, 
+				   public MCommReadLineNotifier, 
+				   public MCommEngineObserver
+	{
+public:
+	/**
+	 * Factory function
+	 * 
+	 */
+	static CAtManager* NewL();
+	
+	/**
+	 * Factory function
+	 */
+	static CAtManager* NewLC();
+	
+	/**
+	 * Destructor
+	 */
+	virtual ~CAtManager();
+	
+public:
+	/**
+	 * Set current active solicited AT Command.
+	 * By default, one one solicited AT command should be currently Active
+	 * 
+	 * @param aSolicitedCommand The solicited AT command
+	 */
+	void SetSolicitedAtCommand(CAtCommandBase* aSolicitedCommand);
+	
+	/**
+	 * Get the Active Commands store: only one solicited and number of unsoclited AT Commands
+	 * 
+	 * CActiveCommandStore The active commands store
+	 */
+	CActiveCommandStore* GetActiveCommandStore() const;
+	
+	/**
+	 * From MCommEngineObserver
+	 * This function would be called when the event @see TAtEventSource happened.
+	 * 
+	 */
+	virtual void ReadOrWriteComplete(TAtEventSource aEvent, TInt aStatus);
+	
+	/**
+	 * From MCommReadLineNotifier
+	 * This function would be called when one line string were found 
+	 */
+	virtual TBool NotifyOneLineFoundL(TInt aStatus, const TDesC8& aLineBuf);
+	
+protected:
+	/**
+	 * Constructor
+	 * 
+	 */
+	CAtManager();
+	
+	/**
+	 * 2nd constructor
+	 * 
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * The active solicited AT command
+	 * Not Own
+	 */
+	CAtCommandBase* iSolicitedCommand; 
+	
+	/**
+	 * The active command store
+	 * Own
+	 */
+	CActiveCommandStore* iActiveCommandStore;
+	};
+
+#endif /*ATMANAGER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atswitchonlinemode.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,114 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CATSwitchOnLineMode which switch to online mode
+// 
+
+#ifndef __ATSWITCHONLINEMODE_H__
+#define __ATSWITCHONLINEMODE_H__
+
+#include <callbacktimer.h>
+//user include
+#include "atcommandbase.h"
+
+/**
+ * \class CATSwitchOnLineMode 
+ * \brief get Modem status.
+ *
+ * CATSwitchOnLineMode inherits from the CAtCommandBase class. 
+ * This file defines the AT command for simple AT command 
+ * which only return OK or Error
+ */
+class CATSwitchOnLineMode : public CAtCommandBase,
+                            public MTimerObserver
+{
+public:
+	static CATSwitchOnLineMode* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATSwitchOnLineMode();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	 * Start this request
+	 */
+	void StartSwitchOnLineMode(CAtCommandBase* aAtCommandBase,MAtCommandExecuteObserver* aAtCommandObserver);
+	/**
+	 * 
+	 * 
+	 */
+	void Enable();
+	/**
+	 * 
+	 * 
+	 */
+	void Disable();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATSwitchOnLineMode(CGlobalPhonemanager& aGloblePhone, 
+		                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	//From MTimerObserver
+    virtual void TimerRun(TInt aError);	
+    void StartTimer(const TInt aTimeout);
+private:
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+	CAtCommandBase* iAtCommandBase;
+	MAtCommandExecuteObserver* iAtCommandObserver;
+	CCallbackTimer* iCallbackTimer;	
+	
+	enum 
+		{
+		ETimerNone,
+		ETimerDrop,
+		ETimerRaise,
+		ETimerReset,
+		ETimerRead,
+		ETimerWait
+		} iWhichTimer;
+
+};
+#endif //__ATSWITCHONLINEMODE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atunsolicited.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,109 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atunsolicited.h
+// 
+
+#ifndef ATUNSOLICITED_H_
+#define ATUNSOLICITED_H_
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+#include "unsolicitedparams.h"
+
+class CATUnsolicited : public CAtCommandBase
+	{
+public:
+	/**
+	 * 
+	 * 
+	 */
+	static CATUnsolicited* NewL(CGlobalPhonemanager& aGloblePhone,
+			                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 
+	 * 
+	 */
+	static CATUnsolicited* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+			                     
+	
+	/**
+	 * 
+	 * 
+	 */
+	virtual ~CATUnsolicited();
+	
+	/**
+	 * 
+	 * 
+	 * 
+	 */
+	virtual void ExecuteCommand(){};
+	
+	/**
+	 * 
+	 * 
+	 */
+	virtual void CancelCommand(){};
+	
+	/**
+	 * 
+	 * 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	 * 
+	 * 
+	 */
+	TInt GetParserResult() const;	
+	
+	/**
+	 * 
+	 * 
+	 */
+	const TDesC8& GetUnsolicitedParams() const;
+protected:
+	/**
+	 * 
+	 * 
+	 */
+	CATUnsolicited(CGlobalPhonemanager& aGloblePhone,
+				   CCtsyDispatcherCallback& aCtsyDispatcherCallback);	
+	
+	/**
+	 * 
+	 * 
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * 
+	 * 
+	 */
+	TUnsolicitedParams::TUnsolicitedParamsPckgBuf iPckgBuf;
+	
+	/**
+	 * 
+	 * 
+	 * 
+	 */
+	TInt iResult;
+	};
+
+#endif /*ATUNSOLICITED_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/atunsolicitedobserver.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atunsolicitedobserver.h
+// 
+
+#ifndef ATUNSOLICITEDOBSERVER_H_
+#define ATUNSOLICITEDOBSERVER_H_
+
+//system include
+#include <e32std.h>
+//user include
+
+class MLtsyUnsolicitedCommandObserver
+	{
+public:
+	/**
+	 * 
+	 * 
+	 */
+	virtual void UnsolicitedCommandArriving(TInt aEvent, const TDesC8& aWindPkg) = 0;
+	};
+
+#endif /*ATUNSOLICITEDOBSERVER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/globalphonemanager.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,224 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file globlephonemanager.h
+// This contains CGlobalPhonemanager which manage the global phone status and call info manager.
+// 
+
+#ifndef __GLOBALPHONEMANAGER_H__
+#define __GLOBALPHONEMANAGER_H__
+
+// system include
+#include <etel.h>
+#include <etelmm.h>
+#include <etelqos.h>
+#include <ctsy/ltsy/mltsydispatchphonebookinterface.h>
+
+// user include
+#include <cmmutility.h>
+#include "cltsypacketserviceshandler.h"
+
+/**
+ *  Define the prort access type
+ */
+enum TPortAccess
+	{
+	EPortAccessAllowed,
+	EPortAccessDenied
+	};
+
+/**
+ * Define the phone status for phone initialization
+ */ 
+enum TPhoneInitStatus
+	{
+	EPhoneNotInitialised,
+	EPhoneInitialising,
+	EPhoneInitialiseCancelling,
+	EPhoneInitialised
+	};
+
+/**
+ * Define the singnal info
+ * 
+ */ 
+struct TTsySignalInfo
+	{
+	TInt iSignalStrength;
+	TInt iBar;
+	};
+
+/**
+ * Define the storage type
+ */
+typedef TBuf8<2> TStorageType;
+
+/**
+ * Define the global phone status
+ */
+struct TPhoneStatusTSY
+	{
+	RPhone::TModemDetection iModemDetected;
+	RPhone::TMode iMode;
+	TUint iDataAndFaxFlags;
+	TPhoneInitStatus iInitStatus;
+	TPortAccess iPortAccess;
+	TInt iWaitForCarrierTime;
+	TBool iDataPortLoaned;
+	TUint iSupportedPhoneBookStorageFlag;
+	TInt iSupportedPhoneBookCount;
+	TStorageType iLastAccessedPhoneBook;
+	TBool iNetworkChanged;
+	RMobilePhone::TMobilePhoneRegistrationStatus iRegistrationStatus;
+	RMobilePhone::TMobilePhoneLocationAreaV1 iLocationArea;
+	RMobilePhone::TMobilePhoneNetworkInfoV5 iCurrentNetwork;
+	TTsySignalInfo iSignalInfo;
+	RMobilePhone::TMobilePhoneBatteryInfoV1 iBatteryInfo;
+	RMobilePhone::TMobilePhoneNITZ iMobilePhoneNITZ;
+	RPacketService::TRegistrationStatus iGprsRegistrationStatus;
+	RPacketService::TStatus iPacketStatus;
+	TInt iGprsMaxNumContexts;
+	TRfStateInfo iRfStateInfo;
+	RMobilePhone::TMobilePhoneNetworkSelectionV1  iLocalNetworkSel;
+	RMobilePhone::TMobilePhoneIdentityV1 iPhoneId;
+	};
+
+// forward class declarations
+class CTsyConfig;
+class CAtManager;
+class CCommEngine;
+class CRequestBase;
+class CLtsyCallInformationManager;
+
+/**
+ * This class is a shared global phone manager across all the handlers.
+ * 
+ * This class provide the functions which store the phone status, modem status and access the call info manager.
+ * 
+ */
+class CGlobalPhonemanager : public CBase
+	{
+public:
+	/**
+	 * Factory function
+	 */
+	static CGlobalPhonemanager* NewL();
+	
+	/**
+	 * Factory function
+	 */
+	static CGlobalPhonemanager* NewLC();
+	
+	/**
+	 * virtual destructor
+	 */
+	virtual ~CGlobalPhonemanager();
+	
+public:
+	/**
+	 * Check current phone status before writing an AT command
+	 */
+	TInt CheckGlobalPhoneStatus();
+	
+	/**
+	 * Set current Active IPC Request
+	 */
+	void SetActiveRequest(CRequestBase* aRequestBase);
+	
+	/**
+	 * Before writing an AT command to baseband, the last active Request must be deleted in order to avoiding the  
+	 */
+	void DeleteLastActiveRequest();
+	
+	/**
+	 * Get Call informantion manager reference
+	 * 
+	 */
+	CLtsyCallInformationManager& GetCallInfoManager();
+	
+	/**
+	 * Get current active IPC request
+	 */
+	CRequestBase* CurrentActiveRequest();
+private:
+	/**
+	 * Constructor
+	 * 
+	 */
+	CGlobalPhonemanager();
+	
+	/**
+	 * 2nd Constructor
+	 * 
+	 */
+	void ConstructL();
+	
+	/**
+	 * Initialize Phone Manager
+	 * 
+	 */
+	void InitL();
+public:
+	/**
+	 * CommDB Engine
+	 */
+	CTsyConfig *iConfiguration;
+	
+	/**
+	 * Comm Engine
+	 * Own
+	 */
+	CCommEngine *iCommEngine;
+	
+	/**
+	 * AT Manager
+	 * Own
+	 */
+	CAtManager *iAtManager;	
+	
+	/**
+	 * Global phone status
+	 */
+	TPhoneStatusTSY iPhoneStatus;
+	
+	/**
+	 * This member define if or not there is unfinished IPC active
+	 */
+	TBool iEventSignalActive;
+
+	/**
+	 * Pkt Context list
+	 */
+	RPointerArray<TContextInfomation> iContextList;
+	/**
+ 	 * Phonebook store info
+ 	 */
+	DispatcherPhonebook::TPhonebookStoreInfoV1  iPhonebookStoreInfo;
+	/**
+	 * Get the total storage items from CAtSmsStoreInfo
+	 */
+	TInt iStoreTotal; 
+private:
+	/**
+	 * Current active Ipc Request
+	 */
+	CRequestBase* iActiveIpcRequest;
+	
+	/**
+	 * The call information manager
+	 * Own
+	 */
+	CLtsyCallInformationManager* iCallInfoManager;
+	};
+
+#endif /*__GLOBALPHONEMANAGER_H__*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/ltsycallinformation.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,197 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains TLtsyCallInformation which store baseband related call information
+// 
+
+#ifndef LTSYCALLINFORMATION_H_
+#define LTSYCALLINFORMATION_H_
+
+//system include
+#include <e32base.h>
+#include <etelmm.h>
+
+//user include
+
+class TLtsyCallInformation
+	{
+public:
+	/**
+	 * 
+	 * 
+	 */
+	TLtsyCallInformation();
+	
+	/**
+	 *Call id is used or not 
+	 * 
+	 */
+	enum TCallIdUsedInfo
+		{
+		EUsed,
+		ENotUsed
+		};
+	
+	/**
+	 * Direction of the call
+	 * 
+	 */
+	enum TDirectionCall
+		{
+		EUnknownDirection = -1,	//Don't know
+		EMoCall = 0, 	//Mobile originated(MO) call
+		EMtCall = 1   	//Moblie teminated(MT) call
+		};
+
+	/**
+	 * State of the call
+	 * 
+	 */
+	enum TCallState
+		{
+		EUnknownState = -1,   //Don't know call state
+		EActiveCall = 0,	  //Active call
+		EHeldCall = 1,        //Hold call
+		EDialingCall = 2,     //Dialing Call(MO call)
+		EAlertingCall = 3,    //Alerting Call(MO call)
+		EInComingCall = 4,    //InComing call(MT call)
+		EWaitingCall = 5      //Waiting call(MT call)
+		};
+	
+	/**
+	 * Teleservice
+	 * 
+	 */
+	enum TCallMode
+		{
+		EVoiceCall  = 0,
+		EDataCall   = 1,
+		EFaxCall    = 2,
+		EUnKnowCall = 9
+		};	
+	
+	/**
+	 * Multiparty(Conference)
+	 * 
+	 */
+	enum TConferenceCall
+		{
+		EUnknownIsConference = -1, //Don't know
+		ENotConference = 0,		   //Not conference
+		EIsConference  = 1         //Conference
+		};
+	
+public:
+	/**
+	 * 
+	 */
+	void SetCallId(TInt aCallId);
+	
+	/**
+	 * 
+	 * 
+	 */
+	TInt GetCallId() const;
+	
+	void SetCallIdIsUsedInfo(TCallIdUsedInfo aUsedInfo);
+	TCallIdUsedInfo GetCallIdIsUsedInfo() const;
+	
+	void SetCallDirection(TDirectionCall aDirection);
+	TDirectionCall GetCallDirection() const;
+	
+	void SetCallState(TCallState aCallState);
+	TCallState GetCallState() const;
+	
+	void SetCallMode(TCallMode aCallMode);
+	TCallMode GetCallMode() const;
+	
+	void SetConferenceCall(TConferenceCall aConferenceCall);
+	TConferenceCall GetConferenceCall() const;
+	
+	void SetMobileTelNum(const TDesC8& aTelNum);
+	const TDesC8& GetMobileTelNum() const;
+	
+	void SetAddressType(TInt aAddressType);
+	TInt GetAddressType() const;
+	
+	void SetMobileName(const TDesC8& aMobileName);
+	const TDesC8& GetMobileName() const;
+	
+	void SetEmergencyCallFlag(TBool aIsEmergency);
+	TBool GetEmergencyCallFlag() const;
+	
+private:
+	
+	/**
+	 * Call id
+	 * 
+	 */
+	TInt iCallId;
+	
+	/**
+	 * Call id used info
+	 * 
+	 */
+	TCallIdUsedInfo iUsedInfo;
+	
+	/**
+	 * Direction of the call
+	 * 
+	 */
+	TDirectionCall iDirection;
+	
+	/**
+	 * State of the call
+	 * 
+	 */
+	TCallState iCallState;
+	
+	/**
+	 * Teleservice
+	 * 
+	 */
+	TCallMode iCallMode;
+	
+	/**
+	 * Multiparty(Conference)
+	 * 
+	 */
+	TConferenceCall iIsConference;
+	
+	/**
+	 * Telephone num
+	 * 
+	 */
+	TBuf8<RMobilePhone::KMaxMobileTelNumberSize> iTelNum; 
+	
+	/**
+	 * 
+	 * 
+	 */
+	TInt iAddressType;
+	
+	/**
+	 * Moblie name
+	 * 
+	 */
+	TBuf8<RMobilePhone::KMaxMobileNameSize> iMobileName;
+	
+	/**
+	 * Emergency call
+	 * 
+	 */
+	TBool iIsEmergencyCall;
+	
+	};
+
+#endif /*LTSYCALLINFORMATION_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/ltsycallinformationmanager.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,150 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CLtsyCallInformationManager which manager call information
+// 
+
+#ifndef LTSYCALLINFORMATIONMANAGER_H_
+#define LTSYCALLINFORMATIONMANAGER_H_
+
+//system include
+
+//user include
+#include "ltsycallinformation.h"
+
+//const define
+const TInt KLtsyMaxCallCount = 8;
+
+// forward class declarations
+class CATHangupCommandRecords;
+
+/**
+ * This class is handling all the call related information.
+ * 
+ * This call information manager store the call information and manage the call status.
+ * 
+ */
+class CLtsyCallInformationManager : public CBase
+	{
+public:
+    /**
+     * Factory funciton to create a new object of CLtsyCallInfomationManager
+     */
+	static CLtsyCallInformationManager* NewL();
+	
+	/**
+     * Factory funciton to create a new object of CLtsyCallInfomationManager
+     */
+	static CLtsyCallInformationManager* NewLC();
+	
+	/**
+	 * The destructor
+	 */
+	virtual ~CLtsyCallInformationManager();
+	
+	/**
+	 * Clear all the call information related to the specific CallID
+	 */
+	void ResetCallInformationByCallId(TInt aCallId);
+	
+	/**
+	 * Clear all the call information stored by call information manager
+	 * 
+	 * This function will be called when Hangup terminates all calls is called
+	 */
+	void ResetAllCalInformation();
+	
+	/**
+	 * Get the call information by specific CallID
+	 */
+	TLtsyCallInformation& GetCallInformationByCallId(TInt aCallId);
+	
+	/**
+	 * Get the call Id which is not currently used
+	 */
+	TInt FindUnUesedCallId() const;
+	
+	/**
+	 * Check the callId is used or not
+	 */
+	TBool IsHaveUsedCallId() const;
+	
+	/**
+	 * Find the call ID of 1st incoming call
+	 */
+	TInt FindIncomingCallId() const;
+	
+	/**
+	 * Find the call Id by its status which is dialling and altering
+	 */
+	TInt FindDialingOrAlertingCallId() const;
+	
+	/**
+	 * Get the call Id of 2nd incoming call.
+	 * Waiting call means that an incoming call is already processed by the client. and just wait
+	 * the client to hanle this 2nd incoming call
+	 */
+	TInt FindWaitingCallId() const;
+	
+	/**
+	 * Set the incoming ring call flag.
+	 * If received "Ring" or "+CRing", set this flag to be ETrue. and set it to be EFalse, if this call has been connected.
+	 */
+	void SetIncomingCallFlag(TBool aIncomingCallFlag);
+	
+	/**
+	 * Get the incoming call flag
+	 */
+	TBool GetIncomingCallFlag() const;
+	
+	/**
+	 * Get the call ID assigned to emergence call
+	 */
+	TInt FindEmergencyCallId() const;
+	
+	/**
+	 * Get Hang up command records
+	 * 
+	 */
+	CATHangupCommandRecords& GetHangupCommandRecords();	
+	
+protected:
+	/**
+	 * Constructor
+	 */
+	CLtsyCallInformationManager();
+	
+	/**
+	 * 2nd constructor
+	 */
+	void ConstructL();
+	
+private:
+    /**
+     *Call Information array 
+     */
+	TLtsyCallInformation iCallInfo[KLtsyMaxCallCount];
+	
+	/**
+	 * Incoming call status flag
+	 */
+	TBool iIncomingCallFlag;
+	
+	/**
+	 * Own. 
+	 * The store to store the hanup information related to AT hangup command
+	 */
+	CATHangupCommandRecords* iHangupCommandRecords;		
+	};
+
+#endif /*LTSYCALLINFORMATIONMANAGER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/ltsycommondefine.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,110 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains common defination
+// 
+
+#ifndef LTSYCOMMONDEFINE_H_
+#define LTSYCOMMONDEFINE_H_
+
+// system include
+#include <e32std.h>
+
+/**
+ * Define the IO event
+ * 
+ */
+enum TAtEventSource
+	{
+	EReadCompletion,
+	EWriteCompletion,
+	ETimeoutCompletion
+	};
+
+/**
+* The default maximum time in which Writing an AT command must be complete
+* 5 seconds
+*/
+const TInt KLtsyDefaultWriteTimeOut = 5;
+
+/**
+* The default maximum time in which The response from baseband must be received 
+* 10 seconds
+*/
+const TInt KLtsyDefaultReadTimeOut = 20;
+
+/**
+* The invalid call ID
+*/
+const TInt KLtsyErrorCallId = -1;
+
+/**
+ * The minimum call id
+ * 
+ */
+const TInt KLtsyMinCallId = 1;
+
+/**
+ * The maximal call id
+ * 
+ */
+const TInt KLtsyMaxCallId = 7;
+
+/**
+ * +WIND
+ */
+const TInt KLtsyUnsolicitedEvent00 = 0;
+const TInt KLtsyUnsolicitedEvent01 = 1;
+const TInt KLtsyUnsolicitedEvent02 = 2;
+const TInt KLtsyUnsolicitedEvent03 = 3;
+const TInt KLtsyUnsolicitedEvent04 = 4;
+const TInt KLtsyUnsolicitedEvent05 = 5;
+const TInt KLtsyUnsolicitedEvent06 = 6;
+const TInt KLtsyUnsolicitedEvent07 = 7;
+const TInt KLtsyUnsolicitedEvent08 = 8;
+const TInt KLtsyUnsolicitedEvent09 = 9;
+const TInt KLtsyUnsolicitedEvent10 = 10;
+const TInt KLtsyUnsolicitedEvent11 = 11;
+const TInt KLtsyUnsolicitedEvent12 = 12;
+/**
+ *  const for sms 
+ */
+const TInt KGsmTpduSize = 165;            // 140 bytes user data + 25 bytes TPDU header
+const TInt KPduMode = 0;
+const TInt KTextMode = 1;
+const TInt KCMTMode = 2;
+const TInt KMaxAsciiPduLength = 400;       //For write message and send message
+
+/**
+ * ReadEntry for phonebook
+ */
+class TPhonebookReadEntry
+    {
+public:
+	TUint16     iIndex;
+    TBuf16<20>  iNumber;
+    TUint8      iTon;
+    TBuf16<14>  iText;	
+    };
+
+// const string defination
+_LIT8(KLtsyOkString,"OK");
+_LIT8(KLtsyErrorString,"ERROR");
+_LIT8(KLtsyCmeErrorString,"+CME ERROR:*");
+_LIT8(KLtsyNoCarrierString,"NO CARRIER");
+_LIT8(KLtsyGeneralIndMatchString, "+WIND:*");
+_LIT8(KAnyATCommand,"AT+*");
+
+_LIT8(KLtsyCtrlZChar,"\032");
+_LIT8(KLtsyCommaChar,",");
+#endif /*LTSYCOMMONDEFINE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/mslogger.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TSYLogger
+
+#include <e32std.h>	// for basic Symbian data types
+
+#ifndef __MSLOGGER_H__
+#define __MSLOGGER_H__
+
+#ifdef _DEBUG
+#define __LOGDEB__
+#else
+#define __LOGREL__
+#endif
+
+#ifdef	__LOGDEB__
+#define __LOGREL__
+#endif
+
+#ifdef __LOGDEB__
+#define LOGTEXT(AAA)				TSYLogger::Write(AAA)
+#else
+#define LOGTEXT(AAA)
+#endif
+
+#ifdef __LOGDEB__
+#define LOGTEXT2(AAA,BBB)			TSYLogger::WriteFormat(AAA,BBB)
+#else
+#define LOGTEXT2(AAA,BBB)
+#endif
+
+#ifdef __LOGDEB__
+#define LOGTEXT3(AAA,BBB,CCC)		TSYLogger::WriteFormat(AAA,BBB,CCC)
+#else
+#define LOGTEXT3(AAA,BBB,CCC)
+#endif
+
+#ifdef	__LOGREL__
+#define LOGTEXTREL(AAA)				TSYLogger::Write(AAA)
+#else
+#define LOGTEXTREL(AAA)				
+#endif
+
+#ifdef	__LOGREL__
+#define LOGTEXTREL2(AAA,BBB)		TSYLogger::WriteFormat(AAA,BBB)
+#else
+#define LOGTEXTREL2(AAA,BBB)		
+#endif
+
+#ifdef __LOGREL__
+#define LOGTEXTREL3(AAA,BBB,CCC)	TSYLogger::WriteFormat(AAA,BBB,CCC)
+#else
+#define LOGTEXTREL3(AAA,BBB,CCC)	
+#endif
+
+// TSYLogger
+// Implements logging.  All static calls.
+
+class TSYLogger
+	{
+public:
+	static void Write(const TDesC8& aText);
+	static void WriteFormat(TRefByValue<const TDesC8> aFmt,...);
+	};
+
+#endif	// __MSLOGGER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/panic.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,112 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file panic.h
+// Panic codes and panic function. This header should be kept private and not exported to
+// /epoc32/include/
+
+#ifndef __PANIC_H__
+#define __PANIC_H__
+
+/**
+ * Please add new panic codes to the end of the list so that panic code values
+ * do not change meaning.
+ * You can name the panic code as you wish.
+ */
+enum TTSYPanic
+	{
+	EGeneral,
+	EUnexpectedState,
+	EATCommand_NotConstructed,
+	EATCommand_IllegalCompletionWaitExpected,
+	EATCommand_IllegalCompletionWriteExpected,
+	EATCommand_IllegalCompletionWriteNotExpected,
+	EATCommand_IllegalCompletionReadExpected,
+	EATCommand_IllegalCompletionReadNotExpected,
+	EATCommand_IllegalWaitCompletion,
+	EATCommand_IllegalResponse,
+	EIllegalTsyReqHandle,
+	EIllegalPanicOccurredValue,
+	EIllegalOwnedState,
+	ENotifications_Remaining,
+	ELastEvents_Remaining,
+	ECalls_Remaining,
+	EFaxPtrNull,
+	EFaxCompletionPtrNull,
+	EATCommand_NotInProgress,
+	ERelinquishOwnershipWithNoCall,
+	EIllegalTsyNameInConnectedModemRecord,
+	EIllegalCallDuration,
+	EIllegalEvent,
+	EPreAllocatedCallDoesNotExist,
+	ENewCallDoesNotExist,
+	ECallNameAlreadyExists,
+	ERingingCallNotFound,
+	ELineAlreadyExists,
+	EAcquirerNotFound,
+	EUnknownPhoneBookStorageTypeIndex,
+	EIllegalPhoneBookState,
+	EFaxServerNotNull,
+	ENotDataCallType,
+	EATSmsUtilsDescriptorOverflow,
+	EATSmsUtilsOddNumberOfSemiOctets,
+	EATSmsCommandsWrongRequest,
+	EATSmsCommandsUnknownRequestStage,
+	EATSmsCommandsUnknownRequest,
+	EATSmsCommandsWrongRequestToCancel,
+	EATSmsMessagingSendNullMsgAttributes,
+	EATSmsMessagingSCATooLarge,
+	EATSmsMessagingUnknownRequestCompleted,
+	EMobileSmsMessagingUnknownIPC,		
+	EMobileSmsMessagingUnknownParamVersion,				
+	EMobileSmsMessagingNotYetImplemented,				
+	EMobileSmsMessagingNullParameter,					
+	EMobileSmsMessagingUnexpectedState,					
+	EMobileSmsMessagingReceiveBufferEmpty,				
+	EMobileSmsMessagingASCIIPduHasOddLength,			
+	EMobileSmsMessagingDigitCountOutOfRange,			
+	EMobileSmsMessagingCanNotReceiveUnstoredMessage,	
+	EMobileSmsMessagingMessageNotReserved,				
+	EMobileSmsMessagingClientAllocatedTooLittle,		
+	EMobileSmsMessagingClientAllocatedTooMuch,			
+	EMobileSmsMessagingSmsCapsNotValid,					
+	EMobileSmsMessagingIllegalIPCCallForRxMode,			
+	EMobileSmsMessagingAlreadyStarted,					
+	EMobileSmsMessagingCanNotReceiveStoredMessage,
+	ECMTHandlerDesPassedWithZeroLength,
+	EATGetSignalNullParameter,
+	EReceiveSmsQueueRequestOutstanding,
+	EMobileSmsMessagingPhoneNotSetToAReceiveMode,
+	EMobileSmsMessagingPhoneNotSetToASupportedReceiveMode,
+	ESmsRxQueuePduReadNullPointers,
+	ESmsRxQueuePduReadNoState,
+	ESmsRxQueuePduReadStopCalled,
+	ESmsRxQueuePduReadNonNullExpectString,
+	ESmsRxQueuePduReadNullExpectString,
+	ESmsRxQueuePduReadNullParameter,
+	ESmsRxQueuePduReadSCARemovalFailure,
+	EATSmsUtilsUnknownStoreName,
+	EATWaitForCMTNoState,
+	EATWaitForCMTSCARemovalFailure,
+	EATWaitForCMTPDUTooLong,
+	ETsyConfigNullDBPointer,
+	ETsyConfigAmbiguousModemTables,
+	ETsyConfigMMTSYNotInModemTables,
+	EPacketContextsRemaining,
+	EPacketContextDoesNotExist,
+	EUnableToConnectToFlogger,
+	};
+
+GLREF_C void Panic(TTSYPanic aPanicNumber);
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/requestbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,82 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CRequestBase
+
+#ifndef ATIPCREQUEST_H_
+#define ATIPCREQUEST_H_
+
+// system include
+#include <e32base.h>
+
+// user include
+#include "atipcrequestcompleteobserver.h"
+
+//Class forward
+class CGlobalPhonemanager;
+
+/**
+ * The request base which acts a single IPC request passed by dispatcher
+ * 
+ */
+class CRequestBase : public CBase
+	{
+public:
+	/**
+	* Destructor
+	*/
+	virtual ~CRequestBase();
+	
+	/**
+	* Defince an interface of an IPC request to start this request asynchronously
+	*/
+	virtual void StartRequest();
+	
+	/**
+	 * Set the IPC request complete observer
+	 */
+	void SetIpcRequestCompleteObserver(MIpcRequestCompleteObserver* aIpcCompleteObserver);
+	
+	/**
+	 * Set IPC Id
+	 */
+	void SetIpcId(TInt aIpcId);
+	
+	/**
+	 * Get IPC Id
+	 */
+	TInt IpcId();
+protected:
+    /**
+    * The constructor
+    */
+	CRequestBase(CGlobalPhonemanager& aPhoneGlobals);
+	
+protected:
+    /**
+    * The global phone manager
+    */	
+	CGlobalPhonemanager& iPhoneGlobals;
+	
+	/**
+	 * The Ipc Request complete observer
+	 */
+	MIpcRequestCompleteObserver* iIpcCompleteObserver;
+	
+	/**
+	 * IPC Id
+	 */
+	TInt iIpcId;
+	};
+
+#endif /*ATIPCREQUEST_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/respondbufparser.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CRespondBufParser which provide an algorithm to analize the passed data from baseband
+//
+
+#ifndef __CRESPONDBUFPARSER_H__
+#define __CRESPONDBUFPARSER_H__
+#include <e32cmn.h> 
+#include <e32base.h>
+
+/**
+* This class is used to analyze the passed data and put the value in the buffer store
+*
+*/
+class CRespondBufParser : public CBase
+	{
+public:
+    /**
+    * Constructor
+    */
+	CRespondBufParser();
+	
+	/**
+	* Destructor
+	*/
+	virtual ~CRespondBufParser();
+	
+	/**
+	* Parse the responsed data
+	*/
+	void ParseRespondedBuffer(RArray<TPtrC8>& aArray, const TDesC8& aBuf);
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/tsyconfg.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,222 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file tsconfig.h
+// This contains CTsyConfig which manage to get the modem settings from CommDB.
+// 
+
+#ifndef __TSYCONFG_H
+#define __TSYCONFG_H
+
+// system include
+#include <e32base.h>
+#include <d32comm.h>
+#include <etelmm.h>
+#include <commsdattypesv1_1.h>
+
+// use name space
+using namespace CommsDat;
+
+enum TConfigType
+	{
+	EConfigTypePreInit,
+	EConfigTypeInit,
+	EConfigTypeConnect,
+	EConfigTypeHangUp,
+	EConfigTypeFull,
+	EConfigTypeQuickInit,
+	EConfigTypeDDBugWorkAroundStart,
+	EConfigTypeDDBugWorkAroundEnd
+	};
+
+/** 
+ * CTsyConfig Class
+ * Creating the class will load the current modem settings.
+ * They may be refreshed by calling ReloadSettings.
+ * The ModemName, PortDriverName, CommPortName and String functions 
+ * will return descriptors to the relevant settings taken from 
+ * the current modem's settings.
+ * The CommConfig function will return a reference to the Configuration 
+ * structure in the current modem's settings. 
+ * All file closing, tidying and memory deallocation should be done 
+ * in the ~CTsyConfig destructor.
+ */
+class CTsyConfig : public CBase
+	{
+public:
+	/**
+	 * Factory function.
+	 * 
+	 * @return A newly created CTsyConfig Object
+	 */
+	static CTsyConfig* NewL();
+	
+	/**
+	 * Virtual destructor
+	 * 
+	 */
+	~CTsyConfig();
+    
+	/**
+	 * Set current table view.
+	 * Try to get current table view by 10 times.
+	 */
+	void SetCurrentTableViewL();
+	
+	/**
+	 * Get the field value by the name from modem Bearer record table in commdb.
+	 * 
+	 * @param aStringTag The field name
+	 * @param aString The field value
+	 */
+	TInt ConfigModemStringL(const TDesC& aStringTag, TDes8& aString);
+	
+	/**
+	 * Get the field value by the name from modem Bearer record table in commdb.
+	 * 
+	 * @param aStringTag The field name
+	 * @param aString The field value
+	 */
+	TInt ConfigModemStringL(const TDesC& aStringTag, TDes16& aString);
+	
+	/**
+	 * Gets the port config settings and masks out appropriate handshaking settings
+	 * according to whether state is about to initialise, just connected or about to hang up
+	 */ 
+	TInt PortConfig(TCommConfig& aConfigPckg, TConfigType aConfigType);
+	
+	/**
+	 * Stores the Speaker Preferences settings internally. These settings are stored on construction
+	 * of the CTsyConfig object.
+	 * @param aSpeakerSetting Speaker Preference setting
+	 */
+	void GetSpeakerSettingPref(RCall::TMonitorSpeakerControl& aSpeakerSetting);
+	
+	/**
+	 * Stores the Speaker Volume Preferences settings internally. These settings are stored on construction
+	 * of the CTsyConfig object.
+	 * @param aSpeakerVolume Speaker Volume setting
+	 */
+	void GetSpeakerVolumePref(RCall::TMonitorSpeakerVolume& aSpeakerVolume);
+	
+	/**
+	 * Stores the Dial Tone Preferences settings internally. These settings are stored on construction
+	 * of the CTsyConfig object.
+	 * @param aWaitForDialTonePref Wait for Dial Tone Preference setting
+	 */
+	void GetWaitForDialTonePref(RCall::TWaitForDialTone& aWaitForDialTonePref);
+	
+	/**
+	 * Opens a handle to CCommsDatabase	and positions the view on the default modem specified 
+	 * in the current Connected Modem record.
+	 * Note that the TSY does not keep the handle to the CCommsDatabase opened all the time, 
+	 * therefore this method is used to open the handle only when needed. The methods using 
+	 * this method are also responsible for calling ResetCurrentTableViews() to close the
+	 * handle to the CCommsDatabase and to clean up the table views.
+	 */
+	void GetCurrentTableViewsL();
+	
+	/**
+	 * Gets some commonly used settings from the Location and Modem Table Views and stores them
+	 * internally as these are not likely to change. 
+	 * If some of these settings are not found in the table view then a predefined default values are
+	 * used.
+	 */
+	void GetLocationModemSettingsL();
+	
+	/**
+	 * Closes the handle to CCommsDatabase and clears the view on the default modem specified 
+	 * in the current Connected Modem record. This method needs to be called after 
+	 * GetCurrentTableViewsL().
+	 */
+	void ResetCurrentTableViews();
+private:
+	/**
+	 * Constructor 
+	 */
+	CTsyConfig();
+	
+	/**
+	 * 2nd constructor
+	 * 
+	 */
+	void ConstructL();
+	
+	/*
+	 * Scan through the table for records containing Phonetsy.tsy
+	 * Stop at the first instance of such a record and return the id
+	 * 
+	 * @param aBearerId The Bearer ID in modem bearer table
+	 */
+ 	void GetModemBearerIdL(TUint32& aBearerId);  	
+ 	/*
+ 	 * Scan through the table for records containing MM.TSY
+ 	 * Stop at the first instance of such a record and return the id
+ 	 *
+ 	 * @param aBearerId The Bearer ID in modem bearer table
+ 	 * @param aLocationId 
+ 	 */
+ 	void GetLocationIdL(const TUint32& aBearerId, TUint32& aLocationId); 
+
+private:
+	/**
+	 * Store the modem configuration for connecting with AT Modem
+	 * 
+	 */
+	TCommConfigV01 iConfig;
+	
+	/**
+	 * The CommDB session
+	 * 
+	 * Own
+	 */
+	CMDBSession* iDbSession;
+	
+	/**
+	 * Store the IAP number for the selected modem
+	 * 
+	 */
+	TUint32 iModemBearer;
+	
+	/**
+	 * Location ID
+	 * 
+	 */
+	TUint32 iLocationId;
+	
+	/**
+	 * An integer value that indicates the time to pause after using the dial-ot code
+	 * 
+	 */
+	TInt iInterval;
+	
+	/**
+	 * Monitor speaker control setting flags
+	 * 
+	 */
+	RCall::TMonitorSpeakerControl iSpeakerSetting;
+	
+	/**
+	 * Monitor speaker volume control setting flags
+	 * 
+	 */
+	RCall::TMonitorSpeakerVolume iSpeakerVolume;
+	
+	/**
+	 * Wait for dial tone flags
+	 * 
+	 */
+	RCall::TWaitForDialTone iWaitForDialTonePref;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/unsolicitedeventmonitor.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,103 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CUnsolicitedEventMonitor which mornitor the arriving unsocilited event and then notify this to all observers.
+// 
+
+#ifndef UNSOLICITEDEVENTMONITOR_H_
+#define UNSOLICITEDEVENTMONITOR_H_
+
+//system include
+
+//user include
+#include "atcommandcontrolbase.h"
+#include "globalphonemanager.h"
+#include "atunsolicitedobserver.h"
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+/**
+ * This is a watcher class which mornitor the unsolicited events sent by baseband.
+ * Notify all the interesting observers when an unsolicited event has been received
+ */
+class CUnsolicitedEventMonitor : public CATCommandControlBase
+	{
+public:
+	/**
+	 * Factory function
+	 */
+	static CUnsolicitedEventMonitor* NewL(CGlobalPhonemanager& aPhoneglobals,
+						                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Factory function
+	 */
+	static CUnsolicitedEventMonitor* NewLC(CGlobalPhonemanager& aPhoneglobals,
+			                               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * Destructor
+	 */
+	virtual ~CUnsolicitedEventMonitor();
+	
+	/**
+	 * Add the observer which is interested in geting the notification of incoming unsolicited event  
+	 */
+	void AddUnsolicitedObserver(const MLtsyUnsolicitedCommandObserver* aObserver);
+	
+	/**
+	 * Remove the unsolicited observer
+	 */
+	void RemoveUnsolicitedObserver(const MLtsyUnsolicitedCommandObserver* aObserver);
+	
+	/**
+	 * Notify all the observers that the unsoclicited event is received
+	 */
+	void NotifyEveryObserver();
+	
+	/**
+	 * Start to mornitor
+	 */
+	void StartUnsolicitedObserver();
+	
+	/**
+	 * Stop to mornitor
+	 */
+	void StopUnsolicitedObserver();
+	
+protected:
+	/**
+	 * The constructor
+	 */
+	CUnsolicitedEventMonitor(CGlobalPhonemanager& aPhoneglobals,
+			                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 2nd constructor
+	 */
+	void ConstructL();
+	
+public:
+	/**
+	 * Inherit from CAtCommandContolBase
+	 */
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	
+private:
+	/**
+	 * Own
+	 * Store a list of observers
+	 */
+	RPointerArray <MLtsyUnsolicitedCommandObserver> iArray;
+	};
+
+#endif /*UNSOLICITEDEVENTMONITOR_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/inc/unsolicitedparams.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,34 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This define the unsolicted event data
+// 
+
+#ifndef UNSOLICITEDPARAMS_H_
+#define UNSOLICITEDPARAMS_H_
+
+#include <e32std.h>
+
+class TUnsolicitedParams
+	{
+public:
+	TUnsolicitedParams();
+	void InitParams();
+public:
+	typedef TPckgBuf<TUnsolicitedParams> TUnsolicitedParamsPckgBuf;
+public:
+	TInt iEvent;
+	TInt iIdx;
+	};
+
+#endif /*UNSOLICITEDPARAMS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/activecommandstore.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,130 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CActiveCommandStore which store one and only one solicited active at command and a number of active 
+// unsolicited at commands
+// 
+
+#include "activecommandstore.h"
+#include "mslogger.h"
+
+//const TInt KLtsyActiveCommandStoreReserve = 5;
+
+CActiveCommandStore* CActiveCommandStore::NewL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::NewL()"));
+	CActiveCommandStore *self = CActiveCommandStore::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CActiveCommandStore* CActiveCommandStore::NewLC()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::NewLC()"));
+	CActiveCommandStore *self = new (ELeave) CActiveCommandStore;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CActiveCommandStore::~CActiveCommandStore()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::~CActiveCommandStore()"));
+	iArray.Close();
+	}
+
+CActiveCommandStore::CActiveCommandStore()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::CActiveCommandStore()"));
+	}
+
+void CActiveCommandStore::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::ConstructL()"));
+	iArray.Reset();
+	iArray.AppendL(NULL);
+	//iArray.ReserveL(KLtsyActiveCommandStoreReserve);
+	LOGTEXT2(_L8("[Ltsy] Active Store Count = %d"), iArray.Count());
+	}
+
+TInt CActiveCommandStore::AddUnsolicitedAtCommand(CAtCommandBase *aAtCommand)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::AddUnsolicitedAtCommand()"));
+	if (aAtCommand == NULL)
+		{
+		return KErrArgument;
+		}
+	
+	TInt nRes(KErrNone);
+	nRes = iArray.Append(aAtCommand);
+	LOGTEXT2(_L8("[Ltsy] Active Store Count = %d"), iArray.Count());
+	return nRes;	
+	}
+
+TInt CActiveCommandStore::AddSolicitedAtCommand(CAtCommandBase *aAtCommand)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::AddSolicitedAtCommand()"));
+	if (aAtCommand == NULL)
+		{
+		return KErrArgument;
+		}
+	
+	iArray[0] = aAtCommand;
+	LOGTEXT2(_L8("[Ltsy] Active Store Count = %d"), iArray.Count());
+	return KErrNone;	
+	}
+
+TInt CActiveCommandStore::RemoveActiveAtCommand(const CAtCommandBase *aAtCommand)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CActiveCommandStore::RemoveActiveAtCommand()"));
+	if (aAtCommand == NULL) 
+		{
+		return KErrArgument;
+		}
+	
+	TInt nFind = iArray.Find(aAtCommand);
+	if (nFind != KErrNotFound)
+		{
+		if (nFind == 0)
+			{
+			iArray[0] = NULL;
+			}
+		else
+			{
+			iArray.Remove(nFind);
+			}
+		return KErrNone;
+		}
+	else
+		{
+		return KErrNotFound;
+		}
+	}
+
+RPointerArray<CAtCommandBase>& CActiveCommandStore::GetActiveCommandArray()
+	{
+	return iArray;
+	}
+
+//End of file
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/asynchelperrequest.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,159 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CAsyncHelperRequest which is a helper request which callback to ctsy asynchronously 
+// 
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <rmmcustomapi.h> 
+#include "asynchelperrequest.h"
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+#include "globalphonemanager.h"
+#include "tsyconfg.h"
+#include "mslogger.h"
+
+// Class CAsyncHelperRequest
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAsyncHelperRequest* CAsyncHelperRequest::NewL(CGlobalPhonemanager& aGloblePhone,
+		                           CCtsyDispatcherCallback& aCallBack,
+		                           TInt aPriority )
+	{
+	CAsyncHelperRequest* newTimer=new(ELeave) CAsyncHelperRequest(aGloblePhone,aCallBack,aPriority);
+	CleanupStack::PushL(newTimer);
+	newTimer->ConstructL();
+	CleanupStack::Pop();
+	return newTimer;
+	}
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::CAsyncHelperRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAsyncHelperRequest ::CAsyncHelperRequest(CGlobalPhonemanager& aGloblePhone,
+		                      CCtsyDispatcherCallback& aCallBack,
+		                      TInt aPriority)
+	: CTimer(aPriority),iCallBack(aCallBack),iGloblePhone(aGloblePhone)
+	{
+	CActiveScheduler::Add(this);
+	iRequestId = 0;
+	iReqArray.Reset();
+	}
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::~CAsyncHelperRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAsyncHelperRequest::~CAsyncHelperRequest()
+	{
+	Cancel();
+	}
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::SetRequestId
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAsyncHelperRequest::SetRequestId(const TInt aIpc)
+	{
+	TInt count = iReqArray.Count();
+	if((count > 0)||IsActive())
+		{
+		iReqArray.Append(aIpc);
+		}
+	else
+		{
+		iRequestId = aIpc;
+		StartTimer();
+		}
+	}
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::RunL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAsyncHelperRequest::RunL()
+	{
+	switch(iRequestId)
+		{
+		case MLtsyDispatchPhoneGetNetworkMode::KLtsyDispatchPhoneGetNetworkModeApiId:
+			iCallBack.CallbackPhoneGetNetworkModeComp(KErrNone,RMobilePhone::ENetworkModeGsm);
+			break;
+		case MLtsyDispatchPhoneGetCurrentSystemNetworkModes::KLtsyDispatchPhoneGetCurrentSystemNetworkModesApiId:
+			iCallBack.CallbackPhoneGetCurrentSystemNetworkModesComp(KErrNone,RMmCustomAPI::KCapsNetworkModeGsm);
+			break;
+		case MLtsyDispatchPhoneGetNitzInfo::KLtsyDispatchPhoneGetNitzInfoApiId:
+			iCallBack.CallbackPhoneGetNitzInfoComp(KErrNone,iGloblePhone.iPhoneStatus.iMobilePhoneNITZ);
+			break;
+		case MLtsyDispatchPhoneSimRefreshRegister::KLtsyDispatchPhoneSimRefreshRegisterApiId:
+			iCallBack.CallbackPhoneSimRefreshRegisterComp(KErrNone);
+			break;
+		case MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams::KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId:
+			iCallBack.CallbackPacketServicesSetDefaultPdpContextParamsComp(KErrNone);
+			break;
+		case MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId:
+			TUint aCaps ;
+			aCaps=RPacketService::KCapsSetDefaultContextSupported;
+			aCaps|=RPacketService::KCapsMSClassSupported;
+			iCallBack.CallbackPacketServicesGetStaticCapabilitiesComp(KErrNone,aCaps);
+			break;
+		case MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId:
+			iCallBack.CallbackPacketServicesGetMaxNoMonitoredServiceListsComp(KErrNone,1);
+			break;
+		case MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId:
+			iCallBack.CallbackPacketServicesGetMaxNoActiveServicesComp(KErrNone,1);
+			break;
+		case MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId:
+			iCallBack.CallbackPacketServicesGetStatusComp(KErrNone,iGloblePhone.iPhoneStatus.iPacketStatus,EFalse);
+			break;
+		case MLtsyDispatchPhoneGetDetectedNetworksCancel::KLtsyDispatchPhoneGetDetectedNetworksCancelApiId:
+			iCallBack.CallbackPhoneGetDetectedNetworksCancelComp(KErrNone);
+			break;
+		case MLtsyDispatchPhoneSelectNetworkCancel::KLtsyDispatchPhoneSelectNetworkCancelApiId:
+			iCallBack.CallbackPhoneSelectNetworkCancelComp(KErrGeneral);
+			break;
+		case MLtsyDispatchSmsSetMoSmsBearer::KLtsyDispatchSmsSetMoSmsBearerApiId:
+			iCallBack.CallbackSmsSetMoSmsBearerComp(KErrNotSupported);
+			break;	
+		case MLtsyDispatchPacketServicesGetPacketAttachMode::KLtsyDispatchPacketServicesGetPacketAttachModeApiId:
+		    iCallBack.CallbackPacketServicesGetPacketAttachModeComp(KErrNone, RPacketService::EAttachWhenNeeded);
+		    break;
+		default:
+			break;
+		}
+	TInt count = iReqArray.Count();
+	if(count > 0)
+		{
+		iRequestId = iReqArray[0];
+		iReqArray.Remove(0);
+		StartTimer();
+		}
+	}
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::StartTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAsyncHelperRequest::StartTimer(const TTimeIntervalMicroSeconds32 aTimeout)
+	{
+	if (IsActive())
+		Cancel();
+	After(aTimeout);
+	}
+// ---------------------------------------------------------------------------
+// CAsyncHelperRequest::StopTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAsyncHelperRequest::StopTimer()
+	{
+	Cancel();
+	}
+
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atcommandbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,333 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atcommandbase.cpp
+// This contains CAtCommandBase which is the base class for AT command
+// 
+
+// user include
+#include "mslogger.h"
+#include "atcommandbase.h"
+#include "commengine.h"
+#include "atmanager.h"
+#include "stringparser.h"
+#include "atcommandexecuteobserver.h"
+#include "activecommandstore.h"
+#include "atswitchonlinemode.h"
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::~CAtCommandBase
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtCommandBase::~CAtCommandBase()
+	{
+	iExpectingArray.Close();
+	
+	delete iParser;
+	iParser = NULL;
+	
+	if(iATSwitchOnLineMode)
+		{
+		delete iATSwitchOnLineMode;
+		iATSwitchOnLineMode = NULL;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::AtType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TLtsyATCommandType CAtCommandBase::AtType()
+	{
+	return iAtType;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::CAtCommandBase
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtCommandBase::CAtCommandBase(CGlobalPhonemanager& aGloblePhone, 
+	                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                               :CRequestBase(aGloblePhone),
+                               iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+					  
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtCommandBase::CAtCommandBase()"));
+	
+	iAtType = ELtsyAt_User_NotUse;
+	
+	iWriteTimeOut = KLtsyDefaultWriteTimeOut;
+	iReadTimeOut = KLtsyDefaultReadTimeOut;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtCommandBase::ConstructL()
+	{
+	iParser = new (ELeave) CRespondBufParser;
+	iAtCommandObserver = NULL;
+	//Add OK and ERROR expecting string
+	iExpectingArray.AppendL(KLtsyOkString());
+	iExpectingArray.AppendL(KLtsyErrorString());
+	iExpectingArray.AppendL(KLtsyCmeErrorString());
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::AddExpectStringL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtCommandBase::AddExpectStringL(const TDesC8& aExpectStr)
+	{
+	iExpectingArray.AppendL(aExpectStr);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::RemoveAllExpectString
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::RemoveAllExpectString()
+	{
+	iExpectingArray.Reset();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::RemoveExpectString
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::RemoveExpectString(const TDesC8& aExpectStr)
+	{
+	TBool found(ETrue);
+	TInt count = iExpectingArray.Count();
+	
+	for (TInt n = 0; found && n < count; n++)
+		{
+		if (iExpectingArray[n].Compare(aExpectStr) == 0)
+			{
+			iExpectingArray.Remove(n);
+			iExpectingArray.Compress();
+			found = EFalse;
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::MatchExpectString
+// other items were commented in a header 
+// ---------------------------------------------------------------------------		
+TBool CAtCommandBase::MatchExpectString(const TDesC8& aReadLine)
+	{
+	TInt count = iExpectingArray.Count();
+	LOGTEXT2(_L8("[Ltsy] count = %d"), count);
+	for (TInt n = 0; n < count; n++)
+		{
+		if (aReadLine.Match(iExpectingArray[n]) == 0)
+			{
+			return ETrue;
+			}
+		}
+	if(aReadLine.Length()< KLtsyGenericBufferSize)
+		{
+		iNoMatchedLastLine.Copy(aReadLine);
+		}
+	return EFalse;
+	}
+// ---------------------------------------------------------------------------
+// CAtCommandBase::SetAtCommandObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::SetAtCommandObserver(MAtCommandExecuteObserver* aAtCommandObserver)
+	{
+	iAtCommandObserver = aAtCommandObserver;
+	}
+// ---------------------------------------------------------------------------
+// CAtCommandBase::RemoveAtCommandObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::RemoveAtCommandObserver()
+	{
+	iAtCommandObserver = NULL;
+	}
+// ---------------------------------------------------------------------------
+// CAtCommandBase::GenericEventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::GenericEventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtCommandBase::GenericEventSignal()"));
+	if(iAtCommandObserver)
+		{
+		iAtCommandObserver->AtCommandExecuteComplete(aEventSource, aStatus);
+		}
+	else
+		{
+		EventSignal(aEventSource, aStatus);
+		}
+	if((aEventSource == EWriteCompletion) && (aStatus == KErrNone))
+	    {
+	    StartTimer(iReadTimeOut);
+		}
+	LOGTEXT(_L8("[Ltsy] End CAtCommandBase::GenericEventSignal()"));
+	}
+// ---------------------------------------------------------------------------
+// CAtCommandBase::Write
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::Write()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtCommandBase::Write()"));
+	if(iPhoneGlobals.iPhoneStatus.iMode==RPhone::EModeOnlineData)
+		{
+		if(!iATSwitchOnLineMode)
+			{
+			TRAPD(ret,iATSwitchOnLineMode = CATSwitchOnLineMode::NewL(iPhoneGlobals,iCtsyDispatcherCallback));
+			if(ret!=KErrNone)
+				{
+				EventSignal(EWriteCompletion,ret);
+				return;
+				}
+			}
+		iATSwitchOnLineMode->StartSwitchOnLineMode(this,iAtCommandObserver);
+		}
+	else
+		{
+		ClearBuffer();
+		iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
+		iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);	
+		StartTimer(iWriteTimeOut);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtCommandBase::SetTimeOut
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::SetTimeOut(TInt aWriteTimeOut, TInt aReadTimeOut)
+	{
+	iWriteTimeOut = aWriteTimeOut;
+	iReadTimeOut = aReadTimeOut;
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::SetTimeOut
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::StartTimer(const TInt aTimeOut)
+	{
+	iPhoneGlobals.iCommEngine->StartTimer(aTimeOut);
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::StopTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::StopTimer()
+	{
+	iPhoneGlobals.iCommEngine->StopTimer();
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::Buffer
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+TPtrC8 CAtCommandBase::Buffer() const
+	{
+	return iPhoneGlobals.iCommEngine->GetStringParse()->Buffer();
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::CurrentLine
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+TPtrC8 CAtCommandBase::CurrentLine() const
+	{
+	return iPhoneGlobals.iCommEngine->GetStringParse()->CurrentLine();
+	}
+//---------------------------------------------------------------------------
+// CAtCommandBase::PrecedingLine
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+TPtrC8 CAtCommandBase::PrecedingLine() const
+	{
+	return iNoMatchedLastLine;
+	}
+//---------------------------------------------------------------------------
+// CAtCommandBase::ClearBuffer
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::ClearBuffer()
+	{
+	iPhoneGlobals.iCommEngine->GetStringParse()->ClearBuffer();
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::ClearCurrentLine
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::ClearCurrentLine()
+	{
+	iPhoneGlobals.iCommEngine->GetStringParse()->ClearCurrentLine();	
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::Complete
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::Complete()
+    {
+    (iPhoneGlobals.iAtManager->GetActiveCommandStore())->RemoveActiveAtCommand(this);	
+	StopTimer();
+	ClearBuffer();
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::CancelCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::CancelCommand()
+	{
+	
+	}
+
+//---------------------------------------------------------------------------
+// CAtCommandBase::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CAtCommandBase::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtCommandBase::ParseResponseL()"));
+	}
+
+void CAtCommandBase::EventSignal(TAtEventSource /*aEventSource*/, TInt /*aStatus*/)
+	{
+	
+	}
+//---------------------------------------------------------------------------
+// CAtCommandBase::AddUnsolicitedAtCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::AddUnsolicitedAtCommand()
+	{
+	iPhoneGlobals.iAtManager->GetActiveCommandStore()->AddUnsolicitedAtCommand(this);
+	}
+//---------------------------------------------------------------------------
+// CAtCommandBase::RemoveAtCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtCommandBase::RemoveAtCommand()
+	{
+	iPhoneGlobals.iAtManager->GetActiveCommandStore()->RemoveActiveAtCommand(this);
+	}
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atcommandcontrolbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,136 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CATCommandControlBase which is composite class of a number classes
+// 
+
+#include "mslogger.h"
+#include "atcommandbase.h"
+#include "atcommandcontrolbase.h"
+
+
+CATCommandControlBase::CATCommandControlBase(CGlobalPhonemanager& aGloblePhone, 
+                                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                             :CRequestBase(aGloblePhone),
+                                             iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+//	LOGTEXT(_L8("[Ltsy] Starting CATCommandControlBase::CATCommandControlBase()"));
+	iIsDel = EAutoDelete;
+	}
+
+CATCommandControlBase::~CATCommandControlBase()
+	{
+//	LOGTEXT(_L8("[Ltsy] Starting CATCommandControlBase::~CATCommandControlBase()"));
+	if (EAutoDelete == iIsDel)
+		{
+		CleanAndDeleteAllAtCommands();
+		}
+	
+	iArray.Close();
+	}
+
+TInt CATCommandControlBase::AddAtCommand(const CAtCommandBase* aAtCommand)
+	{
+//	LOGTEXT(_L8("[Ltsy] Starting CATCommandControlBase::AddAtCommand()"));
+	if (NULL == aAtCommand)
+		{
+		return KErrArgument;
+		}
+	
+	TInt nRes = iArray.Append(aAtCommand);
+	return nRes;
+	}
+
+void CATCommandControlBase::RemoveAtCommand(const CAtCommandBase* aAtCommand)
+	{	
+	if (NULL != aAtCommand)
+		{
+		TInt nFind = iArray.Find(aAtCommand);
+		if (nFind != KErrNotFound)
+			{
+			iArray.Remove(nFind);
+			iArray.Compress();
+			}
+		}
+	}
+
+void CATCommandControlBase::RemoveAtCommandByAtType(TLtsyATCommandType aType)
+	{
+	TBool bFlag(ETrue);
+	
+	for (TInt n = 0; bFlag && n < iArray.Count(); n++)
+		{
+		if (iArray[n]->AtType() == aType)
+			{
+			iArray.Remove(n);
+			iArray.Compress();
+			bFlag = EFalse;
+			}
+		}
+	}
+
+CAtCommandBase& CATCommandControlBase::GetAtCommandByAtTypeL(TLtsyATCommandType aType)
+	{
+	TBool bFlag(ETrue);
+	CAtCommandBase *cAtBase(NULL);
+	
+	for (TInt n = 0; bFlag && n < iArray.Count(); n++)
+		{
+		if (iArray[n]->AtType() == aType)
+			{
+			cAtBase = iArray[n];
+			}
+		}
+	
+	User::LeaveIfNull(cAtBase);
+	
+	return (*cAtBase);
+	}
+
+
+void CATCommandControlBase::SetIsAutoDelete(TAutoDeleteAtCommand aIsDel)
+	{
+	iIsDel = aIsDel;
+	}
+
+CATCommandControlBase::TAutoDeleteAtCommand CATCommandControlBase::GetIsAutoDelete()
+	{
+	return iIsDel;
+	}
+
+void CATCommandControlBase::CleanAllAtCommands()
+	{
+	iArray.Reset();
+	}
+
+void CATCommandControlBase::CleanAndDeleteAllAtCommands()
+	{
+	iArray.ResetAndDestroy();
+	}
+// End of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/athelpercommand.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,123 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CATHelperCommand which is composite class of a number classes
+// 
+
+#include "athelpercommand.h"
+#include "mslogger.h"
+
+// Class CATHelperCommand
+// ---------------------------------------------------------------------------
+// CATHelperCommand::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATHelperCommand* CATHelperCommand::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATHelperCommand* self = new(ELeave) CATHelperCommand(aGloblePhone,
+			                                                aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::CATHelperCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATHelperCommand::CATHelperCommand(CGlobalPhonemanager& aGloblePhone, 
+	                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::~CATHelperCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATHelperCommand::~CATHelperCommand()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::ExecuteCommand()
+	{
+	iTxBuffer.Copy(iATBuffer);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::CancelCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::CancelCommand()
+	{	
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATHelperCommand::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::SetAtCommandString
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::SetAtCommandString(const TDesC8& aATString)
+	{
+	iATBuffer.Copy(aATString);
+	}
+// ---------------------------------------------------------------------------
+// CATHelperCommand::StartATType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATHelperCommand::SetATType(TLtsyATCommandType aATType)
+	{
+	iAtType = aATType;
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atmanager.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,174 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+// use include
+#include "atmanager.h"
+#include "activecommandstore.h"
+#include "mslogger.h"
+
+// ---------------------------------------------------------------------------
+// CAtManager::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+CAtManager* CAtManager::NewL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::NewL()"));
+	CAtManager *self = CAtManager::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+CAtManager* CAtManager::NewLC()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::NewLC()"));
+	CAtManager *self = new (ELeave) CAtManager;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::~CAtManager
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+CAtManager::~CAtManager()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::~CAtManager()"));
+	
+	delete iActiveCommandStore;
+	iActiveCommandStore = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::CAtManager
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+CAtManager::CAtManager()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::CAtManager()"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtManager::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::ConstructL()"));
+	iActiveCommandStore = CActiveCommandStore::NewL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::SetSolicitedAtCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtManager::SetSolicitedAtCommand(CAtCommandBase* aSolicitedCommand)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::SetSolicitedAtCommand()"));
+	iSolicitedCommand = aSolicitedCommand;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::GetActiveCommandStore
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+CActiveCommandStore* CAtManager::GetActiveCommandStore() const
+	{
+	return iActiveCommandStore;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::ReadOrWriteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+void CAtManager::ReadOrWriteComplete(TAtEventSource aEvent, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::AtCommandReadOrWriteComplete()"));
+	LOGTEXT3(_L8("[Ltsy] aEvent = %d, aStatus = %d"), aEvent, aStatus);
+	
+    if (aEvent == EWriteCompletion)
+		{
+		if (iSolicitedCommand != NULL)
+			{
+			if(aStatus == KErrNone)
+				{
+				// add this active AT Command in the first place of the store
+				iActiveCommandStore->AddSolicitedAtCommand(iSolicitedCommand);
+				}
+			else
+				{
+				iSolicitedCommand = NULL;
+				}
+			
+			iSolicitedCommand->GenericEventSignal(aEvent, aStatus);
+			}
+		}
+    else if (aEvent == EReadCompletion)
+		{
+		if (aStatus != KErrNone)
+			{
+			// check if there is active solicited AT command in the AT active command store
+			if((iActiveCommandStore->GetActiveCommandArray())[0] != NULL)
+	          {
+	          iSolicitedCommand->GenericEventSignal(aEvent, aStatus);
+	          }
+			
+			iSolicitedCommand = NULL;
+			}
+		}
+    else if(aEvent == ETimeoutCompletion)
+    	{
+		if(iSolicitedCommand)
+			{
+			iSolicitedCommand->GenericEventSignal(ETimeoutCompletion, aStatus);
+			iSolicitedCommand = NULL;
+			}
+    	}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtManager::NotifyOneLineFoundL
+// other items were commented in a header
+// ---------------------------------------------------------------------------	
+TBool CAtManager::NotifyOneLineFoundL(TInt aStatus, const TDesC8& aLineBuf)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CAtManager::NotifyOneLineFoundL()"));
+		
+	RPointerArray<CAtCommandBase>& atCommands = iActiveCommandStore->GetActiveCommandArray();
+	TInt count = atCommands.Count();
+	LOGTEXT2(_L8("[Ltsy] count = %d"), count);
+	
+	TBool atCommandFound(EFalse);
+	
+	for (TInt n = 0; !atCommandFound && n < count; n++)
+		{
+		CAtCommandBase* atCommand = atCommands[n];
+		if ((atCommand != NULL) && atCommand->MatchExpectString(aLineBuf))
+			{
+			atCommandFound = ETrue;
+			atCommand->ParseResponseL(aLineBuf);
+			atCommand->GenericEventSignal(EReadCompletion, aStatus);
+			}
+		}
+	LOGTEXT(_L8("[Ltsy] End CAtManager::NotifyOneLineFoundL()"));
+	return ETrue;
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atswitchonlinemode.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,227 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CATSwitchOnLineMode which switch to online mode
+// 
+
+#include "atswitchonlinemode.h"
+#include "mslogger.h"
+#include "commengine.h"
+#include "tsyconfg.h"
+
+// Class CATSwitchOnLineMode
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSwitchOnLineMode* CATSwitchOnLineMode::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATSwitchOnLineMode* self = new(ELeave) CATSwitchOnLineMode(aGloblePhone,
+			                                                    aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::CATSwitchOnLineMode
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSwitchOnLineMode::CATSwitchOnLineMode(CGlobalPhonemanager& aGloblePhone, 
+	                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	RemoveAllExpectString();
+	AddExpectStringL(KLtsyNoCarrierString());
+	iWhichTimer = ETimerNone;
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::~CATSwitchOnLineMode
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSwitchOnLineMode::~CATSwitchOnLineMode()
+	{
+	if(iCallbackTimer)
+		{
+		iCallbackTimer->Cancel();
+		delete iCallbackTimer;
+		iCallbackTimer = NULL;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::ExecuteCommand()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if(CurrentLine().Match(KLtsyNoCarrierString) == 0)
+		{
+		iError = KErrNone;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::StartSwitchOnLineModeL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::StartSwitchOnLineMode(CAtCommandBase* aAtCommandBase,
+		                  MAtCommandExecuteObserver* aAtCommandObserver)
+	{
+	iAtCommandBase = aAtCommandBase;
+	iAtCommandObserver = aAtCommandObserver;
+	RemoveAtCommandObserver();
+	iPhoneGlobals.iCommEngine->CommCancel();		// This required to avoid a panic in C32 when we call iIo->ConfigurePort
+	TCommConfig configPckg;
+	TInt ret = KErrNone;
+	ret = iPhoneGlobals.iConfiguration->PortConfig(configPckg,EConfigTypeHangUp);	
+	if (ret==KErrNone)
+		ret = iPhoneGlobals.iCommEngine->ConfigurePort(configPckg);		
+	if (ret!=KErrNone)
+		{
+		iAtCommandBase->EventSignal(EWriteCompletion,ret);
+		}
+	iPhoneGlobals.iCommEngine->DropDtr();
+	iWhichTimer = ETimerDrop;
+	StartTimer(500000L);
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		aStatus = iError;
+		}
+	CAtCommandBase::Complete();
+	if(KErrNone ==aStatus)
+		{
+		//iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineCommand;
+		Disable();
+		StartTimer(1000000L);
+		iWhichTimer = ETimerWait;
+		}
+	else
+		{
+		Disable();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iAtCommandBase->EventSignal(EWriteCompletion,KErrNotReady);
+		}
+	
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::Enable
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::Enable()
+	{
+	AddUnsolicitedAtCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::Disable
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::Disable()
+	{
+	RemoveAtCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATSwitchOnLineMode::StartTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSwitchOnLineMode::StartTimer(const TInt aTimeout)
+	{
+	if (iCallbackTimer->IsActive())
+		iCallbackTimer->Cancel();
+	iCallbackTimer->After(aTimeout);
+	}
+/**
+ * 
+ * 
+ */
+void CATSwitchOnLineMode::TimerRun(TInt aError)
+    {
+	if(aError == KErrNone)
+	    {
+		switch(iWhichTimer)
+			{
+			case ETimerDrop:
+			    LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerDrop time out."));
+				iPhoneGlobals.iCommEngine->RaiseDTR();
+				iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineCommand;
+				iPhoneGlobals.iEventSignalActive = ETrue;
+				iWhichTimer = ETimerRaise;
+				StartTimer(1000000L);
+				break;
+			case ETimerRaise:
+                LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerRaise time out."));
+				iPhoneGlobals.iCommEngine->ResetBuffers();
+				iWhichTimer = ETimerReset;
+				StartTimer(1000000L);
+				break;
+			case ETimerReset:
+                LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerReset time out."));
+				ClearBuffer();
+				iPhoneGlobals.iCommEngine->Read();
+				iWhichTimer = ETimerRead;
+				Enable();
+				StartTimer(1000000L);
+				break;
+			case ETimerRead:
+                LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerRead time out."));
+				StartTimer(1000000L);
+				iWhichTimer = ETimerWait;
+				break;
+			case ETimerWait:
+                LOGTEXT(_L8("[Ltsy] CATSwitchOnLineMode::ETimerWait time out."));
+			    if(iAtCommandObserver)
+			    	{
+			    	SetAtCommandObserver(iAtCommandObserver);
+			    	}
+			    Disable();
+			    iAtCommandBase->StartRequest(); 
+			    iWhichTimer = ETimerNone;
+				break;
+			default:
+				Disable();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iAtCommandBase->EventSignal(EWriteCompletion,KErrNotReady);
+				break;
+			}
+		}
+	else
+		{
+		Disable();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iAtCommandBase->EventSignal(EWriteCompletion,KErrNotReady);
+		}
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/atunsolicited.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,157 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CATUnsolicited
+// 
+
+//system include
+
+//user include
+#include "atunsolicited.h"
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATUnsolicited* CATUnsolicited::NewL(CGlobalPhonemanager& aGloblePhone,
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATUnsolicited* self = CATUnsolicited::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATUnsolicited* CATUnsolicited::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATUnsolicited* self = new (ELeave) CATUnsolicited(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::~CATUnsolicited
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATUnsolicited::~CATUnsolicited()
+	{
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATUnsolicited::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	RemoveAllExpectString();
+	AddExpectStringL(KLtsyGeneralIndMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::CATUnsolicited
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATUnsolicited::CATUnsolicited(CGlobalPhonemanager& aGloblePhone,
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+							   :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	iAtType = ELtsyAT_General_WIND;
+	iResult = KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::GetParserResult
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATUnsolicited::GetParserResult() const
+	{
+	return iResult;
+	}
+
+// ---------------------------------------------------------------------------
+//  CATUnsolicited::GetUnsolicitedParams
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+const TDesC8& CATUnsolicited::GetUnsolicitedParams() const
+	{
+	return iPckgBuf;
+	}
+
+// ---------------------------------------------------------------------------
+// CATUnsolicited::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATUnsolicited::ParseResponseL(const TDesC8& aResponseBuf)
+	{
+	iResult = KErrNone;
+	
+	RArray<TPtrC8> rArray;
+	CleanupClosePushL(rArray);
+	
+	iParser->ParseRespondedBuffer(rArray, aResponseBuf);
+	
+	TUnsolicitedParams& tParams(iPckgBuf());
+	tParams.InitParams();
+	
+	TInt nCount = rArray.Count();
+	if (nCount <= 1)
+		{
+		iResult = KErrGeneral;
+		CleanupStack::PopAndDestroy(1);
+		return;
+		}
+	
+	if (nCount >= 2)
+		{
+		TInt tVal(0);
+		TLex8 tLex(rArray[1]);
+		TInt nRes = tLex.Val(tVal);
+		if (nRes == KErrNone)
+			{
+			tParams.iEvent = tVal;
+			}
+		else
+			{
+			iResult = nRes;
+			CleanupStack::PopAndDestroy(1);
+			return;
+			}
+		}
+	
+	if (nCount == 3 && tParams.iEvent != 10 && tParams.iEvent != 11)
+		{
+		TInt tVal(0);
+		TLex8 tLex(rArray[2]);
+		TInt nRes = tLex.Val(tVal);
+		if (nRes == KErrNone)
+			{
+			tParams.iIdx = tVal;
+			}
+		else
+			{
+			iResult = nRes;
+			CleanupStack::PopAndDestroy(1);	
+			return;
+			}
+		}
+	CleanupStack::PopAndDestroy(1);	
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/globalphonemanager.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,247 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file globlephonemanager.cpp
+// This contains CGlobalPhonemanager which manage the global phone status and call info manager.
+// 
+
+// user include
+#include "globalphonemanager.h"
+#include "atmanager.h"
+#include "commengine.h"
+#include "tsyconfg.h"
+#include "mslogger.h"
+#include "requestbase.h"
+#include "ltsycallinformationmanager.h"
+#include "athangupcommandrecords.h"
+
+#if defined (__WINS__)
+_LIT(KPDDName,"ECDRV");
+_LIT(KLDDName,"ECOMM");
+#else
+_LIT(KPDDName,"EUART1");
+#if defined (PDD2_NAME)
+_LIT(KPDD2Name,"EUART2");
+#endif
+_LIT(KLDDName,"ECOMM");
+#endif
+
+//define constant value
+const TInt KLtsyDefaultSecondsToWaitForCarrier=40;
+const TInt KLtsyCommReadPriority = 10;
+const TInt KLtsyCommWritePriority = 20;
+const TInt KLtsyChatBufferSize = 400;
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGlobalPhonemanager* CGlobalPhonemanager::NewL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CGlobalPhonemanager::NewL()"));
+	
+	CGlobalPhonemanager *self = CGlobalPhonemanager::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGlobalPhonemanager* CGlobalPhonemanager::NewLC()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CGlobalPhonemanager::NewLC()"));
+	
+	CGlobalPhonemanager *self = new (ELeave) CGlobalPhonemanager;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::~CGlobalPhonemanager
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGlobalPhonemanager::~CGlobalPhonemanager()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CGlobalPhonemanager::~CGlobalPhonemanager()"));
+
+	delete iConfiguration;
+	delete iAtManager;
+	delete iCommEngine;
+	delete iActiveIpcRequest;
+	iContextList.ResetAndDestroy();
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::CGlobalPhonemanager
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGlobalPhonemanager::CGlobalPhonemanager()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CGlobalPhonemanager::CGlobalPhonemanager()"));
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGlobalPhonemanager::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CGlobalPhonemanager::ConstructL()"));
+	
+	InitL();
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::InitL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGlobalPhonemanager::InitL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CGlobalPhonemanager::InitL()"));
+	
+	// initialize the status of phone
+	iPhoneStatus.iLocalNetworkSel.iMethod = RMobilePhone::ENetworkSelectionUnknown;
+	iPhoneStatus.iModemDetected = RPhone::EDetectedUnknown;
+	iPhoneStatus.iDataAndFaxFlags = RPhone::KCapsUnknown;
+	iPhoneStatus.iWaitForCarrierTime = KLtsyDefaultSecondsToWaitForCarrier;
+	iPhoneStatus.iRegistrationStatus = RMobilePhone::ERegistrationUnknown;
+	iPhoneStatus.iPortAccess = EPortAccessAllowed;
+	iPhoneStatus.iMode = RPhone::EModeUnknown;
+	iPhoneStatus.iDataAndFaxFlags = RPhone::KCapsUnknown;
+	iPhoneStatus.iInitStatus = EPhoneNotInitialised;
+	iPhoneStatus.iGprsMaxNumContexts = 1;
+	iPhoneStatus.iMode=RPhone::EModeOnlineCommand;
+	
+	//Create the call information manager
+	iCallInfoManager = CLtsyCallInformationManager::NewL();
+	
+	// load physical device driver
+	TInt r = User::LoadPhysicalDevice(KPDDName);
+	if (r != KErrNone && r != KErrAlreadyExists)
+		{
+		User::Leave(r);
+		}
+	
+	// load logical device driver
+	r = User::LoadLogicalDevice(KLDDName);
+	if (r != KErrNone && r != KErrAlreadyExists)
+		{
+		User::Leave(r);
+		}
+		
+	// create the AT Manager
+	iAtManager = CAtManager::NewL();
+	
+	// create the Comm Engine which handle 
+	iCommEngine = CCommEngine::NewL(KLtsyChatBufferSize,KLtsyCommReadPriority,KLtsyCommWritePriority,iPhoneStatus.iPortAccess);
+	
+	// Set Comm Engine observer		
+	iCommEngine->SetCommEngineObserver(iAtManager);
+	iCommEngine->SetCommReadLineNotify(iAtManager);
+	
+	// create a CommDB configration helper class
+	iConfiguration = CTsyConfig::NewL();
+	
+	TFileName csy;
+	TName port;	
+	LOGTEXT(_L8("[Ltsy] Getting CSY from CommDB"));
+	User::LeaveIfError(iConfiguration->ConfigModemStringL(TPtrC(KCDTypeNameCsyName),csy));
+
+	LOGTEXT(_L8("[Ltsy] Getting PORT from CommDB"));
+	User::LeaveIfError(iConfiguration->ConfigModemStringL(TPtrC(KCDTypeNamePortName),port));
+	
+	// Open serial port by shared mode
+	User::LeaveIfError(iCommEngine->CommOpen(csy, port, ECommShared));
+	
+	// Configure Port
+	TCommConfig tConfigPckg;
+	
+	// Get the port configuration
+	LOGTEXT(_L8("[Ltsy] Setting Port Config"));	
+	User::LeaveIfError(iConfiguration->PortConfig(tConfigPckg,EConfigTypeInit));
+
+	LOGTEXT(_L8("[Ltsy] CommEngine Configure Port"));
+	User::LeaveIfError(iCommEngine->ConfigurePort(tConfigPckg));
+	
+	// issue reading from baseband
+	iCommEngine->Read();
+	
+	// Reset the context list
+	iContextList.Reset();
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::CheckGlobalPhoneStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CGlobalPhonemanager::CheckGlobalPhoneStatus()
+	{
+	if(EPhoneInitialised == iPhoneStatus.iInitStatus)
+		{
+		if (iEventSignalActive)
+			{
+			return  KErrInUse;
+			}
+		else
+			{
+			DeleteLastActiveRequest();
+			return KErrNone;
+			}
+		}
+	else
+		{
+		return iPhoneStatus.iInitStatus;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::SetActiveRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGlobalPhonemanager::SetActiveRequest(CRequestBase* aCurActiveRequest)
+	{
+	iActiveIpcRequest = aCurActiveRequest;
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::DeleteLastActiveRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGlobalPhonemanager::DeleteLastActiveRequest()
+	{
+	delete iActiveIpcRequest;
+	iActiveIpcRequest = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::GetCallInfoManager
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CLtsyCallInformationManager& CGlobalPhonemanager::GetCallInfoManager()
+	{
+	return (*iCallInfoManager);
+	}
+
+// ---------------------------------------------------------------------------
+// CGlobalPhonemanager::CurrentActiveRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CRequestBase* CGlobalPhonemanager::CurrentActiveRequest()
+    {
+    return iActiveIpcRequest;
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/ltsycallinformation.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,182 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains TLtsyCallInformation which store baseband related call information
+// 
+
+//system include
+
+//user include
+#include "ltsycallinformation.h"
+#include "ltsycommondefine.h"
+#include "mslogger.h"
+
+TLtsyCallInformation::TLtsyCallInformation()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::TLtsyCallInformation()"));
+	
+	iCallId = KLtsyErrorCallId;
+	iUsedInfo = ENotUsed;
+	iDirection = EUnknownDirection;
+	iCallState = EUnknownState;
+	iCallMode = EUnKnowCall;
+	iIsConference = EUnknownIsConference;
+	iTelNum = KNullDesC8;
+	iAddressType = -1;
+	iMobileName = KNullDesC8;
+	iIsEmergencyCall = EFalse;
+	}
+
+void TLtsyCallInformation::SetCallId(TInt aCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetCallId()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d"), aCallId);
+	
+	ASSERT((aCallId >= KLtsyMinCallId) && (aCallId <= KLtsyMaxCallId));
+	
+	iCallId = aCallId;
+	}
+
+TInt TLtsyCallInformation::GetCallId() const
+	{
+	return iCallId;
+	}
+
+void TLtsyCallInformation::SetCallIdIsUsedInfo(TCallIdUsedInfo aUsedInfo)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetCallId()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aUsedInfo = %d"), aUsedInfo);
+	
+	iUsedInfo = aUsedInfo;
+	}
+
+TLtsyCallInformation::TCallIdUsedInfo TLtsyCallInformation::GetCallIdIsUsedInfo() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetCallIdIsUsedInfo()"));
+	
+	return iUsedInfo;
+	}
+
+void TLtsyCallInformation::SetCallDirection(TDirectionCall aDirection)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetCallDirection()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aDirection = %d"), aDirection);
+	
+	iDirection = aDirection;
+	}
+
+TLtsyCallInformation::TDirectionCall TLtsyCallInformation::GetCallDirection() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetCallDirection()"));
+	
+	return iDirection;
+	}
+
+void TLtsyCallInformation::SetCallState(TCallState aCallState)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetCallState()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aCallState = %d"), aCallState);
+	
+	iCallState = aCallState; 
+	}
+
+TLtsyCallInformation::TCallState TLtsyCallInformation::GetCallState() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetCallState()"));
+	
+	return iCallState;
+	}
+
+void TLtsyCallInformation::SetCallMode(TCallMode aCallMode)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetCallMode()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aCallMode = %d"), aCallMode);
+	
+	iCallMode = aCallMode;
+	}
+
+TLtsyCallInformation::TCallMode TLtsyCallInformation::GetCallMode() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetCallMode()"));
+	
+	return iCallMode;
+	}
+
+void TLtsyCallInformation::SetConferenceCall(TConferenceCall aConferenceCall)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetConferenceCall()"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aConferenceCall = %d"), aConferenceCall);
+	
+	iIsConference = aConferenceCall;
+	}
+
+TLtsyCallInformation::TConferenceCall TLtsyCallInformation::GetConferenceCall() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetConferenceCall()"));
+	
+	return iIsConference;
+	}
+
+void TLtsyCallInformation::SetMobileTelNum(const TDesC8& aTelNum)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetMobileTelNum()"));
+	
+	iTelNum.Copy(aTelNum.Left(iTelNum.MaxLength()));
+	}
+
+const TDesC8& TLtsyCallInformation::GetMobileTelNum() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetMobileTelNum()"));
+	
+	return iTelNum;
+	}
+
+void TLtsyCallInformation::SetAddressType(TInt aAddressType)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetAddressType()"));
+	
+	iAddressType = aAddressType;
+	}
+
+TInt TLtsyCallInformation::GetAddressType() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetAddressType()"));
+	
+	return iAddressType;
+	}
+
+void TLtsyCallInformation::SetMobileName(const TDesC8& aMobileName)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::SetMobileName()"));
+	
+	iMobileName.Copy(aMobileName.Left(iMobileName.MaxLength()));
+	}
+
+const TDesC8& TLtsyCallInformation::GetMobileName() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting TLtsyCallInformation::GetMobileName()"));
+	
+	return iMobileName;
+	}
+
+void TLtsyCallInformation::SetEmergencyCallFlag(TBool aIsEmergency)
+	{
+	iIsEmergencyCall = aIsEmergency;
+	}
+
+TBool TLtsyCallInformation::GetEmergencyCallFlag() const
+	{
+	return iIsEmergencyCall;
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/ltsycallinformationmanager.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,211 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CLtsyCallInformationManager which manager call information
+// 
+
+//system include
+
+//user include
+#include "ltsycallinformationmanager.h"
+#include "ltsycommondefine.h"
+#include "athangupcommandrecords.h"
+#include "mslogger.h"
+
+CLtsyCallInformationManager* CLtsyCallInformationManager::NewL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::NewL()"));
+	
+	CLtsyCallInformationManager* self = CLtsyCallInformationManager::NewLC();
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CLtsyCallInformationManager* CLtsyCallInformationManager::NewLC()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::NewLC()"));
+	
+	CLtsyCallInformationManager* self = new (ELeave) CLtsyCallInformationManager;
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CLtsyCallInformationManager::~CLtsyCallInformationManager()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::~CLtsyCallInformationManager()"));
+	
+	delete iHangupCommandRecords;
+	}
+
+CLtsyCallInformationManager::CLtsyCallInformationManager()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::CLtsyCallInformationManager()"));
+	//Init call id
+	iCallInfo[1].SetCallId(1);
+	iCallInfo[2].SetCallId(2);
+	iCallInfo[3].SetCallId(3);
+	iCallInfo[4].SetCallId(4);
+	iCallInfo[5].SetCallId(5);
+	iCallInfo[6].SetCallId(6);
+	iCallInfo[7].SetCallId(7);
+	
+	//Init incoming call flag
+	iIncomingCallFlag = EFalse;
+	}
+
+void CLtsyCallInformationManager::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::ConstructL()"));
+	
+	//Create hang up call command records
+	iHangupCommandRecords = CATHangupCommandRecords::NewL();	
+	}
+
+void CLtsyCallInformationManager::ResetCallInformationByCallId(TInt aCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::ResetCallInformationByCallId()"));
+	
+	ASSERT((aCallId >= KLtsyMinCallId) && (aCallId <= KLtsyMaxCallId));
+	
+	iCallInfo[aCallId].SetCallIdIsUsedInfo(TLtsyCallInformation::ENotUsed);
+	iCallInfo[aCallId].SetCallDirection(TLtsyCallInformation::EUnknownDirection);
+	iCallInfo[aCallId].SetCallState(TLtsyCallInformation::EUnknownState);
+	iCallInfo[aCallId].SetCallMode(TLtsyCallInformation::EUnKnowCall);
+	iCallInfo[aCallId].SetConferenceCall(TLtsyCallInformation::EUnknownIsConference);
+	iCallInfo[aCallId].SetMobileTelNum(KNullDesC8);
+	iCallInfo[aCallId].SetAddressType(-1);
+	iCallInfo[aCallId].SetMobileName(KNullDesC8);
+	iCallInfo[aCallId].SetEmergencyCallFlag(EFalse);
+	}
+
+void CLtsyCallInformationManager::ResetAllCalInformation()
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::ResetAllCalInformation()"));
+	
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		ResetCallInformationByCallId(n);
+		}	
+	}
+
+TLtsyCallInformation& CLtsyCallInformationManager::GetCallInformationByCallId(TInt aCallId)
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::GetCallInformationByCallId()"));
+	
+	ASSERT((aCallId >= KLtsyMinCallId) && (aCallId <= KLtsyMaxCallId));
+	
+	return iCallInfo[aCallId];
+	}
+
+TInt CLtsyCallInformationManager::FindUnUesedCallId() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::FindUnUesedCallId()"));
+	
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (iCallInfo[n].GetCallIdIsUsedInfo() == TLtsyCallInformation::ENotUsed)
+			{
+			return n;
+			}
+		}
+	return KErrNotFound;
+	}
+
+TBool CLtsyCallInformationManager::IsHaveUsedCallId() const
+	{
+	LOGTEXT(_L8("[Ltsy CallControl] Starting CLtsyCallInformationManager::FindIsHaveUsedCallId()"));
+	
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (iCallInfo[n].GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed)
+			{
+			return ETrue;
+			}
+		}
+	return EFalse;	
+	}
+
+void CLtsyCallInformationManager::SetIncomingCallFlag(TBool aIncomingCallFlag)
+	{
+	iIncomingCallFlag = aIncomingCallFlag;
+	}
+
+TBool CLtsyCallInformationManager::GetIncomingCallFlag() const
+	{
+	return iIncomingCallFlag;
+	}
+
+TInt CLtsyCallInformationManager::FindIncomingCallId() const
+	{
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (iCallInfo[n].GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed &&
+			iCallInfo[n].GetCallState() == TLtsyCallInformation::EInComingCall)
+			{
+			return n;
+			}
+		}
+	return KErrNotFound;
+	}
+
+TInt CLtsyCallInformationManager::FindEmergencyCallId() const
+	{
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if ((iCallInfo[n].GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed) &&
+			iCallInfo[n].GetEmergencyCallFlag())
+			{
+			return n;
+			}
+		}
+	return KErrNotFound;	
+	}
+
+TInt CLtsyCallInformationManager::FindDialingOrAlertingCallId() const
+	{
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (iCallInfo[n].GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed &&
+			((iCallInfo[n].GetCallState() == TLtsyCallInformation::EDialingCall) ||
+			 (iCallInfo[n].GetCallState() == TLtsyCallInformation::EAlertingCall)))
+			{
+			return n;
+			}
+		}
+	return KErrNotFound;	
+	}
+
+TInt CLtsyCallInformationManager::FindWaitingCallId() const
+	{
+	for (TInt n = KLtsyMinCallId; n <= KLtsyMaxCallId; n++)
+		{
+		if (iCallInfo[n].GetCallIdIsUsedInfo() == TLtsyCallInformation::EUsed &&
+			iCallInfo[n].GetCallState() == TLtsyCallInformation::EWaitingCall)
+			{
+			return n;
+			}
+		}
+	return KErrNotFound;	
+	}
+
+// ---------------------------------------------------------------------------
+// CLtsyCallInformationManager::GetHangupCommandRecords
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATHangupCommandRecords& CLtsyCallInformationManager::GetHangupCommandRecords()
+	{
+	return (*iHangupCommandRecords);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/mslogger.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,80 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// TSYLogger
+
+// system inlcude
+#include <flogger.h>		// for FLogger
+
+// user include
+#include "mslogger.h"		// Header file for this source file
+
+// const defination
+_LIT(KLogFolder,"etel");
+_LIT(KLogFileName,"PhoneTsy.txt");
+_LIT8(KTimeFormat,"%02d:%02d:%02d.%03d ");
+
+const TInt KTSYLogBufferSize=400;
+
+void TSYLogger::Write(const TDesC8& aText)
+	{
+	//
+	// Assemble time stamp and callers text into one string
+	TBuf8<KTSYLogBufferSize> buf;
+	TTime now;
+	now.UniversalTime();
+	TDateTime t(now.DateTime());
+	buf.Format(KTimeFormat,t.Hour(),t.Minute(),t.Second(),t.MicroSecond());
+	buf.Append(aText);
+
+	//
+	// Open log, write text to log and close log
+	RFileLogger log;
+	if(KErrNone==log.Connect())
+		{
+		log.CreateLog(KLogFolder,KLogFileName,EFileLoggingModeAppend);
+		log.SetDateAndTime(EFalse,EFalse);
+		log.Write(buf);
+		log.CloseLog();
+		log.Close();
+		}
+	}
+
+
+void TSYLogger::WriteFormat(TRefByValue<const TDesC8> aFmt,...)
+	{
+	VA_LIST list;
+	VA_START(list,aFmt);
+
+	//
+	// Assemble time stamp and callers text into one string
+	TBuf8<KTSYLogBufferSize> buf;
+	TTime now;
+	now.UniversalTime();
+	TDateTime t(now.DateTime());
+	buf.Format(KTimeFormat,t.Hour(),t.Minute(),t.Second(),t.MicroSecond());
+	buf.AppendFormatList(aFmt,list);
+
+	//
+	// Open log, write text to log and close log
+	RFileLogger log;
+	if(KErrNone==log.Connect())
+		{
+		log.CreateLog(KLogFolder,KLogFileName,EFileLoggingModeAppend);
+		log.SetDateAndTime(EFalse,EFalse);
+		log.Write(buf);
+		log.CloseLog();
+		log.Close();
+		}
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/panic.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,39 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file panic.cpp
+// Panic codes and panic function. This header should be kept private and not exported to
+// /epoc32/include/
+
+#include <e32std.h>		/// for GLDEF_C and User::
+#include "panic.h"		/// Header for this file
+
+//
+// Panic Function
+//
+GLDEF_C void Panic(TTSYPanic aPanicNumber)
+	{
+	_LIT(panicText,"PhoneTsy");
+	_LIT(extension,".TSY");
+
+	TName myTsyName(panicText);
+
+	#ifdef TSY_INSTANCE
+		TBuf16<16> tgt;
+		tgt.Num(TSY_INSTANCE);
+		myTsyName.Append(tgt);
+	#endif
+	myTsyName.Append(extension);
+
+	User::Panic(myTsyName,aPanicNumber);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/requestbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,74 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CRequestBase which act as an interface with dispater to handle a single passed IPC request
+
+#include "requestbase.h"
+#include "mslogger.h"
+#include "globalphonemanager.h"
+
+// ---------------------------------------------------------------------------
+// CRequestBase::~CRequestBase
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CRequestBase::~CRequestBase()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CRequestBase::~CRequestBase()"));
+	iIpcCompleteObserver = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CRequestBase::CRequestBase
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CRequestBase::CRequestBase(CGlobalPhonemanager& aPhoneGlobals)
+							:iPhoneGlobals(aPhoneGlobals)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CRequestBase::CRequestBase()"));
+	}
+
+// ---------------------------------------------------------------------------
+// CRequestBase::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CRequestBase::StartRequest()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CRequestBase::SetIpcRequestCompleteObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CRequestBase::SetIpcRequestCompleteObserver(MIpcRequestCompleteObserver* aIpcCompleteObserver)
+    {
+    iIpcCompleteObserver = aIpcCompleteObserver;
+    }
+
+// ---------------------------------------------------------------------------
+// CRequestBase::SetIpcId
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CRequestBase::SetIpcId(TInt aIpcId)
+    {
+    iIpcId = aIpcId;
+    }
+
+// ---------------------------------------------------------------------------
+// CRequestBase::SetIpcId
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CRequestBase::IpcId()
+    {
+    return iIpcId;
+    }
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/respondbufparser.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,141 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CRespondBufParser which provide an algorithm to analize the passed data from baseband
+//
+
+#include "respondbufparser.h"
+#include "mslogger.h"
+
+_LIT8(KSpace, " ");
+
+CRespondBufParser::CRespondBufParser() 
+	{	
+	}
+
+CRespondBufParser::~CRespondBufParser()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CRespondBufParser::ParseRespondedBuffer
+// other items were commented in a header
+// ---------------------------------------------------------------------------		
+void CRespondBufParser::ParseRespondedBuffer(RArray<TPtrC8>& aArray, const TDesC8& aBuf)
+	{
+	aArray.Reset();
+	
+	TBool firstDoubleQuoteFound = EFalse;
+	TBool endByComma = EFalse;
+	TBool Marked = EFalse;
+	TLex8 tmpLex(aBuf);
+	
+	//Move cursor past any spaces or open brackets
+	while(!tmpLex.Eos())
+		{
+		TChar peek=tmpLex.Peek();
+		switch(peek)
+			{
+			//Skip the '(','[', and '{' in end
+			case '(':
+			case '[':
+			case '{':
+				break;
+			//Skip the '(','[', and '{' in end
+			case ')':
+			case ']':
+			case '}':
+				break;
+			case '"': 
+				//Skip first '"'
+				if(!firstDoubleQuoteFound)
+					{
+					firstDoubleQuoteFound = ETrue;
+					}
+				else
+					{
+					//Extracts the marked token(No include the '"' in end)
+					firstDoubleQuoteFound = EFalse;
+					TPtrC8 temp = tmpLex.MarkedToken();
+					aArray.Append(temp);
+					LOGTEXT2(_L8("normal parameter >%S<"),&(temp));
+					Marked = EFalse;
+					endByComma = EFalse;
+					}
+				break;
+			case ',':
+				if(!firstDoubleQuoteFound)
+					{
+					if(Marked)
+						{
+						//Extracts the marked token
+						TPtrC8 temp = tmpLex.MarkedToken();
+						aArray.Append(temp);
+						LOGTEXT2(_L8("normal parameter >%S<"),&(temp));
+						Marked = EFalse;
+						}
+					else if(endByComma)
+						{
+						//Add a space between two camma
+						aArray.Append(KSpace());
+						LOGTEXT2(_L8("normal parameter >%S<"),&(KSpace()));
+						}
+					endByComma = ETrue;
+					}
+				break;
+			case ';':
+			case ' ': 
+			case '\r': 
+			case '\n': 
+				if(!firstDoubleQuoteFound&&Marked)
+					{
+					//Extracts the marked token
+					TPtrC8 temp = tmpLex.MarkedToken();
+					aArray.Append(temp);
+					LOGTEXT2(_L8("normal parameter >%S<"),&(temp));
+					Marked = EFalse;	
+					endByComma = EFalse;
+					}
+				break;
+			case ':': 
+				if(!firstDoubleQuoteFound&&Marked)
+					{
+					//Extracts the marked token(Include ':')
+					tmpLex.Inc();
+					TPtrC8 temp = tmpLex.MarkedToken();
+					aArray.Append(temp);
+					LOGTEXT2(_L8("normal parameter >%S<"),&(temp));
+					//back one char because add it in end 
+					tmpLex.Inc(-1);
+					Marked = EFalse;
+					endByComma = EFalse;
+					}
+				break;
+			default:
+				if(!Marked)
+					{
+					tmpLex.Mark();
+					Marked = ETrue;	
+					}
+				break;
+			}
+		tmpLex.Inc();
+		}
+	if(Marked)
+		{
+		//Extracts the marked token which haven't 
+		TPtrC8 temp = tmpLex.MarkedToken();
+		aArray.Append(temp);
+		LOGTEXT2(_L8("normal parameter >%S<"),&(temp));
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/tsyconfg.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,487 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file tsyconfig.cpp
+// This contains CTsyConfig which manage access to CommDB configuration.
+// 
+
+// system include
+#include <commsdattypesv1_1.h>
+#include <commsdat_partner.h>
+using namespace CommsDat;
+
+// user include
+#include "tsyconfg.h"
+#include "mslogger.h"
+
+#ifdef __LOGDEB__
+_LIT8(KLogEntry,"CTsyConfig::%S\t%S");
+#define LOCAL_LOGTEXT(function,text) {_LIT8(F,function);_LIT8(T,text);LOGTEXT3(KLogEntry,&F,&T);}
+#else
+#define LOCAL_LOGTEXT(function,text)
+#endif
+
+// const defination
+const TInt KDefaultLocationInternalPref = 0;
+const RCall::TMonitorSpeakerControl KDefaultModemSpeakerSetting = RCall::EMonitorSpeakerControlOnUntilCarrier;
+const RCall::TMonitorSpeakerVolume KDefaultMonitorSpeakerVolume = RCall::EMonitorSpeakerVolumeOff;
+const RCall::TWaitForDialTone KDefaultWaitForDialTone = RCall::EDialToneNoWait;
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CTsyConfig* CTsyConfig::NewL() 
+	{
+	CTsyConfig* self = new(ELeave) CTsyConfig();
+	CleanupStack::PushL(self);
+	self->ConstructL(); 
+	CleanupStack::Pop();
+	return (self);
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::CTsyConfig
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CTsyConfig::CTsyConfig()
+	{	
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::ConstructL()
+	{
+	iLocationId = 0;
+	iModemBearer = 0;
+	SetCurrentTableViewL();
+	GetLocationModemSettingsL();
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::SetCurrentTableViewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::SetCurrentTableViewL()
+	{
+	TInt r = KErrNone;
+
+	for (TInt i = 0; i < 10; i++)
+		{
+		TRAP(r, GetCurrentTableViewsL()); // Place a cursor on the default modem record in comms database server
+		if (r == KErrAccessDenied)        // if we get access denied from DBMS, which is a timing thing, just re-post
+			{
+			User::After(1000000);
+			continue;
+			}
+		else
+			{
+			break;
+			}
+		}
+	
+	if(r)
+		{
+		LOGTEXT(_L8("CommDB values seem to be corrupt"));
+		User::Leave(KErrEtelModemSettingsCorrupt);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetLocationModemSettingsL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetLocationModemSettingsL()
+	{
+	ASSERT(iModemBearer != 0);
+	
+	iSpeakerSetting = KDefaultModemSpeakerSetting;
+	iSpeakerVolume = KDefaultMonitorSpeakerVolume;
+	
+	if(iLocationId == 0)
+		{
+		iInterval = KDefaultLocationInternalPref;
+		iWaitForDialTonePref = KDefaultWaitForDialTone;
+		}
+	else
+		{
+		TBool value(EFalse);
+		CMDBField<TUint32>* intervalField = new(ELeave) CMDBField<TUint32>(KCDTIdPauseAfterDialOut);
+		CleanupStack::PushL(intervalField);
+		intervalField->SetRecordId(iLocationId);
+		intervalField->LoadL(*iDbSession);
+		iInterval = *intervalField;
+		CleanupStack::PopAndDestroy(intervalField);
+		
+		CMDBField<TUint32>* valueField = new(ELeave) CMDBField<TUint32>(KCDTIdWaitForDialTone);		
+		CleanupStack::PushL(valueField);
+		valueField->SetRecordId(iLocationId);
+		valueField->LoadL(*iDbSession);
+		value = *valueField;
+		CleanupStack::PopAndDestroy(valueField);
+		
+		if (value)
+			{
+			iWaitForDialTonePref = RCall::EDialToneWait;
+			}
+		else
+			{
+			iWaitForDialTonePref = RCall::EDialToneNoWait;
+			}
+		}
+
+    // read speaker preferences
+	CMDBField<TUint32>* speakerPrefField = new(ELeave) CMDBField<TUint32>(KCDTIdSpeakerPref);
+	CleanupStack::PushL(speakerPrefField);
+	speakerPrefField->SetRecordId(iModemBearer);
+	speakerPrefField->LoadL(*iDbSession);
+	iSpeakerSetting = static_cast<RCall::TMonitorSpeakerControl>(static_cast<TUint32>(*speakerPrefField));
+	CleanupStack::PopAndDestroy(speakerPrefField);
+	
+	// read speaker volume preferences
+	CMDBField<TUint32>* speakerVolPrefField = new(ELeave) CMDBField<TUint32>(KCDTIdSpeakerVolPref);
+	CleanupStack::PushL(speakerVolPrefField);
+	speakerVolPrefField->SetRecordId(iModemBearer);
+	speakerVolPrefField->LoadL(*iDbSession);
+	iSpeakerVolume = static_cast<RCall::TMonitorSpeakerVolume>(static_cast<TUint32>(*speakerVolPrefField));			
+	CleanupStack::PopAndDestroy(speakerVolPrefField);
+
+    // read modem rate
+	CMDBField<TUint32>* rateField = new(ELeave) CMDBField<TUint32>(KCDTIdRate);
+	CleanupStack::PushL(rateField);
+	rateField->SetRecordId(iModemBearer);
+	rateField->LoadL(*iDbSession);
+	TUint32 rate;
+	rate = *rateField;
+	CleanupStack::PopAndDestroy(rateField);
+	
+	// read data bits for modem
+	CMDBField<TUint32>* dataBitsField = new(ELeave) CMDBField<TUint32>(KCDTIdDataBits);
+	CleanupStack::PushL(dataBitsField);
+	dataBitsField->SetRecordId(iModemBearer);
+	dataBitsField->LoadL(*iDbSession);
+	TUint32 dataBits;
+	dataBits = *dataBitsField;
+	CleanupStack::PopAndDestroy(dataBitsField);
+    
+	// read stop bits for modem
+	CMDBField<TUint32>* stopBitsField = new(ELeave) CMDBField<TUint32>(KCDTIdStopBits);
+	CleanupStack::PushL(stopBitsField);
+	stopBitsField->SetRecordId(iModemBearer);
+	stopBitsField->LoadL(*iDbSession);
+	TUint32 stopBits;
+	stopBits = *stopBitsField;
+	CleanupStack::PopAndDestroy(stopBitsField);
+	
+	// read parity for modem
+	CMDBField<TUint32>* parityField = new(ELeave) CMDBField<TUint32>(KCDTIdParity);
+	CleanupStack::PushL(parityField);
+	parityField->SetRecordId(iModemBearer);
+	parityField->LoadL(*iDbSession);
+	TUint32 parity;
+	parity = *parityField;
+	CleanupStack::PopAndDestroy(parityField);
+	
+	// read handshake for modem
+	CMDBField<TUint32>* handshakeField = new(ELeave) CMDBField<TUint32>(KCDTIdHandshaking);
+	CleanupStack::PushL(handshakeField);
+	handshakeField->SetRecordId(iModemBearer);
+	handshakeField->LoadL(*iDbSession);
+	TUint32 handshake;
+	handshake = *handshakeField;
+	CleanupStack::PopAndDestroy(handshakeField);
+    
+	// set the modem configuration
+	iConfig.iRate = (TBps)rate;
+	iConfig.iDataBits = (TDataBits)dataBits;
+	iConfig.iStopBits = (TStopBits)stopBits;
+	iConfig.iParity = (TParity)parity;
+	iConfig.iHandshake = handshake;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::~CTsyConfig
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CTsyConfig::~CTsyConfig()
+	{
+	delete iDbSession;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::ConfigModemStringL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CTsyConfig::ConfigModemStringL(const TDesC& aStringTag, TDes8& aString)
+	{
+	ASSERT(iDbSession != 0);
+	CCDModemBearerRecord* modemRecord = static_cast<CCDModemBearerRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
+	CleanupStack::PushL(modemRecord);
+	modemRecord->SetRecordId(iModemBearer);
+	modemRecord->LoadL(*iDbSession);
+	
+	TInt ret;
+	TInt type(0);
+	CMDBElement* baseField = NULL;
+	TRAP(ret, baseField = modemRecord->GetFieldByNameL(aStringTag, type));
+	if (ret == KErrNone)
+		{
+		// check for type
+		switch(type)
+			{
+			case EMedText:
+			case EText:
+				{
+				CMDBField<TDesC>* field16 = static_cast<CMDBField<TDesC>*>(baseField);
+				const TDesC& refField = *field16;
+				aString.Copy(refField);
+				ret = KErrNone;
+				}
+				break;
+			case EDesC8:
+				{
+				CMDBField<TDesC8>* field = static_cast<CMDBField<TDesC8>*>(baseField);
+				aString = *field;
+				ret = KErrNone;
+				}
+				break;
+			default:
+				ret = KErrNotFound;
+			}
+    	}
+	CleanupStack::PopAndDestroy(modemRecord);
+
+	return ret;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::ConfigModemStringL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CTsyConfig::ConfigModemStringL(const TDesC& aStringTag, TDes16& aString)
+	{
+	ASSERT(iDbSession != 0);
+	// get the table record
+	CCDModemBearerRecord* modemRecord = static_cast<CCDModemBearerRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
+	CleanupStack::PushL(modemRecord);
+	modemRecord->SetRecordId(iModemBearer);
+	modemRecord->LoadL(*iDbSession);
+	
+	TInt ret;
+	TInt type(0);
+	CMDBElement* baseField = NULL;
+	TRAP(ret, baseField = modemRecord->GetFieldByNameL(aStringTag, type));
+	if (ret == KErrNone)
+		{
+		// check for type
+		switch(type)
+			{
+			case EMedText:
+			case EText:
+				{
+				CMDBField<TDesC>* field = static_cast<CMDBField<TDesC>*>(baseField);
+				aString = *field;
+				ret = KErrNone;
+				}
+				break;
+			case EDesC8:
+				{
+				// des16 needs to be cast to des8
+				CMDBField<TDesC8>* field8 = static_cast<CMDBField<TDesC8>*>(baseField);
+				const TDesC8& refField = *field8;
+				aString.Copy(refField);
+				ret = KErrNone;
+				}
+				break;
+			default:
+				ret = KErrNotFound;
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(modemRecord);
+
+	return ret;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetSpeakerSettingPref
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetSpeakerSettingPref(RCall::TMonitorSpeakerControl& aSpeakerSetting)
+	{
+	aSpeakerSetting = iSpeakerSetting;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetSpeakerVolumePref
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetSpeakerVolumePref(RCall::TMonitorSpeakerVolume& aSpeakerVolume)
+	{
+	aSpeakerVolume = iSpeakerVolume;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetWaitForDialTonePref
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetWaitForDialTonePref(RCall::TWaitForDialTone& aWaitForDialTonePref)
+	{
+	aWaitForDialTonePref = iWaitForDialTonePref;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::PortConfig
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CTsyConfig::PortConfig(TCommConfig& aConfigPckg, TConfigType aConfigType)
+	{
+	TCommConfig configDummyPckg;
+	TCommConfigV01& config = configDummyPckg();
+	config = iConfig;
+	
+	if (aConfigType==EConfigTypeHangUp ||
+		aConfigType==EConfigTypeQuickInit)
+		{
+		config.iHandshake = 0;//&= (~(KConfigFailDCD | KConfigObeyDCD | KConfigFailDSR));
+		}
+	else
+		{
+		switch (aConfigType)
+			{
+		case EConfigTypePreInit:
+			config.iHandshake &= (~(KConfigObeyCTS | KConfigFailCTS | KConfigObeyDCD | KConfigFailDCD | KConfigFailDSR));
+			break;
+		case EConfigTypeInit:
+			config.iHandshake &= (~(KConfigObeyCTS | KConfigFailCTS | KConfigObeyDCD | KConfigFailDCD));
+			break;
+		case EConfigTypeConnect:
+			config.iHandshake &= (~(KConfigFailCTS | KConfigFailDCD));	// fail DCD masked out, as should get NO CARRIER anyway
+			break;
+		case EConfigTypeFull:
+			break;
+		case EConfigTypeDDBugWorkAroundStart:
+			if (config.iRate!=EBps300)	// ensure that something other than handshaking has changed
+				config.iRate=EBps300;	// to work around the bug in the ARM device driver
+			else
+				config.iRate=EBps2400;
+			config.iHandshake=0;
+			break;
+		case EConfigTypeDDBugWorkAroundEnd:
+			config.iHandshake=0;
+			break;
+		default:
+			break;
+			}
+		}
+	
+	aConfigPckg=configDummyPckg;
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetCurrentTableViewsL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetCurrentTableViewsL() 
+	{
+	ResetCurrentTableViews();
+	
+#ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
+	iDbSession = CMDBSession::NewL(KCDVersion1_2);
+#else
+	iDbSession = CMDBSession::NewL(KCDVersion1_1);
+#endif
+
+	iModemBearer = 0;
+	iLocationId = 0;
+	// Search the bearer tables for records using the Phonetsy.TSY
+	GetModemBearerIdL(iModemBearer);
+
+	// Get the associated locationId
+	GetLocationIdL(iModemBearer,iLocationId);
+	
+	//Check if the selected bearer is an MMTSY bearer with a valid location
+	if(!iModemBearer || !iLocationId) 
+		{
+		//
+		// Selected bearer does not mention the MMTSY
+		LOCAL_LOGTEXT("GetCurrentSettingsL","PhoneTSY not mentioned in the selected bearer");
+		User::Leave(KErrNotFound);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::ResetCurrentTableViews
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::ResetCurrentTableViews()
+	{
+	delete iDbSession;
+	iDbSession = NULL;		
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetLocationIdL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetLocationIdL(const TUint32& aBearerId, TUint32& aLocationId) 
+ 	{
+    CCDIAPRecord *iapRecord = static_cast<CCDIAPRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord));
+  	CleanupStack::PushL(iapRecord);
+  	
+  	iapRecord->iBearer = aBearerId;
+  	TBool err = iapRecord->FindL(*iDbSession);
+  	if (err)
+  		{
+  		aLocationId = iapRecord->iLocation;
+  		}
+  	else
+  		{
+  		aLocationId = static_cast<TUint32>(KErrNotFound);
+  		}
+  	
+    CleanupStack::PopAndDestroy(iapRecord);
+    
+	}
+
+// ---------------------------------------------------------------------------
+// CTsyConfig::GetModemBearerIdL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CTsyConfig::GetModemBearerIdL(TUint32& aBearerId)
+	{
+    CCDModemBearerRecord *modemRecord = static_cast<CCDModemBearerRecord*>(CCDRecordBase::RecordFactoryL(KCDTIdModemBearerRecord));
+    CleanupStack::PushL(modemRecord);
+    
+    _LIT(KTsyName,"phonetsy"); // Note this is case sensitive and must match the name in commdb
+    modemRecord->iTsyName.SetMaxLengthL(KMaxTextLength);
+    modemRecord->iTsyName = KTsyName;
+    
+    TBool searchResult = modemRecord->FindL(*iDbSession);
+    
+    if (searchResult)
+	    {
+		aBearerId = modemRecord->RecordId();	
+	    }
+	else
+		{
+		aBearerId = static_cast<TUint32>(KErrNotFound);
+		}
+    
+    CleanupStack::PopAndDestroy(modemRecord);
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/unsolicitedeventmonitor.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,237 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This contains CUnsolicitedEventMonitor which mornitor the arriving unsocilited event and then notify this to all observers.
+// 
+
+//user include
+#include "unsolicitedeventmonitor.h"
+#include "atunsolicited.h"
+#include "mslogger.h"
+#include "atmanager.h"
+#include "activecommandstore.h"
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CUnsolicitedEventMonitor* CUnsolicitedEventMonitor::NewL(CGlobalPhonemanager& aPhoneglobals,
+										    CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::NewL()"));
+	CUnsolicitedEventMonitor* self = CUnsolicitedEventMonitor::NewLC(aPhoneglobals, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CUnsolicitedEventMonitor* CUnsolicitedEventMonitor::NewLC(CGlobalPhonemanager& aPhoneglobals,
+											CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::NewLC()"));
+	CUnsolicitedEventMonitor* self = new (ELeave) CUnsolicitedEventMonitor(aPhoneglobals, 
+																 aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::~CUnsolicitedEventMonitor
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CUnsolicitedEventMonitor::~CUnsolicitedEventMonitor()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::~CUnsolicitedEventMonitor()"));
+	iArray.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::CUnsolicitedEventMonitor
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CUnsolicitedEventMonitor::CUnsolicitedEventMonitor(CGlobalPhonemanager& aPhoneglobals,
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+						             :CATCommandControlBase(aPhoneglobals, aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::CUnsolicitedEventMonitor()"));
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::ConstructL()"));
+	
+	CATUnsolicited* command = CATUnsolicited::NewL(iPhoneGlobals, iCtsyDispatcherCallback);
+	command->SetAtCommandObserver(this);
+	AddAtCommand(command);
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::AddUnsolicitedObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::AddUnsolicitedObserver(const MLtsyUnsolicitedCommandObserver* aObserver)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::AddUnsolicitedObserver()"));
+	
+	if (aObserver != NULL)
+		{
+		TInt nRes = iArray.Append(aObserver);
+		if (nRes == KErrNone)
+			{
+			LOGTEXT(_L8("[Ltsy] Append unsolicited Observer Success"));
+			}
+		else
+			{
+			LOGTEXT2(_L8("[Ltsy] Append unsolicited Observer fail Because result code = %d"), nRes);
+			}
+		}
+	else
+		{
+		LOGTEXT(_L8("[Ltsy] Unsolicited observer is NULL"));
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::RemoveUnsolicitedObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::RemoveUnsolicitedObserver(const MLtsyUnsolicitedCommandObserver* aObserver)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::RemoveUnsolicitedObserver()"));
+	if (aObserver != NULL)
+		{
+		TInt nFound = iArray.Find(aObserver);
+		if (KErrNotFound != nFound)
+			{
+			LOGTEXT(_L8("[Ltsy] Array have removed observer"));
+			iArray.Remove(nFound);
+			}
+		else
+			{
+			LOGTEXT(_L8("[Ltsy] Array not found observer"));
+			}
+		}
+	else
+		{
+		LOGTEXT(_L8("[Ltsy] Wind Observer is NULL"));
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::NotifyEveryObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::NotifyEveryObserver()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::NotifyEveryObserver()"));
+	
+	CAtCommandBase *cAtBase(NULL);
+	TRAPD(err, cAtBase = &GetAtCommandByAtTypeL(ELtsyAT_General_WIND));
+	if (err == KErrNoMemory)
+		{
+		return;
+		}
+	
+	CATUnsolicited*  unsolicited = dynamic_cast<CATUnsolicited*>(cAtBase);
+	if (unsolicited == NULL)
+		{
+		LOGTEXT(_L8("[Ltsy] Dynamic cast class CAtCommandBase to class CATUnsolicited failing"));
+		return;
+		}
+	
+	if (unsolicited->GetParserResult() != KErrNone)
+		{
+		LOGTEXT(_L8("[Ltsy] parse unsolicited command error"));
+		return;
+		}
+	
+	TUnsolicitedParams::TUnsolicitedParamsPckgBuf* pckg = (TUnsolicitedParams::TUnsolicitedParamsPckgBuf*)(&(unsolicited->GetUnsolicitedParams()));
+	TInt nEvent = (*pckg)().iEvent;
+	
+	TInt count = iArray.Count();
+	for (TInt n = 0; n < count;  n++)
+		{
+		MLtsyUnsolicitedCommandObserver* observer = iArray[n];
+		observer->UnsolicitedCommandArriving(nEvent, (*pckg));
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::StartUnsolicitedObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::StartUnsolicitedObserver()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::NotifyEveryObserver()"));
+	
+	CAtCommandBase *cAtBase(NULL);
+	TRAPD(err, cAtBase = &GetAtCommandByAtTypeL(ELtsyAT_General_WIND));
+	if (err == KErrNoMemory)
+		{
+		return;
+		}
+	
+	iPhoneGlobals.iAtManager->GetActiveCommandStore()->AddUnsolicitedAtCommand(cAtBase);
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::StopUnsolicitedObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::StopUnsolicitedObserver()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::StopUnsolicitedObserver()"));
+	
+	CAtCommandBase *cAtBase(NULL);
+	TRAPD(err, cAtBase = &GetAtCommandByAtTypeL(ELtsyAT_General_WIND));
+	if (err == KErrNoMemory)
+		{
+		return;
+		}
+	
+	iPhoneGlobals.iAtManager->GetActiveCommandStore()->RemoveActiveAtCommand(cAtBase);
+	}
+
+// ---------------------------------------------------------------------------
+// CUnsolicitedEventMonitor::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CUnsolicitedEventMonitor::AtCommandExecuteComplete(TAtEventSource /*aEventSource*/, TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CUnsolicitedEventMonitor::AtCommandExecuteComplete()"));
+	if (aStatus == KErrNone)
+		{
+		NotifyEveryObserver();
+		}
+	
+	CAtCommandBase *cAtBase(NULL);
+	TRAPD(err, cAtBase = &GetAtCommandByAtTypeL(ELtsyAT_General_WIND));
+	if (err == KErrNoMemory)
+		{
+		return;
+		}
+	
+	cAtBase->ClearCurrentLine();
+	
+	LOGTEXT(_L8("[Ltsy] End CUnsolicitedEventMonitor::AtCommandExecuteComplete()"));
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/generic/src/unsolicitedparams.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,32 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This define the unsolicted event data
+// 
+
+//user include
+#include "unsolicitedparams.h"
+
+TUnsolicitedParams::TUnsolicitedParams()
+	{
+	iEvent = -1;
+	iIdx = 0;
+	}
+
+void TUnsolicitedParams::InitParams()
+	{
+	iEvent = -1;
+	iIdx = 0;	
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atdetectnetwork.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,102 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atdetectnetwork.h
+// This contains CATDetectNetwork which is describes the GSM Network & Operator information.
+// 
+#ifndef __ATDETECTNETWORK_H__
+#define __ATDETECTNETWORK_H__
+
+#include <mmlist.h>
+//User include
+#include "atcommandbase.h"
+
+
+/**
+ * CATDetectNetwork inherits from the CAtCommandBase class. 
+ * brief Determines the Operators present in the GSM Network.
+ * This class transmits the AT+COPS=? Command in order to determine all the Operators 
+ * present in the GSM Network.
+ *
+ */
+class CATDetectNetwork : public CAtCommandBase
+{
+public:
+	static CATDetectNetwork* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATDetectNetwork();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Cancel the AT Command execution
+	 */
+	virtual void CancelCommand();
+    /**
+     * Start the request 
+     */
+	virtual void StartRequest();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATDetectNetwork(CGlobalPhonemanager& aGloblePhone, 
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+public:
+	/**
+	 * Detect Network Command is running? or not
+	 */
+	TBool iCommandRunning;
+	/**
+	 * Detect Network Cancel Command is running? or not
+	 */
+	TBool iCommandCancel;
+private:
+	/*
+	 * Returned all the Operators which present in the GSM Network.
+	 */
+	CMobilePhoneNetworkListV2* iList;
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetbatteryinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,107 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetbatteryinfo.h
+// This contains CATGetBattery which is defines the AT command for Getting Battery status
+// 
+
+#ifndef __CBATTERY_H__
+#define __CBATTERY_H__
+
+//system include
+#include <etelmm.h>
+#include <cmmutility.h>
+//user include
+#include "atcommandbase.h"
+
+
+/**
+ * class CATGetBattery 
+ *
+ * CATGetBattery inherits from the CAtCommandBase class. 
+ * This class transmits the AT+COPS=? Command in order to get 
+ * Battery status in this phone
+ */
+class CATGetBattery : public CAtCommandBase
+{
+public:
+	static CATGetBattery* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetBattery();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get the battery infomation returned by executing AT Command
+	 */
+	RMobilePhone::TMobilePhoneBatteryInfoV1 GetBatteryinfo();
+	/**
+	 * Get RF state information
+	 */
+	TRfStateInfo GetRfStateInfo();
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt GetErrorValue();
+    /**
+     * Start the request 
+     */
+	virtual void StartRequest();
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetBattery(CGlobalPhonemanager& aGloblePhone, 
+		          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return battery infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneBatteryInfoV1 iBatteryInfo; 
+	/*
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+	/**
+	 * The RF state information
+	 */
+	TRfStateInfo iRfStateInfo;
+	
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetcellinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,89 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetcellinfo.h
+//  
+
+#ifndef __ATGETCELLINFO_H__
+#define __ATGETCELLINFO_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+// forward class
+
+/**
+ * class CATGetCellInfo 
+ * brief Determines the Cell infomation present in the GSM Network.
+ *
+ * CATGetCellInfo inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CCED=0,7\r Command in order to get 
+ * Cell infomation
+ */
+class CATGetCellInfo : public CAtCommandBase
+{
+public:
+	static CATGetCellInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetCellInfo();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetCellInfo(CGlobalPhonemanager& aGloblePhone, 
+		           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return Cell infomation  of AT command executed 
+	 */
+	RMmCustomAPI::TMmCellInfo::TGSMCellInfo iCellInfo; 
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;	
+};
+#endif //__ATGETCELLINFO_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetfdnstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,90 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetfdnstatus.h
+// 
+
+#ifndef __ATGETFDNSTATUS_H__
+#define __ATGETFDNSTATUS_H__
+
+//system include
+#include <etelmm.h>
+#include <cmmutility.h>
+//user include
+#include "atcommandbase.h"
+
+
+/**
+ * class CATGetFdnStatus 
+ *
+ * CATGetFdnStatus inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CPBS? Command in order to get 
+ * FDN status
+ */
+class CATGetFdnStatus : public CAtCommandBase
+{
+public:
+	static CATGetFdnStatus* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetFdnStatus();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get 
+	 */
+	TBool GetFdnStatus();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt GetErrorValue();
+
+	virtual void StartRequest();
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetFdnStatus(CGlobalPhonemanager& aGloblePhone, 
+		          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * iFdnStatus is ETrue if FDN was activing
+	 */
+	TBool iFdnStatus; 
+	/*
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+	
+	
+};
+#endif //__ATGETFDNSTATUS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetfdnsupport.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,87 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetfdnsupport.h
+// 
+
+#ifndef __ATGETFDNSUPPORT_H__
+#define __ATGETFDNSUPPORT_H__
+
+//user include
+#include "atcommandbase.h"
+
+
+/**
+ * class CATGetFdnSupport 
+ *
+ * CATGetFdnSupport inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CPBS=? Command in order to get 
+ * FDN support
+ */
+class CATGetFdnSupport : public CAtCommandBase
+{
+public:
+	static CATGetFdnSupport* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetFdnSupport();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get 
+	 */
+	TBool GetFdnSupport();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt GetErrorValue();
+
+	virtual void StartRequest();
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetFdnSupport(CGlobalPhonemanager& aGloblePhone, 
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * iFdnSupport is ETrue if FDN was supported
+	 */
+	TBool iFdnSupport; 
+	/*
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+	
+};
+#endif //__ATGETFDNSUPPORT_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetimei.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,98 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetimei.h
+// This contains CATGetImei which is defines the AT command for Getting Serial Numuber
+// 
+
+
+#ifndef ATGETIMEI_H__
+#define ATGETIMEI_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+/**
+ * \class CATGetImei 
+ * \brief get the phone Serial Numuber in the GSM Network.
+ *
+ * CATGetImei inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CGSN Command in order to get Serial Numuber 
+ * in the phone.
+ */
+class CATGetImei : public CAtCommandBase
+{
+public:
+	static CATGetImei* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetImei();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get the return value executed AT Command
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 GetPhoneImei();
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetImei(CGlobalPhonemanager& aGloblePhone, 
+		       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return infomation is  multi-word?
+	 */
+	TBool iMoreInfoFlag;
+	/**
+	 * The return phone infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 iPhoneId;
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+};
+
+#endif // ATGETIMEI_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetmanufacturer.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,93 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetmanufacturer.h
+// This contains CATGetManufacturer which is defines the AT command for Getting manufacturer
+// 
+
+#ifndef ATGETMANUFACTURER_H__
+#define ATGETMANUFACTURER_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+/**
+ * \class CATGetManufacturer 
+ * \brief get the phone manufacturer in the GSM Network.
+ *
+ * CATGetManufacturer inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CGMI Command in order to get manufacturer 
+ * in the phone.
+ */
+class CATGetManufacturer : public CAtCommandBase
+{
+public:
+	static CATGetManufacturer* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                            CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetManufacturer();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get the return value executed AT Command
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 GetPhoneManufacturer();
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetManufacturer(CGlobalPhonemanager& aGloblePhone, 
+		               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return infomation is  multi-word?
+	 */
+	TBool iMoreInfoFlag;
+	/**
+	 * The return phone infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 iPhoneId;
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+};
+#endif // ATGETMANUFACTURER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetmodel.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,95 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetmodel.h
+// This contains CATGetModel which is defines the AT command for Getting Model
+// 
+
+#ifndef ATGETMODEL_H__
+#define ATGETMODEL_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+/**
+ * \class CATGetModel 
+ * \brief get the phone Model in the GSM Network.
+ *
+ * CATGetModel inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CGMM Command in order to get Serial Numuber 
+ * in the phone
+ */
+class CATGetModel : public CAtCommandBase
+{
+public:
+	static CATGetModel* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetModel();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get the return value executed AT Command
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 GetPhoneModel();
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetModel(CGlobalPhonemanager& aGloblePhone, 
+		        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return infomation is  multi-word?
+	 */
+	TBool iMoreInfoFlag;
+	/**
+	 * The return phone infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 iPhoneId;
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+};
+
+#endif // ATGETMODEL_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetmodemstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,105 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetmodemstatus.h
+// This contains CATGetModemStatus which is defines the AT command for Getting modem staus
+// 
+
+/**
+ * @file
+ *
+ * AT command definition
+ * This file defines the AT command for Getting Modem status
+ * This queries the ME (Mobile Equipment) Modem,
+ * using a standard (ETSI GSM 07.07 April 1997) AT command : AT
+ * 
+ */
+
+#ifndef __CMODEMSTATUS_H__
+#define __CMODEMSTATUS_H__
+
+//user include
+#include "atcommandbase.h"
+
+
+/**
+ * \class CATGetModemStatus 
+ * \brief get Modem status.
+ *
+ * CATGetModemStatus inherits from the CAtCommandBase class. 
+ * This class transmits the AT Command in order to get Modem status 
+ * in the phone, using a standard AT command : AT+CGSN
+ */
+class CATGetModemStatus : public CAtCommandBase
+{
+public:
+	static CATGetModemStatus* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetModemStatus();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+	/**
+	 * Start this request
+	 */
+	void Complete(TInt aError);
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetModemStatus(CGlobalPhonemanager& aGloblePhone, 
+		              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetnetworkinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,117 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetnetworkinfo.h
+ /**
+ * @file
+ * Network Header file.
+ * AT command definition
+ * This file defines the AT command for Getting GSM Networ info
+ * Describes the GSM Network & Operator information.
+ * Using a standard (ETSI GSM 07.07 April 1997) AT command : AT
+ * 
+ */
+#ifndef __CNETWORK_H__
+#define __CNETWORK_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+
+/**
+ * Determines GSM Network and Operator Information.
+ *
+ * CATNetworkInfo inherits from the CAtCommandBase class. 
+ * This class transmits the Set Network Operator Command (AT+COPS=x,x) in numeric, short 
+ * alphanumeric and long alphanumeric formats. It also determines the current operator 
+ * using the operator query command (AT+COPS?).
+ */
+class CATNetworkInfo : public CAtCommandBase
+{
+public:
+	static CATNetworkInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATNetworkInfo();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get the return value executed AT Command
+	 */
+	RMobilePhone::TMobilePhoneNetworkInfoV5 GetNetWorkInfo();
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	
+	void SetToGetHomeNwk();
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+	enum TPortAccess
+		{
+		EPortAccessAllowed,
+		EPortAccessDenied
+		};
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATNetworkInfo(CGlobalPhonemanager& aGloblePhone, 
+		           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/**
+	 * The return phone infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneNetworkInfoV5 iNetworkInfo; 
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+	
+	TInt iNameFormat;
+	
+	TBool iGetHomeNwk;
+	
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetnetworkregistrationstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,93 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetnetworkregistrationstatus.h
+// This contains CATNetworkRegistration which is defines the AT command for Getting
+// network registration status
+// 
+
+#ifndef __CNETWORKREGISTRATION_H__
+#define __CNETWORKREGISTRATION_H__
+
+//user include
+#include "atcommandbase.h"
+
+// forward class
+class CATNetworkRegStatusChange;
+/**
+ * class CATNetworkRegistration 
+ *
+ * CATNetworkRegistration inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CREG=? Command in order to get 
+ * network registration status
+ */
+class CATNetworkRegistration : public CAtCommandBase
+{
+public:
+	static CATNetworkRegistration* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATNetworkRegistration();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	
+	virtual void StartRequest();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATNetworkRegistration(CGlobalPhonemanager& aGloblePhone, 
+		                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:	
+	/*
+	 * The return network registration status infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneRegistrationStatus iRegistrationStatus;
+	/*
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetphonecellinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,97 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetphonecellinfo.h
+// This contains CATGetPhoneCellInfo which is defines the AT command for Getting Battery status
+// 
+
+#ifndef __ATGETPHONECELLINFO_H__
+#define __ATGETPHONECELLINFO_H__
+
+//system include
+#include <etelmm.h>
+
+//user include
+#include "atcommandbase.h"
+
+// forward class
+
+/**
+ * class CATGetPhoneCellInfo 
+ * brief Determines the Operators present in the GSM Network.
+ *
+ * CATGetPhoneCellInfo inherits from the CAtCommandBase class. 
+ * This class transmits the AT+COPS=? Command in order to get 
+ * Battery status in this phone
+ */
+class CATGetPhoneCellInfo : public CAtCommandBase
+{
+public:
+	static CATGetPhoneCellInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetPhoneCellInfo();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetPhoneCellInfo(CGlobalPhonemanager& aGloblePhone, 
+		                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+	/*
+	 * The return battery infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneCellInfoV9 iCellInfo;
+	
+	/**
+	 * Store the error code
+	 */
+	TInt iError;
+};
+#endif //__ATGETPHONECELLINFO_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetrevision.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,99 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetrevision.h
+// This contains CATGprsAttach which is defines the AT command for retrieving the
+// protocol stack revision being used.
+
+
+#ifndef ATGETREVISION_H__
+#define ATGETREVISION_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+/**
+ * \class CATGetRevision 
+ * \brief retrieving the protocol stack revision being used.
+ *
+ * CATGetRevision inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CGMR Command in order to the protocol 
+ * stack revision being used 
+ * 
+ */
+class CATGetRevision : public CAtCommandBase
+{
+public:
+	static CATGetRevision* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetRevision();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Get the return value executed AT Command
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 GetPhoneRevision();
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetRevision(CGlobalPhonemanager& aGloblePhone, 
+		           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * The return infomation is  multi-word?
+	 */
+	TBool iMoreInfoFlag;
+	/**
+	 * The return phone infomation  of AT command executed 
+	 */
+	RMobilePhone::TMobilePhoneIdentityV1 iPhoneId;
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt iError;
+};
+
+#endif // ATGETREVISION_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetsignalstrength.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,105 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetsignalstrength.h
+// 
+
+/**
+ * @file
+ *
+ * AT command definition
+ * This file defines the AT command for Getting Signal level
+ * This queries the ME (Mobile Equipment) Signal level,
+ * using a standard (ETSI GSM 07.07 April 1997) AT command : AT+CSQ?
+ * 
+ */
+
+#ifndef __CSIGNAL_H__
+#define __CSIGNAL_H__
+
+//system include
+#include <etelmm.h>
+//user include
+#include "atcommandbase.h"
+
+// forward class
+class MCallBackPhoneHander;
+/**
+ * \class CATGetSignal 
+ * \brief get Modem status.
+ *
+ * CATGetSignal inherits from the CAtCommandBase class. 
+ * This class transmits the AT Command in order to get  Getting Signal level
+ * in the phone, using a standard AT command : AT+CSQ?
+ */	
+class CATGetSignal : public CAtCommandBase
+{
+public:
+	static CATGetSignal* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGetSignal();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+    /**
+     * Get network signal information of phone
+     */ 
+	TTsySignalInfo getSignalInfo();
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGetSignal(CGlobalPhonemanager& aGloblePhone, 
+		         CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+	TTsySignalInfo iSignalInfo; 
+	TInt iError;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atgetsimstatusready.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,91 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgetsimstatusready.h
+// 
+/**
+ * @file
+ *
+ * AT command definition
+ * This file defines the AT command for Getting SIM card status
+ * 
+ */
+
+#ifndef __CATSIMCARD_H__
+#define __CATSIMCARD_H__
+
+//user include
+#include "atcommandbase.h"
+
+// forward class
+class MCallBackPhoneHander;
+/**
+ * \class CATSIMCard 
+ *
+ * CATSIMCard inherits from the CAtCommandBase class. 
+ * This class transmits the AT Command in order to get SIM card status 
+ * in the phone, using a standard AT command : AT+CCID=?
+ */
+class CATSIMCard : public CAtCommandBase
+{
+public:
+	static CATSIMCard* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATSIMCard();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	/**
+	 * Start this request
+	 */
+	virtual void StartRequest();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATSIMCard(CGlobalPhonemanager& aGloblePhone, 
+		       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	TInt iError;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atnetworkregstatuschange.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,108 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atnetworkregstatuschange.h
+// AT command definition
+// This file defines the AT command used to Notify the phones current network
+//registration status..
+//
+#ifndef __ATNETWORKREGSTATUSCHANGE_H__
+#define __ATNETWORKREGSTATUSCHANGE_H__
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+/**
+ * CATNetworkRegStatusChange inherits from the CAtCommandBase class. 
+ * AT command to Notify the phones current network
+ * registration status.
+ * This class transmits the following commands: +CREG:
+ */
+class CATNetworkRegStatusChange : public CAtCommandBase
+	{
+public:
+	static CATNetworkRegStatusChange* NewL(CGlobalPhonemanager& aGloblePhone,
+			                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CATNetworkRegStatusChange* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	virtual ~CATNetworkRegStatusChange();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand(){};
+	/**
+	 * Parses the +CGREG unsolicited string from the modem.
+	 * An example response would be '+CREG: 2' where the value denotes the
+	 * current registration status.
+	 * If parsing succeeds then aRegStatus is updated.
+	 * 
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * 
+	 * 
+	 */
+	void Enable();
+	/**
+	 * 
+	 * 
+	 */
+	void Disable();
+	
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATNetworkRegStatusChange(CGlobalPhonemanager& aGloblePhone,
+				   CCtsyDispatcherCallback& aCtsyDispatcherCallback);	
+	/**
+	 * 2nd Constructor
+	 * This function must be called in his subtype class for 
+	 * creating instance of class CRespondBufParser
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * 
+	 * 
+	 */
+	RMobilePhone::TMobilePhoneRegistrationStatus iRegistrationStatus;
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	
+	};
+
+#endif //__ATNETWORKREGSTATUSCHANGE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atnotifycellinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,106 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atnotifycellinfo.h
+// AT command definition
+// This file defines the AT command used to Notify Cell infomation
+
+#ifndef __ATNODIFYCELLINFO_H__
+#define __ATNODIFYCELLINFO_H__
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+
+/**
+ * CATNotifyCellInfo inherits from the CAtCommandBase class. 
+ * AT command to Notify the phones current network
+ * registration status.
+ * This class transmits the following commands: +CCED:
+ */
+class CATNotifyCellInfo : public CAtCommandBase
+	{
+public:
+	static CATNotifyCellInfo* NewL(CGlobalPhonemanager& aGloblePhone,
+			                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CATNotifyCellInfo* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	virtual ~CATNotifyCellInfo();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand(){};
+	/**
+	 * Parses the +CGREG unsolicited string from the modem.
+	 * An example response would be '+CREG: 2' where the value denotes the
+	 * current registration status.
+	 * If parsing succeeds then aRegStatus is updated.
+	 * 
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * 
+	 * 
+	 */
+	void Enable();
+	/**
+	 * 
+	 * 
+	 */
+	void Disable();
+	
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATNotifyCellInfo(CGlobalPhonemanager& aGloblePhone,
+				   CCtsyDispatcherCallback& aCtsyDispatcherCallback);	
+	/**
+	 * 2nd Constructor
+	 * This function must be called in his subtype class for 
+	 * creating instance of class CRespondBufParser
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * The return Cell infomation  of AT command executed 
+	 */
+	RMmCustomAPI::TMmCellInfo::TGSMCellInfo iCellInfo; 
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	
+	};
+
+#endif //__ATNODIFYCELLINFO_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atselectnetwork.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,93 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atselectnetwork.h
+//This file defines the AT command for Selecting Network
+
+#ifndef __CATSELECTNETWORK_H__
+#define __CATSELECTNETWORK_H__
+
+//user include
+#include "atcommandbase.h"
+
+/**
+ * class CATSelectNetwork 
+ *
+ * CATSelectNetwork inherits from the CAtCommandBase class. 
+ * This class transmits the AT+COPS=1,2,x Command in order to  
+ * Select Network
+ */
+class CATSelectNetwork : public CAtCommandBase
+{
+public:
+	static CATSelectNetwork* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATSelectNetwork();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Cancel the AT Command execution
+	 */
+	virtual void CancelCommand();
+	
+	virtual void StartRequest();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	void SetNetworkSelection(const RMobilePhone::TMobilePhoneNetworkManualSelection& aNetworkManualSelection);
+public:
+	TBool iCommandRunning;
+	TBool iCommandCancel;
+	TBool iCommandSetBack;
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATSelectNetwork(CGlobalPhonemanager& aGloblePhone, 
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	/**
+	 * 
+	 */
+	void ExecuteSetBackCommand();
+
+private:
+	TInt iError;
+	RMobilePhone::TMobilePhoneNetworkManualSelection iNetworkManualSelection;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atselectnetworkmode.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,81 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atselectnetworkmode.h
+//This file defines the AT command for Selecting Network Mode
+
+
+#ifndef __CATSELECTNETWORKMODE_H__
+#define __CATSELECTNETWORKMODE_H__
+
+//user include
+#include "atcommandbase.h"
+
+/**
+ * class CATSelectNetworkMode 
+ *
+ * CATSelectNetworkMode inherits from the CAtCommandBase class. 
+ * This class transmits the AT+COPS=x Command in order to  
+ * Select Network Mode
+ */
+class CATSelectNetworkMode : public CAtCommandBase
+{
+public:
+	static CATSelectNetworkMode* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATSelectNetworkMode();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	
+	virtual void StartRequest();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	void SetNetworkSelection(const TInt aNetworkSelection);
+
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATSelectNetworkMode(CGlobalPhonemanager& aGloblePhone, 
+		                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);	
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	TInt iError;
+	TInt iNetworkSelection;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/atsetnotifycell.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,88 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsetnotifycell.h
+//
+
+
+#ifndef __ATSETNOTIFYCELL_H__
+#define __ATSETNOTIFYCELL_H__
+
+//system include
+#include "atcommandbase.h"
+
+class CATGetPhoneCellInfo;
+class CATNotifyCellInfo;
+/**
+ * class CATSetNotifyCellInfo 
+ *
+ * CATSetNotifyCellInfo inherits from the CAtCommandBase class. 
+ * This class transmits the AT+CCED=1,1 Command in order to set 
+ * Notify Cell infomation
+ */
+class CATSetNotifyCellInfo : public CAtCommandBase
+{
+public:
+	static CATSetNotifyCellInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATSetNotifyCellInfo();
+
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * The return error value of AT command executed 
+	 */
+	TInt GetErrorValue();
+	
+	/**
+	 * Start the request
+	 */
+	virtual void StartRequest();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATSetNotifyCellInfo(CGlobalPhonemanager& aGloblePhone, 
+		                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+	TInt iError;
+};
+#endif //__ATSETNOTIFYCELL_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getcurrentnetworkinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,180 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file getcurrentnetworkinfo.h
+// 
+
+#ifndef __GETCURRENTNETWORKINFO_H__
+#define __GETCURRENTNETWORKINFO_H__
+
+//user include
+#include "atcommandcontrolbase.h"
+#include "athelpercommand.h"
+
+// forward class
+class CATNetworkInfo;
+class CATHelperCommand;
+
+/**
+ * CGetCurrentNetworkInfo inherits from the CATCommandControlBase class. 
+ *
+ */
+class CGetCurrentNetworkInfo : public CATCommandControlBase
+{
+public:
+    /**
+     * Two-phased constructor.
+     * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+     */ 
+	static CGetCurrentNetworkInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CGetCurrentNetworkInfo();
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	void StartRequest();
+	/**
+	 * Get the return value executed AT Command
+	 */
+	RMobilePhone::TMobilePhoneNetworkInfoV5 GetNetWorkInfo();
+	/**
+	 * Get error value executed AT Command
+	 */
+	TInt GetErrorValue();
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CGetCurrentNetworkInfo(CGlobalPhonemanager& aGloblePhone, 
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+    /**
+     * Start the AT command
+     */
+	void StartATCommand(CAtCommandBase* aAtCommand);
+	
+	/**
+	 * Complete AT command
+	 */
+	void CompeteATCommand(CAtCommandBase* aAtCommand);
+	
+	/**
+	 * Set long name format for modem
+	 */
+	void SetLongNameFormat();
+	
+	/**
+	 * Get the long name from modem
+	 */
+	void GetNetworkLongName();
+	
+	/**
+	 * Set short name format for modem
+	 */
+	void SetShortNameFormat();
+	
+	/**
+	 * Get the short name from modem
+	 */
+	void GetNetworkShortName();
+	
+	/**
+	 * Set numberic format
+	 */
+	void SetNumbericFormat();
+	
+	/**
+	 * Get the country code and network Id
+	 */
+	void GetCountryCodeAndNetworkId();
+	
+	/**
+	 * Handle the error
+	 */
+	void HandleGetCurNetworkError(TInt aError);
+	
+	/**
+	 * Handle the completion of geting current network information
+	 */
+	void HandleGetCurNetworkComplete();
+private:
+    /**
+     * The AT command to get the network info
+     */
+	CATNetworkInfo* iATNetworkInfo;
+	
+	/**
+	 * The Helper AT command @see CATHelperCommand
+	 */
+	CATHelperCommand* iATHelperCommand;
+	
+	/**
+	 * The network info
+	 */
+	RMobilePhone::TMobilePhoneNetworkInfoV5 iNetworkInfo;
+    
+	/**
+	 * Define the states for retrieving the network information
+	 */
+	enum TGetCurNetworkState
+		{
+		/**
+		 * The state is unknown
+		 */
+		EATUnknown,
+		
+		/**
+		 * The state of seting long format
+		 */
+		EATSetLongFormat,
+		
+		/**
+		 * The state of getting long name 
+		 */
+		EATGetLongName,
+		
+		/**
+		 * The state of seting short name format 
+		 */
+		EATSetShortFormat,
+		
+		/**
+		 * The state of getting short name
+		 */
+		EATGetShortName,
+		
+		/**
+		 * The state of Seting the numberic format
+		 */
+		EATSetNumbericFormat,
+		
+		/**
+		 * The state of geting country code and network Id
+		 */
+		EATGetCountryCodeAndNetwrokId
+		} iState;
+
+};
+#endif //__GETCURRENTNETWORKINFO_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getfdnstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,83 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file getfdnstatus.h
+// 
+// 
+
+#ifndef __GETFDNSTATUS_H__
+#define __GETFDNSTATUS_H__
+
+//user include
+#include "atcommandcontrolbase.h"
+
+// forward class
+class CATGetFdnStatus;
+class CATGetFdnSupport;
+
+/**
+ * CGetFdnStatus inherits from the CATCommandControlBase class. 
+ *
+ */
+class CGetFdnStatus : public CATCommandControlBase
+{
+public:
+    /**
+     * Two-phased constructor.
+     * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+     */ 
+	static CGetFdnStatus* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CGetFdnStatus();
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	void StartRequest();	
+
+protected: 
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CGetFdnStatus(CGlobalPhonemanager& aGloblePhone, 
+		          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	void StartATCommand(CAtCommandBase* iAtCommand);
+	void EndATCommand(CAtCommandBase* aAtCommand);
+	void FdnSupportComplete(const TInt aError);
+	void FdnStatusComplete(const TInt aError);
+private:
+	CATGetFdnSupport* iATGetFdnSupport;
+	CATGetFdnStatus* iATGetFdnStatus;
+	TLtsyATCommandType iATType;
+	/**
+	 *
+	 */
+	enum 
+		{
+		EATNone,
+		EATGetFdnStatus,
+		EATGetFdnSupport
+		} iATCommandName;
+
+};
+#endif //__GETFDNSTATUS_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getoperatorname.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,85 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file getoperatorname.h
+// 
+
+#ifndef __GETOPERATORNAME_H__
+#define __GETOPERATORNAME_H__
+
+//user include
+#include "atcommandcontrolbase.h"
+#include "athelpercommand.h"
+
+// forward class
+class CATNetworkInfo;
+class CATHelperCommand;
+
+/**
+ * CGetOperatorNmae inherits from the CATCommandControlBase class. 
+ *
+ */
+class CGetOperatorNmae : public CATCommandControlBase
+{
+public:
+    /**
+     * Two-phased constructor.
+     * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+     */ 
+	static CGetOperatorNmae* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CGetOperatorNmae();
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	void StartRequest();
+	void SetRequestTypeL(TInt aIpc);
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CGetOperatorNmae(CGlobalPhonemanager& aGloblePhone, 
+		             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+	void StartATCommand(CAtCommandBase* aAtCommand);
+	void EndATCommand(CAtCommandBase* aAtCommand);
+	void SetOperFormatComplete(const TInt aError);
+	void CtsyDispatcherCallBack(const TInt aError);
+private:
+	CATNetworkInfo* iATNetworkInfo;
+	CATHelperCommand* iATHelperCommand;
+	RMobilePhone::TMobilePhoneNetworkInfoV5 iNetworkInfo;
+	TInt iError;
+	TInt iRequestIpc;
+	TLtsyATCommandType iATType;
+	enum 
+		{
+		EATNone,
+		EATNetworkInfo,
+		EATSimpleCommand
+		} iATCommandName;
+
+};
+#endif //__GETOPERATORNAME_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/getphoneid.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,79 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file getphoneid.h
+// 
+
+#ifndef __GETPHONEID_H__
+#define __GETPHONEID_H__
+
+//user include
+#include "atcommandcontrolbase.h"
+
+// forward class
+class CATGetImei;
+class CATGetManufacturer;
+class CATGetModel;
+class CATGetRevision;
+
+/**
+ * CGetPhoneID inherits from the CATCommandControlBase class. 
+ *
+ */
+class CGetPhoneID : public CATCommandControlBase
+{
+public:
+    /**
+     * Two-phased constructor.
+     * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+     */ 
+	static CGetPhoneID* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CGetPhoneID();
+
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	void StartRequest();
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CGetPhoneID(CGlobalPhonemanager& aGloblePhone, 
+		        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	void StartATCommand(CAtCommandBase* aAtCommand);
+	void EndATCommand(CAtCommandBase* aAtCommand);
+	void GetImeiComplete(const TInt aError);
+	void GetManufacturerComplete(const TInt aError);
+	void GetModelComplete(const TInt aError);
+private:
+	RMobilePhone::TMobilePhoneIdentityV1 iPhoneId;
+	CATGetImei* iATGetImei;
+	CATGetManufacturer* iATGetManufacturer;
+	CATGetModel* iATGetModel;
+	CATGetRevision* iATGetRevision;
+	TLtsyATCommandType iATType;
+
+};
+#endif //__GETPHONEID_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/initializephone.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,226 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file initializephone.h
+// 
+
+#ifndef __INITIALIZEPHONE_H__
+#define __INITIALIZEPHONE_H__
+
+//user include
+#include "atcommandcontrolbase.h"
+#include "globalphonemanager.h"
+#include "atipcrequestcompleteobserver.h"
+
+// forward class
+class CATGetModemStatus;
+class CATNetworkRegistration;
+class CATSIMCard;
+class CATNetworkInfo;
+class CATGetSignal;
+class CATGetBattery;
+class CATHelperCommand;
+class CATNetworkRegStatusChange;
+class CNotifyBatteryAndSignal;
+class CGetCurrentNetworkInfo;
+
+/**
+ * CInitializePhone inherits from the CATCommandControlBase class. 
+ *
+ */
+class CInitializePhone : public CATCommandControlBase, public MIpcRequestCompleteObserver
+{
+public:
+    /**
+     * Two-phased constructor.
+     * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 * @param aNtwkRegStatusChange
+	 * @param aNotifyBatteryAndSignal
+     */
+	static CInitializePhone* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                           CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+		                           CATNetworkRegStatusChange& aNtwkRegStatusChange,
+		                           CNotifyBatteryAndSignal& aNotifyBatteryAndSignal);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CInitializePhone();
+
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	 * Start this request 
+	 */
+	void StartRequest();
+    
+	/**
+     * Execute next request stored in request list
+     */
+	void ExecutePendingRequest();
+	
+	/**
+	 * Get the notification when one of the IPC request was complete
+	 */
+	virtual void NotifyIpcRequestComplete(TInt aIpcId);
+	
+	/**
+	 * Append the IPC request to pending request list
+	 */
+	void AppendIpcRequestToPendingListL(TInt aIpc);
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 * @param aNtwkRegStatusChange
+	 * @param aNotifyBatteryAndSignal
+	 */
+	CInitializePhone(CGlobalPhonemanager& aGloblePhone, 
+		              CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+		              CATNetworkRegStatusChange& aNtwkRegStatusChange,
+		              CNotifyBatteryAndSignal& aNotifyBatteryAndSignal);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+    /**
+     * Execute next AT commane 
+     * 
+     * @param aATString The context of excuting aommand
+     * @param aATType Identify the Type of AT Command
+     */
+	void ExecuteNextATHelpCommand(const TDesC8& aATString,TLtsyATCommandType aATType);
+	/**
+	 * Start an AT Command
+	 * @param  aAtCommand the AT Command class 
+	 */
+	void StartATCommand(CAtCommandBase* aAtCommand);
+	/**
+	 * End an AT Command
+	 * @param  aAtCommand  the AT Command class 
+	 */
+	void CompleteATCommand(CAtCommandBase* aAtCommand);
+	/**
+	 * Get modem status command finished
+	 */
+	void ModemStatusComplete(TInt aError);
+	/**
+	 * Set oper format command finished
+	 */
+	void SetOperFormatComplete(const TInt aError);
+	/**
+	 * Get network infomation command finished
+	 */
+	void NetworkInfoComplete();
+	/**
+	 * Get phone's signal infomation command finished
+	 */
+	void GetSignalComplete(TInt aError);
+	/**
+	 * Get phone's battery infomation command finished
+	 */
+	void GetBatteryComplete(TInt aError);
+	
+private:
+    /**
+     * AT type is used to identify AT command
+     */
+    TInt iATType;
+    
+    /**
+     * Check if the current executed pending request is still running
+     */
+    TBool iIsPendingRequestStillRunning;
+    
+    /**
+     * Get the current modem status
+     * Own
+     */
+	CATGetModemStatus* iATGetModemStatus;
+	
+	/**
+	 * Get the current network registration status
+	 * Own
+	 */
+	CATNetworkRegistration* iNetworkRegStatus;
+	
+	/**
+	 * Get the current SIM card status
+	 * Own
+	 */
+	CATSIMCard* iATSIMCard;
+	
+	/**
+	 * Get the current signal level
+	 * Own
+	 */
+	CATGetSignal* iATGetSignal;
+	
+	/**
+	 * Get the current battery level
+	 * Own
+	 */
+	CATGetBattery* iATGetBattery;
+	
+	/**
+	 * Helper command for get a set of phone info
+	 * Own
+	 */
+	CATHelperCommand* iATHelperCommand;
+	
+	/**
+	 * Get the current netwok info
+	 * Own
+	 */
+	CGetCurrentNetworkInfo* iATGetCurNetworkInfo;
+	
+	/**
+	 * Notify the regisration status change
+	 * Not Own
+	 */
+	CATNetworkRegStatusChange& iNtwkRegStatusChange;
+	
+	/**
+	 * Not Own
+	 */
+	CNotifyBatteryAndSignal& iNotifyBatteryAndSignal;
+	
+	/**
+	 * Network infomation
+	 */
+	RMobilePhone::TMobilePhoneNetworkInfoV5 iNetworkInfo; 
+	
+	/**
+	 * Battery infomation
+	 */
+	RMobilePhone::TMobilePhoneBatteryInfoV1 iBatteryInfo; 
+	
+	/**
+	 * Signal infomation
+	 */
+	TTsySignalInfo iSignalInfo;
+	
+	/**
+     * This store the IPC request which should be handled specially as those IPC requests would be coming together.
+     * So we should store one or another before one of those special IPC requests was complete and then execute next request 
+     * retrived from this store.
+     */
+	RArray<TInt> iPendingRequestList;
+};
+#endif //__INITIALIZEPHONE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/inc/notifybatteryandsignal.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,89 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file notifybatteryandsignal.h
+// 
+// 
+
+#ifndef __NOTIFYBATTERYANDSIGNAL_H__
+#define __NOTIFYBATTERYANDSIGNAL_H__
+
+//user include
+#include <callbacktimer.h>
+#include "atcommandcontrolbase.h"
+#include "globalphonemanager.h"
+
+// forward class
+class CATGetBattery;
+class CATGetSignal;
+
+/**
+ * CNotifyBatteryAndSignal inherits from the CATCommandControlBase class. 
+ *
+ */
+class CNotifyBatteryAndSignal : public CATCommandControlBase,
+                                public MTimerObserver
+{
+public:
+    /**
+     * Two-phased constructor.
+     * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+     */
+	static CNotifyBatteryAndSignal* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	 * Destructor
+	 *
+	 */
+	~CNotifyBatteryAndSignal();
+
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	void StartRequest();	
+	void StartTimer(TInt aSecond);
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CNotifyBatteryAndSignal(CGlobalPhonemanager& aGloblePhone, 
+		                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	//From MTimerObserver
+    virtual void TimerRun(TInt aError);
+    
+private:
+	RMobilePhone::TMobilePhoneBatteryInfoV1 iBatteryInfo; 
+	TTsySignalInfo iSignalInfo; 
+	CATGetBattery* iATGetBattery;
+	CATGetSignal* iATGetSignal;
+	/**
+	 *
+	 */
+	CCallbackTimer* iCallbackTimer;	
+	enum 
+		{
+		EATNone,
+		EATGetBattery,
+		EATGetSignal
+		} iATCommandName;
+
+};
+#endif //__NOTIFYBATTERYANDSIGNAL_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atdetectnetwork.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,230 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Get the detected network
+
+#include "atdetectnetwork.h"
+#include "mslogger.h"
+
+_LIT8(KDetectNetworkCommand,"AT+COPS=?\r");
+_LIT8(KGetDetectNetworkRepondStr,"+COPS:");
+const TInt KLtsyDetectNetworkReadTimeOut = 80;
+
+// ---------------------------------------------------------------------------
+// NetworkIdL
+// Utility function to translate the 5 digit ASCII network identification 
+// returned by the ME into Mobile Country Code (aCountryCode) and a Mobile 
+// Network Code (aNetworkIdentity) strings. Tbe format returned by the ME is 
+// XXXYY, where XXX represents the Mobile Country Code and YY represents the 
+// Mobile Network Code.
+// ---------------------------------------------------------------------------
+static TInt NetworkIdL(const TDesC8& aCode,
+					   RMobilePhone::TMobilePhoneNetworkCountryCode& aCountryCode, 
+					   RMobilePhone::TMobilePhoneNetworkIdentity& aNetworkIdentity)
+	{
+	if (aCode.Length()!=5)
+		{
+		return KErrGeneral;
+		}
+	
+	aCountryCode.SetLength(3);
+	aCountryCode[0] = aCode[0];
+	aCountryCode[1] = aCode[1];
+	aCountryCode[2] = aCode[2];
+
+	aNetworkIdentity.SetLength(2);
+	aNetworkIdentity[0] = aCode[3];
+	aNetworkIdentity[1] = aCode[4];
+	return KErrNone;
+	}
+// Class CATDetectNetwork
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDetectNetwork* CATDetectNetwork::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATDetectNetwork* self = new(ELeave) CATDetectNetwork(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::CATDetectNetwork
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDetectNetwork::CATDetectNetwork(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	iReadTimeOut = KLtsyDetectNetworkReadTimeOut;
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDetectNetwork::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iList= NULL;
+	iCommandRunning = EFalse;
+	iCommandCancel = EFalse;
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::~CATDetectNetwork
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATDetectNetwork::~CATDetectNetwork()
+	{
+	if(iList)
+		{
+		delete iList;
+		iList = NULL;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDetectNetwork::StartRequest()
+	{
+	iCommandRunning = ETrue;
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDetectNetwork::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KDetectNetworkCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::CancelCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDetectNetwork::CancelCommand()
+	{	
+	iCommandCancel = ETrue;
+	}
+// ---------------------------------------------------------------------------
+// CATDetectNetwork::ParseResponseL
+// should be
+// +COPS: (status,"longname","shortname",code),... ,,(list),(list)
+// +COPS: [list of supported (<stat>,long alphanumeric <oper>,short alphanumeric 
+// <oper>,numeric <oper>)s]
+// <stat>:
+// 0 unknown
+// 1 available
+// 2 current
+// 3 forbidden
+// <oper>: string type; <format> indicates if the format is alphanumeric or numeric;
+// long alphanumeric format can be upto 16 characters long and short format up to 8 
+// characters (refer GSM MoU SE.13 [9]); numeric format is the GSM Location Area 
+// Identification number (refer GSM 04.08 [8] subclause 10.5.1.3) which consists of
+// a three BCD digit country code coded as in ITU-T E.212 Annex A [10], plus a two 
+// BCD digit network code, which is administration specific; returned <oper> shall 
+// not be in BCD format, but in IRA characters converted from BCD; hence the number 
+// has structure: (country code digit 3)(country code digit 2)(country code digit 1)
+// (network code digit 2)(network code digit 1)
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDetectNetwork::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+    if(iList)
+    	{
+    	delete iList;
+    	iList = NULL;
+    	}
+	iList=CMobilePhoneNetworkListV2::NewL();
+	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	if( array[0].MatchF(KGetDetectNetworkRepondStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	TInt count = array.Count() - 1;
+	for (TInt i = 1;i < count;i++)
+		{
+		RMobilePhone::TMobilePhoneNetworkInfoV2 info;	
+		// This TSY only supports GSM mode so we can hardcode this
+		info.iMode=RMobilePhone::ENetworkModeGsm;
+		TInt val;
+		TLex8 lex(array[i]);
+		lex.Val(val);
+		info.iStatus = RMobilePhone::TMobilePhoneNetworkStatus(val);
+		i++;
+		info.iLongName.Copy(array[i]);		
+		i++;
+		if(array[i].Length() > info.iShortName.MaxLength())
+			info.iShortName.Copy(array[i].Mid(0,info.iShortName.MaxLength()));			
+		else
+			info.iShortName.Copy(array[i]);
+		i++;
+		User::LeaveIfError(NetworkIdL(array[i],info.iCountryCode, info.iNetworkId));  // MNC and MCC	
+		
+		iList->AddEntryL(info); 
+		}
+	CleanupStack::PopAndDestroy();
+	} //ParseResponseL
+// ---------------------------------------------------------------------------
+// ATDetectNetwork::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATDetectNetwork::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	if(iCommandCancel)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneGetDetectedNetworksCancelComp(0);
+		}
+	else
+		{
+		iCtsyDispatcherCallback.CallbackPhoneGetDetectedNetworksComp(aStatus,*iList);
+		}
+	iCommandRunning = EFalse;
+	iCommandCancel = EFalse;
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	
+	}
+//
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetbatteryinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,193 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Queries the ME battery. Retrieves charge level and battery status
+
+#include "atgetbatteryinfo.h"
+#include "mslogger.h"
+#include "requestbase.h"
+
+
+_LIT8(KGetBatteryCommand,"AT+CIND?\r");
+_LIT8(KGetBatteryCmdRepondStr,"+CIND:");
+// Class CATGetBattery
+// ---------------------------------------------------------------------------
+// CATGetBattery::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetBattery* CATGetBattery::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetBattery* self = new(ELeave) CATGetBattery(aGloblePhone,
+			                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::CATGetBattery
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetBattery::CATGetBattery(CGlobalPhonemanager& aGloblePhone, 
+	                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetBattery::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_GetBattery;
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::~CATGetBattery
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetBattery::~CATGetBattery()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetBattery::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetBattery::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetBatteryCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::CATGetBattery
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneBatteryInfoV1 CATGetBattery::GetBatteryinfo()
+	{
+	return iBatteryInfo;
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::CATGetBattery
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TRfStateInfo CATGetBattery::GetRfStateInfo()
+	{
+	return iRfStateInfo;
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetBattery::GetErrorValue()
+	{
+	return iError;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetBattery::ParseResponseL
+// This method parses the modems response to the 'AT+CIND?' command.
+// +CIND: <ind>[,<ind>[,...]]
+// An example response is '+CIND: 3,3,1,1,1,1,1,1,1' where first value 
+// denotes the current battery charge level.
+// "battchg" battery charge level (0-5)
+// "signal" signal quality (0-5)
+// "service" service availability (0-1)
+// "sounder" sounder activity (0-1)
+// "message" message received (0-1)
+// "call" call in progress (0-1)
+// "vox" transmit activated by voice activity (0-1)
+// "roam" roaming indicator (0-1)
+// "smsfull" a short message memory storage in the MT has become full (1), or memory locations are available (0);
+// i.e. the range is (0-1)
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetBattery::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if( array[0].MatchF(KGetBatteryCmdRepondStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	TInt val = 0;
+	TLex8 lex(array[1]);
+	lex.Val(val);
+	if (val < 0) 
+		{
+		iBatteryInfo.iStatus = RMobilePhone::EPowerStatusUnknown;
+		iBatteryInfo.iChargeLevel = 0;
+		}
+	else	
+		{
+		iBatteryInfo.iStatus = RMobilePhone::EPoweredByBattery;
+		iBatteryInfo.iChargeLevel = val;
+		}
+	TLex8 lexRf(array[3]);
+	lexRf.Val(val);
+	if(val == 1)
+		{
+		iRfStateInfo = ERfsStateInfoNormal;
+		}
+	else
+		{
+		iRfStateInfo = ERfsStateInfoInactive;
+		}
+	
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATGetBattery::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetBattery::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhoneGetBatteryInfoComp(aStatus,iBatteryInfo);
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetcellinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,171 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetCellInfo
+
+//user include
+#include "atgetcellinfo.h"
+#include "mslogger.h"
+
+_LIT8(KGetCellInfoCommand,"AT+CCED=0,7\r");
+_LIT8(KGetCellInfoCmdRepondStr,"+CCED:");
+// Class CATGetCellInfo
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetCellInfo* CATGetCellInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetCellInfo* self = new(ELeave) CATGetCellInfo(aGloblePhone,
+			                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::CATGetCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetCellInfo::CATGetCellInfo(CGlobalPhonemanager& aGloblePhone, 
+	                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetCellInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::~CATGetCellInfo(
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetCellInfo::~CATGetCellInfo()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetCellInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetCellInfo::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetCellInfoCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetCellInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if( array[0].MatchF(KGetCellInfoCmdRepondStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	TInt number = 0;
+	TInt val = 0;
+	TLex8 lexBasic(array[5]);
+	lexBasic.Val(val);
+	iCellInfo.iNmr[number].iBSIC = val;
+	TLex8 lexArfcn(array[6]);
+	lexArfcn.Val(val);
+	iCellInfo.iNmr[number].iARFCN = val;
+	TLex8 lexRxlev(array[7]);
+	lexRxlev.Val(val);
+	iCellInfo.iNmr[number].iRxLEV = val;
+	
+	
+    for(TInt i = 14;i < Count-2;i++ )
+    	{
+    	number++;
+    	i = i + 4;
+    	TInt val = 0;
+    	TLex8 lexBasic(array[i]);
+    	lexBasic.Val(val);
+    	i++;
+    	iCellInfo.iNmr[number].iBSIC = val;
+    	TLex8 lexArfcn(array[i]);
+    	lexArfcn.Val(val);
+    	iCellInfo.iNmr[number].iARFCN = val;
+    	i++;
+    	TLex8 lexRxlev(array[i]);
+    	lexRxlev.Val(val);
+    	iCellInfo.iNmr[number].iRxLEV = val;
+    	}
+	TLex8 lexTa(array[Count-2]);
+	lexTa.Val(val);
+    iCellInfo.iTA = val;
+	
+	
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATGetCellInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetCellInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else if(aEventSource == EWriteCompletion)
+		    {
+		    return;
+		    }
+		}
+	
+	// complete this request
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhoneGetCellInfoComp(aStatus,iCellInfo);
+	if(iIpcCompleteObserver)
+	    {
+	    iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
+	    }
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetfdnstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,136 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetFdnStatus
+
+//user include
+#include "atgetfdnstatus.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetFdnStatusCommand,"AT+CPBS?\r");
+_LIT8(KGetFdnStatusCmdRepondStr,"+CPBS:");
+_LIT8(KFdnString,"FD");
+// Class CATGetFdnStatus
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetFdnStatus* CATGetFdnStatus::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetFdnStatus* self = new(ELeave) CATGetFdnStatus(aGloblePhone,
+			                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::CATGetFdnStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetFdnStatus::CATGetFdnStatus(CGlobalPhonemanager& aGloblePhone, 
+	                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnStatus::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iFdnStatus = EFalse;
+	iAtType = ELtsyAT_Phone_GetFdnStatus;
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::~CATGetFdnStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetFdnStatus::~CATGetFdnStatus()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnStatus::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnStatus::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetFdnStatusCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::CATGetFdnStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TBool CATGetFdnStatus::GetFdnStatus()
+	{
+	return iFdnStatus;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetFdnStatus::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnStatus::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnStatus::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if( array[0].MatchF(KGetFdnStatusCmdRepondStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	if( array[1].MatchF(KFdnString)!=KErrNotFound)
+		{
+		iFdnStatus = ETrue;
+		}
+	
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetfdnsupport.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,155 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetFdnSupport
+
+//user include
+#include "atgetfdnsupport.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetFdnSupportCommand,"AT+CPBS=?\r");
+_LIT8(KGetFdnSupportCmdRepondStr,"+CPBS:");
+_LIT8(KFdnString,"FD");
+// Class CATGetFdnSupport
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetFdnSupport* CATGetFdnSupport::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetFdnSupport* self = new(ELeave) CATGetFdnSupport(aGloblePhone,
+			                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::CATGetFdnSupport
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetFdnSupport::CATGetFdnSupport(CGlobalPhonemanager& aGloblePhone, 
+	                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnSupport::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iFdnSupport = EFalse;
+	iAtType = ELtsyAT_Phone_CheckFdnSupport; 
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::~CATGetFdnSupport
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetFdnSupport::~CATGetFdnSupport()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnSupport::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnSupport::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetFdnSupportCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::CATGetFdnSupport
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TBool CATGetFdnSupport::GetFdnSupport()
+	{
+	return iFdnSupport;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetFdnSupport::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetFdnSupport::ParseResponseL
+// This method parses the modems response to the 'AT+CPBS=?' command.
+// +CPBS: <pb>
+// <pb> values reserved by this TS:
+// "SM" SIM phonebook
+// "FD" SIM fixdialling-phonebook
+// "ON" SIM (or ME) own numbers (MSISDNs) list (reading of this storage may be 
+// available through +CNUM also) 
+// "EN" SIM (or ME) emergency number (+CPBW is not be applicable for this storage) 
+// "LD" SIM last-dialling-phonebook
+// "MC" ME missed (unanswered received) calls list (+CPBW may not be applicable for 
+// this storage)
+// "ME" ME phonebook
+// "MT" combined ME and SIM phonebook
+// "RC" ME received calls list (+CPBW may not be applicable for this storage)
+// "SN" SDN  (service dailing phonebook)
+// An example response is '+CPBS: "SM","FD","ON","EN" 
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetFdnSupport::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if( array[0].MatchF(KGetFdnSupportCmdRepondStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	for(TInt i = 1; i < Count; i++)
+		{
+		if( array[i].MatchF(KFdnString)!=KErrNotFound)
+			{
+			iFdnSupport = ETrue;
+			break;
+			}
+		}
+	
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetimei.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,155 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetImei
+
+#include "atgetimei.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetSerialNumCommand,"AT+CGSN\r");
+_LIT(KSpaceSeparator," ");
+// Class CATGetImei
+// ---------------------------------------------------------------------------
+// CATGetImei::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetImei* CATGetImei::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetImei* self = new(ELeave) CATGetImei(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::CATGetImei
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetImei::CATGetImei(CGlobalPhonemanager& aGloblePhone, 
+	                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetImei::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_GetImei;
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::~CATGetImei
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetImei::~CATGetImei()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetImei::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetImei::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetSerialNumCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::CATGetImei
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneIdentityV1 CATGetImei::GetPhoneImei()
+	{
+	return iPhoneId;
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetImei::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetImei::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetImei::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	iMoreInfoFlag = EFalse;
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	for(TInt i = 0; i < Count ; i++)
+		{
+		//lex.Assign(array[2]);
+		
+		if  (iMoreInfoFlag)
+			{
+			TBuf<RMobilePhone::KPhoneSerialNumberSize> Data;
+			Data.Zero();
+			TInt remainingBufferSize = RMobilePhone::KPhoneSerialNumberSize - 
+			                           iPhoneId.iSerialNumber.Length() - 1;
+			if(array[i].Length() > remainingBufferSize)
+				{
+				Data.Copy(array[i].Mid(0,remainingBufferSize));
+				}
+			else
+				{
+				Data.Copy(array[i]);
+				}
+			iPhoneId.iSerialNumber.Append(KSpaceSeparator);
+			iPhoneId.iSerialNumber.Append(Data);
+			}
+		else
+			{
+			if(array[i].Length() > RMobilePhone::KPhoneSerialNumberSize)
+				{
+				iPhoneId.iSerialNumber.Copy(array[i].Mid(0,RMobilePhone::KPhoneSerialNumberSize));
+				}
+			else
+				{
+				iPhoneId.iSerialNumber.Copy(array[i]);
+				}
+			iMoreInfoFlag = ETrue;
+			}
+		}
+	CleanupStack::PopAndDestroy();
+	iError = KErrNone;
+	}
+//
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetmanufacturer.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,165 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetManufacturer
+
+#include "atgetmanufacturer.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetManufacturerCommand,"AT+CGMI\r");
+_LIT(KSpaceSeparator," ");
+// Class CATGetManufacturer
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetManufacturer* CATGetManufacturer::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetManufacturer* self = new(ELeave) CATGetManufacturer(aGloblePhone,
+			                                                  aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::CATGetManufacturer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetManufacturer::CATGetManufacturer(CGlobalPhonemanager& aGloblePhone, 
+	                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetManufacturer::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_GetManufacturer;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::~CATGetManufacturer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetManufacturer::~CATGetManufacturer()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetManufacturer::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetManufacturer::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetManufacturerCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::GetPhoneManufacturer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneIdentityV1 CATGetManufacturer::GetPhoneManufacturer()
+	{
+	return iPhoneId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetManufacturer::GetErrorValue()
+	{
+	return iError;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetManufacturer::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetManufacturer::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	iMoreInfoFlag = EFalse;
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	for(TInt i = 0; i < Count; i++)
+		{
+		//lex.Assign(array[2]);
+		
+		if  (iMoreInfoFlag)
+			{
+			TBuf<RMobilePhone::KPhoneSerialNumberSize> Data;
+			Data.Zero();
+			TInt remainingBufferSize = RMobilePhone::KPhoneSerialNumberSize - 
+			                           iPhoneId.iManufacturer.Length() - 1;
+			if(array[i].Length() > remainingBufferSize)
+				{
+				Data.Copy(array[i].Mid(0,remainingBufferSize));
+				}
+			else
+				{
+				Data.Copy(array[i]);
+				}
+			iPhoneId.iManufacturer.Append(KSpaceSeparator);
+			iPhoneId.iManufacturer.Append(Data);
+			}
+		else
+			{
+			if(array[i].Length() > RMobilePhone::KPhoneSerialNumberSize)
+				{
+				iPhoneId.iManufacturer.Copy(array[i].Mid(0,RMobilePhone::KPhoneSerialNumberSize));
+				}
+			else
+				{
+				iPhoneId.iManufacturer.Copy(array[i]);
+				}
+			iMoreInfoFlag = ETrue;
+			}
+		}
+	iMoreInfoFlag = EFalse;
+	CleanupStack::PopAndDestroy();
+	iError = KErrNone;
+	}
+//
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetmodel.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,156 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModel
+
+#include "atgetmodel.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetModelCommand,"AT+CGMM\r");
+_LIT(KSpaceSeparator," ");
+// Class CATGetModel
+// ---------------------------------------------------------------------------
+// CATGetModel::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetModel* CATGetModel::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetModel* self = new(ELeave) CATGetModel(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::CATGetModel
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetModel::CATGetModel(CGlobalPhonemanager& aGloblePhone, 
+	                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModel::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_GetModel;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::CATGetModel
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetModel::~CATGetModel()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModel::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModel::ExecuteCommand( )
+	{
+	iTxBuffer.Copy(KGetModelCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::GetPhoneModel
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneIdentityV1 CATGetModel::GetPhoneModel()
+	{
+	return iPhoneId;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetModel::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModel::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModel::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	iMoreInfoFlag = EFalse;
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	for(TInt i = 0; i < Count; i++)
+		{
+		//lex.Assign(array[2]);
+		
+		if  (iMoreInfoFlag)
+			{
+			TBuf<RMobilePhone::KPhoneModelIdSize> Data;
+			Data.Zero();
+			TInt remainingBufferSize = RMobilePhone::KPhoneModelIdSize - 
+									   iPhoneId.iModel.Length() - 1;
+			if(array[i].Length() > remainingBufferSize)
+				{
+				Data.Copy(array[i].Mid(0,remainingBufferSize));
+				}
+			else
+				{
+				Data.Copy(array[i]);
+				}
+			iPhoneId.iModel.Append(KSpaceSeparator);
+			iPhoneId.iModel.Append(Data);
+			}
+		else
+			{
+			if(array[i].Length() > RMobilePhone::KPhoneModelIdSize)
+				{
+				iPhoneId.iModel.Copy(array[i].Mid(0,RMobilePhone::KPhoneModelIdSize));
+				}
+			else
+				{
+				iPhoneId.iModel.Copy(array[i]);
+				}
+			iMoreInfoFlag = ETrue;
+			}
+		}
+	iMoreInfoFlag = EFalse;
+	CleanupStack::PopAndDestroy();
+	iError = KErrNone;
+	}
+//
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetmodemstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,126 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+
+#include "atgetmodemstatus.h"
+#include "mslogger.h"
+
+
+_LIT8(KATCommand, "AT\r");
+// Class CATGetModemStatus
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetModemStatus* CATGetModemStatus::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetModemStatus* self = new(ELeave) CATGetModemStatus(aGloblePhone,
+			                                                aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::CATGetModemStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetModemStatus::CATGetModemStatus(CGlobalPhonemanager& aGloblePhone, 
+	                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModemStatus::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_ModemStatus;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::~CATGetModemStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetModemStatus::~CATGetModemStatus()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModemStatus::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModemStatus::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KATCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModemStatus::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetModemStatus::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetModemStatus::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetModemStatus::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone !=aStatus)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneBootNotifyModemStatusReadyComp(aStatus,ERfsStateInfoInactive);
+		}
+	else 
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			iCtsyDispatcherCallback.CallbackPhoneBootNotifyModemStatusReadyComp(iError,ERfsStateInfoNormal);
+			}
+		else
+			{
+			return;
+			}
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetnetworkinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,250 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// Basic GSM Network and Operator information Implementation file.
+// 
+// This file contains the implementation of the CATNetworkInfo, CATDetectNetwork,
+// CNotifyNetworkRegistrationStatusChange and CCurrentNetworkChangedNotify classes.
+// Find the current Network Operator in Numeric, Long and Short formats.
+// NB - Some phones do not fully support all the formats, if any. The commands are 
+// supported implement this command. Valid responses are set in the TMobilePhoneLocationAreaV1
+// and the TMobilePhoneNetworkInfoV1 structures and the Network's status is set to Current.
+
+
+
+#include <etelmm.h>
+#include "atgetnetworkinfo.h"
+#include "mslogger.h"
+
+_LIT8(KGetCurrentNetworkInfoCommand, "AT+COPS?\r");
+_LIT8(KGetCurrentNetworkInfoResponse,"+COPS:");
+/**
+ * Utility function to translate the 5 digit ASCII network identification returned by the ME
+ * into Mobile Country Code (aCountryCode) and a Mobile Network Code (aNetworkIdentity) strings.
+ * Tbe format returned by the ME is XXXYY, where XXX represents the Mobile Country Code and YY
+ * represents the Mobile Network Code.
+ */
+static TInt NetworkIdL(const TDesC8& aCode,
+					   RMobilePhone::TMobilePhoneNetworkCountryCode& aCountryCode, 
+					   RMobilePhone::TMobilePhoneNetworkIdentity& aNetworkIdentity)
+	{
+	if (aCode.Length()!=5)
+		{
+		return KErrGeneral;
+		}
+	
+	aCountryCode.SetLength(3);
+	aCountryCode[0] = aCode[0];
+	aCountryCode[1] = aCode[1];
+	aCountryCode[2] = aCode[2];
+
+	aNetworkIdentity.SetLength(2);
+	aNetworkIdentity[0] = aCode[3];
+	aNetworkIdentity[1] = aCode[4];
+	return KErrNone;
+	}
+// Class CATNetworkInfo
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkInfo* CATNetworkInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATNetworkInfo* self = new(ELeave) CATNetworkInfo(aGloblePhone,
+			                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::CATNetworkInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkInfo::CATNetworkInfo(CGlobalPhonemanager& aGloblePhone, 
+	                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iGetHomeNwk = EFalse;
+	iAtType = ELtsyAT_Phone_NwkInfo;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::~CATNetworkInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkInfo::~CATNetworkInfo()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkInfo::ExecuteCommand( )
+	{
+	iTxBuffer.Copy(KGetCurrentNetworkInfoCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::GetNetWorkInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneNetworkInfoV5 CATNetworkInfo:: GetNetWorkInfo()
+	{
+	return iNetworkInfo;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATNetworkInfo::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::SetToGetHomeNwk
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkInfo::SetToGetHomeNwk()
+	{
+	iGetHomeNwk = ETrue;
+	}
+/**
+ * This method parses the modems response to the 'AT+CGREG?' command.
+ * An example response is '+CGREG: 0,1' where second value denotes the
+ * current registration status.
+ */
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	
+	if( array[0].MatchF(KGetCurrentNetworkInfoResponse)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	TInt val = 0;
+	TLex8 lex(array[1]);
+	lex.Val(val);
+	iPhoneGlobals.iPhoneStatus.iLocalNetworkSel.iMethod = RMobilePhone::TMobilePhoneSelectionMethod(val);
+	if(Count > 2)
+		{
+		TLex8 lex1(array[2]);
+		lex1.Val(iNameFormat);
+		switch (iNameFormat)
+			{
+			case 0:
+				if(array[3].Length() > iNetworkInfo.iLongName.MaxLength())
+					iNetworkInfo.iLongName.Copy(array[3].Mid(0,iNetworkInfo.iLongName.MaxLength()));			
+				else
+					iNetworkInfo.iLongName.Copy(array[3]);
+				break;
+			case 1:
+				if(array[2].Length() > iNetworkInfo.iShortName.MaxLength())
+					iNetworkInfo.iShortName.Copy(array[3].Mid(0,iNetworkInfo.iShortName.MaxLength()));			
+				else 
+					iNetworkInfo.iShortName.Copy(array[3]);	
+				break;
+			case 2:
+				/*if(array[2].Length() > iNetworkInfo.iShortName.MaxLength())
+					iNetworkInfo.iShortName.Copy(array[3].Mid(0,iNetworkInfo.iShortName.MaxLength()));			
+				else 
+					iNetworkInfo.iShortName.Copy(array[3]);*/	
+				User::LeaveIfError(NetworkIdL(array[3],iNetworkInfo.iCountryCode, iNetworkInfo.iNetworkId));
+				break;
+			default:
+				User::Leave(KErrGeneral);
+				break;
+				}
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	iNetworkInfo.iStatus=RMobilePhone::ENetworkStatusCurrent;
+	CleanupStack::PopAndDestroy();
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	iPhoneGlobals.iPhoneStatus.iCurrentNetwork = iNetworkInfo;
+	if(iGetHomeNwk)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneGetHomeNetworkComp(aStatus,iNetworkInfo);
+		}
+	else
+		{
+		iCtsyDispatcherCallback.CallbackPhoneGetCurrentNetworkInfoComp(aStatus,
+								iNetworkInfo, 
+								iPhoneGlobals.iPhoneStatus.iLocationArea);
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+//
+// End of file
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetnetworkregistrationstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,182 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATNetworkRegistration
+
+#include <et_phone.h>
+
+#include "atgetnetworkregistrationstatus.h"
+#include "mslogger.h"
+#include "atnetworkregstatuschange.h"
+
+
+_LIT8(KATGetNetworkRegCommand, "AT+CREG?\r");
+_LIT8(KATGetNetworkRegResponse,"+CREG:");
+// Class CATNetworkRegistration
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegistration* CATNetworkRegistration::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATNetworkRegistration* self = new(ELeave) CATNetworkRegistration(aGloblePhone,
+			                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegistration::CATNetworkRegistration(CGlobalPhonemanager& aGloblePhone, 
+	                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegistration::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_NwkRegStatus;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::~CATNetworkRegistration
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegistration::~CATNetworkRegistration()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegistration::StartRequest()
+	{
+	ExecuteCommand();	
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegistration::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KATGetNetworkRegCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATNetworkRegistration::GetErrorValue()
+	{
+	return iError;
+	}
+/**
+ * This method parses the modems response to the 'AT+CGREG?' command.
+ * An example response is '+CGREG: 0,1' where second value denotes the
+ * current registration status.
+ */
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegistration::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+		{
+		if (CurrentLine().Match(KLtsyOkString) != 0)
+			{
+			iError = KErrGeneral;
+			return ;
+			}
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,PrecedingLine());
+		TInt Count = array.Count();
+		if (Count < 1)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return ;
+			}
+		if( array[0].MatchF(KATGetNetworkRegResponse)==KErrNotFound)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return ;
+			}
+		// Skip over one parameter
+		
+		TInt val = 0;
+		TLex8 lex(array[2]);
+		lex.Val(val);
+		// Convert scond value to equivalent EtelMM enum
+		switch(val)
+			{
+			case 0:		
+				iRegistrationStatus = RMobilePhone::ENotRegisteredNoService;
+				break;
+			case 1:		
+				iRegistrationStatus = RMobilePhone::ERegisteredOnHomeNetwork;
+				break;
+			case 2:		
+				iRegistrationStatus = RMobilePhone::ENotRegisteredSearching;
+				break;
+			case 3:		
+				iRegistrationStatus = RMobilePhone::ERegistrationDenied;
+				break;
+			case 4:		
+				iRegistrationStatus = RMobilePhone::ERegistrationUnknown;
+				break;
+			case 5:		
+				iRegistrationStatus = RMobilePhone::ERegisteredRoaming;
+				break;
+			default:
+				iRegistrationStatus = RMobilePhone::ERegistrationUnknown;
+				break;
+			}
+		iPhoneGlobals.iPhoneStatus.iRegistrationStatus = iRegistrationStatus;
+		CleanupStack::PopAndDestroy(&array);
+		iError = KErrNone;
+	} //ParseResponseL
+// ---------------------------------------------------------------------------
+// CATNetworkRegistration::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegistration::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhoneGetNetworkRegistrationStatusComp(aStatus,iRegistrationStatus);
+	if(iIpcCompleteObserver)
+        {
+        iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
+        }
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetphonecellinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,149 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATGetPhoneCellInfo
+
+#include "atgetphonecellinfo.h"
+#include "mslogger.h"
+
+_LIT8(KGetPhoneCellInfoCommand,"AT+CCED=0,5\r");
+_LIT8(KGetPhoneCellInfoCmdRepondStr,"+CCED:");
+// Class CATGetPhoneCellInfo
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::NewL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+CATGetPhoneCellInfo* CATGetPhoneCellInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetPhoneCellInfo* self = new(ELeave) CATGetPhoneCellInfo(aGloblePhone,
+			                                                    aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::CATGetPhoneCellInfo
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+CATGetPhoneCellInfo::CATGetPhoneCellInfo(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::ConstructL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetPhoneCellInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::~CATGetPhoneCellInfo
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+CATGetPhoneCellInfo::~CATGetPhoneCellInfo()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::StartRequestL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetPhoneCellInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::ExecuteCommand
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetPhoneCellInfo::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KGetPhoneCellInfoCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::ParseResponseL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetPhoneCellInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if( array[0].MatchF(KGetPhoneCellInfoCmdRepondStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	iCellInfo.iMode = RMobilePhone::ECellModeGsm;
+	TInt val = 0;
+	TLex8 lex(array[4]);
+	lex.Val(val);
+	iCellInfo.iCellId = val;
+	TLex8 lex1(array[14]);
+	lex1.Val(val);
+	iCellInfo.iTimingAdvance = val;
+	
+	
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATGetPhoneCellInfo::EventSignal
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetPhoneCellInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	// handle IO error
+	if(aStatus != KErrNone)
+	    {
+	    iPhoneGlobals.iEventSignalActive = EFalse;
+        iCtsyDispatcherCallback.CallbackPhoneGetPhoneCellInfoComp(aStatus,iCellInfo);
+        CAtCommandBase::Complete();
+        if(iIpcCompleteObserver)
+            {
+            iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
+            }
+	    }
+	else if(aEventSource == EReadCompletion)
+	    {
+        iPhoneGlobals.iEventSignalActive = EFalse;
+        iCtsyDispatcherCallback.CallbackPhoneGetPhoneCellInfoComp(iError,iCellInfo);
+        CAtCommandBase::Complete();
+        if(iIpcCompleteObserver)
+            {
+            iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
+            }
+	    }
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetrevision.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,157 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATGetRevision
+
+#include "atgetrevision.h"
+#include "mslogger.h"
+
+_LIT8(KGetRevisionCommand,"AT+CGMR\r");
+_LIT(KSpaceSeparator," ");
+// CATGetRevision
+// ---------------------------------------------------------------------------
+// CATGetRevision::NewL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+CATGetRevision* CATGetRevision::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetRevision* self = new(ELeave) CATGetRevision(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::CATGetRevision
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+CATGetRevision::CATGetRevision(CGlobalPhonemanager& aGloblePhone, 
+	                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::ConstructL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetRevision::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_GetRevision;
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::~CATGetRevision
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+CATGetRevision::~CATGetRevision()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::StartRequest
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetRevision::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::ExecuteCommand
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetRevision::ExecuteCommand( )
+	{
+	iTxBuffer.Copy(KGetRevisionCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::GetPhoneRevision
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobilePhoneIdentityV1 CATGetRevision::GetPhoneRevision()
+	{
+	return iPhoneId;
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::GetErrorValue
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetRevision::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetRevision::ParseResponseL
+// other CATGetPhoneCellInfo were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetRevision::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	iMoreInfoFlag = EFalse;
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	for(TInt i = 0; i < Count; i++)
+		{
+		//lex.Assign(array[2]);
+		
+		if  (iMoreInfoFlag)
+			{
+			TBuf<RMobilePhone::KPhoneSerialNumberSize> Data;
+			Data.Zero();
+			TInt remainingBufferSize = RMobilePhone::KPhoneSerialNumberSize - 
+			                           iPhoneId.iRevision.Length() - 1;
+			if(array[i].Length() > remainingBufferSize)
+				{
+				Data.Copy(array[i].Mid(0,remainingBufferSize));
+				}
+			else
+				{
+				Data.Copy(array[i]);
+				}
+			iPhoneId.iRevision.Append(KSpaceSeparator);
+			iPhoneId.iRevision.Append(Data);
+			}
+		else
+			{
+			if(array[i].Length() > RMobilePhone::KPhoneSerialNumberSize)
+				{
+				iPhoneId.iRevision.Copy(array[i].Mid(0,RMobilePhone::KPhoneSerialNumberSize));
+				}
+			else
+				{
+				iPhoneId.iRevision.Copy(array[i]);
+				}
+			iMoreInfoFlag = ETrue;
+			}
+		}
+	iMoreInfoFlag = EFalse;
+	CleanupStack::PopAndDestroy();
+	iError = KErrNone;
+	}
+//
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetsignalstrength.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,172 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATGetSignal
+
+#include "atgetsignalstrength.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetSignalQualityCommand,"AT+CSQ\r");
+_LIT8(KGetSingalCommandRepStr,"+CSQ:");
+// Class CATGetSignal
+// ---------------------------------------------------------------------------
+// CATGetSignal::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetSignal* CATGetSignal::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGetSignal* self = new(ELeave) CATGetSignal(aGloblePhone,
+			                                      aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::CATGetSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetSignal::CATGetSignal(CGlobalPhonemanager& aGloblePhone, 
+	                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetSignal::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_GetSignal;
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::~CATGetSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGetSignal::~CATGetSignal()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetSignal::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetSignal::ExecuteCommand( )
+	{
+	iTxBuffer.Copy(KGetSignalQualityCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::getSignalInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TTsySignalInfo CATGetSignal::getSignalInfo()
+	{
+	return iSignalInfo;
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGetSignal::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetSignal::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return ;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count <= 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	if( array[0].MatchF(KGetSingalCommandRepStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	TInt val = 0;
+	TLex8 lex(array[1]);
+	lex.Val(val);
+	if (val < 0) 
+		{
+		iSignalInfo.iSignalStrength = 0;
+		}
+	else	
+		{
+		iSignalInfo.iSignalStrength = val;
+		}
+	TLex8 lex1(array[2]);
+	lex1.Val(val);
+	if (val < 0) 
+		{
+		iSignalInfo.iBar = 0;
+		}
+	else	
+		{
+		iSignalInfo.iBar = val;
+		}
+
+	CleanupStack::PopAndDestroy();
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATGetSignal::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGetSignal::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhoneGetSignalStrengthComp(aStatus,
+							                                   iSignalInfo.iSignalStrength,
+							                                   iSignalInfo.iBar);
+	}
+//
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atgetsimstatusready.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,123 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATSIMCard
+
+#include "atgetsimstatusready.h"
+#include "mslogger.h"
+
+
+_LIT8(KGetSIMCardCommand, "AT+CCID=?;\r");
+// Class CATSIMCard
+// ---------------------------------------------------------------------------
+// CATSIMCard::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSIMCard* CATSIMCard::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATSIMCard* self = new(ELeave) CATSIMCard(aGloblePhone,
+			                                  aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::CATSIMCard
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSIMCard::CATSIMCard(CGlobalPhonemanager& aGloblePhone, 
+	                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSIMCard::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Phone_SimCardStatus;
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::~CATSIMCard(
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSIMCard::~CATSIMCard()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSIMCard::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSIMCard::ExecuteCommand( )
+	{
+	iTxBuffer.Copy(KGetSIMCardCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSIMCard::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATSIMCard::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATSIMCard::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSIMCard::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhoneBootNotifySimStatusReadyComp(aStatus);
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atnetworkregstatuschange.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,160 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATNetworkRegStatusChange
+
+//user include
+#include "atnetworkregstatuschange.h"
+
+_LIT8(KATGetNetworkRegResponse,"+CREG:*");
+
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegStatusChange* CATNetworkRegStatusChange::NewL(CGlobalPhonemanager& aGloblePhone,
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATNetworkRegStatusChange* self = CATNetworkRegStatusChange::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegStatusChange* CATNetworkRegStatusChange::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATNetworkRegStatusChange* self = new (ELeave) CATNetworkRegStatusChange(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::~CATNetworkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegStatusChange::~CATNetworkRegStatusChange()
+	{
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegStatusChange::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	RemoveAllExpectString();
+	AddExpectStringL(KATGetNetworkRegResponse);
+	Enable();
+	}
+
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::CATNetworkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNetworkRegStatusChange::CATNetworkRegStatusChange(CGlobalPhonemanager& aGloblePhone,
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+							   :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::CATNetworkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegStatusChange::Enable()
+	{
+	AddUnsolicitedAtCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::CATNetworkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegStatusChange::Disable()
+	{
+	RemoveAtCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegStatusChange::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,CurrentLine());
+	ClearCurrentLine();
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	if( array[0].MatchF(KATGetNetworkRegResponse)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	// Skip over one parameter
+	
+	TInt val = 0;
+	TLex8 lex(array[1]);
+	lex.Val(val);
+	// Convert scond value to equivalent EtelMM enum
+	switch(val)
+		{
+		case 0:		
+			iRegistrationStatus = RMobilePhone::ENotRegisteredNoService;
+			break;
+		case 1:		
+			iRegistrationStatus = RMobilePhone::ERegisteredOnHomeNetwork;
+			break;
+		case 2:		
+			iRegistrationStatus = RMobilePhone::ENotRegisteredSearching;
+			break;
+		case 3:		
+			iRegistrationStatus = RMobilePhone::ERegistrationDenied;
+			break;
+		case 4:		
+			iRegistrationStatus = RMobilePhone::ERegistrationUnknown;
+			break;
+		case 5:		
+			iRegistrationStatus = RMobilePhone::ERegisteredRoaming;
+			break;
+		default:
+			iRegistrationStatus = RMobilePhone::ERegistrationUnknown;
+			break;
+		}
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATNetworkRegStatusChange::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNetworkRegStatusChange::EventSignal(TAtEventSource /*aEventSource*/, TInt /*aStatus*/)
+	{
+	iCtsyDispatcherCallback.CallbackPhoneNotifyNetworkRegistrationStatusChangeInd(iError,
+				            iRegistrationStatus);
+	}
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atnotifycellinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,164 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATNotifyCellInfo
+
+//user include
+#include "atnotifycellinfo.h"
+
+_LIT8(KATNotifyCellInfo,"+CCED:*");
+
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNotifyCellInfo* CATNotifyCellInfo::NewL(CGlobalPhonemanager& aGloblePhone,
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATNotifyCellInfo* self = CATNotifyCellInfo::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNotifyCellInfo* CATNotifyCellInfo::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATNotifyCellInfo* self = new (ELeave) CATNotifyCellInfo(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::~CATNotifyCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNotifyCellInfo::~CATNotifyCellInfo()
+	{
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNotifyCellInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	RemoveAllExpectString();
+	AddExpectStringL(KATNotifyCellInfo);
+	Enable();
+	}
+
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::CATNotifyCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATNotifyCellInfo::CATNotifyCellInfo(CGlobalPhonemanager& aGloblePhone,
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+							   :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::CATNotifyCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNotifyCellInfo::Enable()
+	{
+	AddUnsolicitedAtCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::CATNotifyCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNotifyCellInfo::Disable()
+	{
+	RemoveAtCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNotifyCellInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,CurrentLine());
+	ClearCurrentLine();
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if( array[0].MatchF(KATNotifyCellInfo)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	TInt number = 0;
+	TInt val = 0;
+	TLex8 lexBasic(array[5]);
+	lexBasic.Val(val);
+	iCellInfo.iNmr[number].iBSIC = val;
+	TLex8 lexArfcn(array[6]);
+	lexArfcn.Val(val);
+	iCellInfo.iNmr[number].iARFCN = val;
+	TLex8 lexRxlev(array[7]);
+	lexRxlev.Val(val);
+	iCellInfo.iNmr[number].iRxLEV = val;
+	
+	
+    for(TInt i = 14;i < Count-2;i++ )
+    	{
+    	number++;
+    	i = i + 4;
+    	TInt val = 0;
+    	TLex8 lexBasic(array[i]);
+    	lexBasic.Val(val);
+    	i++;
+    	iCellInfo.iNmr[number].iBSIC = val;
+    	TLex8 lexArfcn(array[i]);
+    	lexArfcn.Val(val);
+    	iCellInfo.iNmr[number].iARFCN = val;
+    	i++;
+    	TLex8 lexRxlev(array[i]);
+    	lexRxlev.Val(val);
+    	iCellInfo.iNmr[number].iRxLEV = val;
+    	}
+	TLex8 lexTa(array[Count-2]);
+	lexTa.Val(val);
+    iCellInfo.iTA = val;
+	
+	
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+// ---------------------------------------------------------------------------
+// CATNotifyCellInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATNotifyCellInfo::EventSignal(TAtEventSource /*aEventSource*/, TInt /*aStatus*/)
+	{
+	iCtsyDispatcherCallback.CallbackPhoneNotifyCellInfoChangedInd(iError,iCellInfo);
+	}
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atselectnetwork.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,190 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATSelectNetwork
+
+#include "atselectnetwork.h"
+#include "mslogger.h"
+
+_LIT8(KSelectNetworkCommand,"AT+COPS=1,2,%d\r");
+// Class CATSelectNetwork
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSelectNetwork* CATSelectNetwork::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATSelectNetwork* self = new(ELeave) CATSelectNetwork(aGloblePhone,
+			                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::CATSelectNetwork
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSelectNetwork::CATSelectNetwork(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iCommandRunning = EFalse;
+	iCommandCancel = EFalse;
+	iCommandSetBack = EFalse;
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::~CATSelectNetwork
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSelectNetwork::~CATSelectNetwork()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::StartRequest()
+	{
+	iCommandRunning = ETrue;
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CATSelectNetwork::ExecuteCommand called"));
+	TBuf<5> tmpbuf;
+	tmpbuf.Append(iNetworkManualSelection.iCountry);
+	tmpbuf.Append(iNetworkManualSelection.iNetwork);
+    TLex lex(tmpbuf);
+    TInt tmpNum;
+    lex.Val( tmpNum );
+	LOGTEXT2(_L8("tmpNum=%d"),tmpNum);
+	iTxBuffer.Format(KSelectNetworkCommand,tmpNum);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::CancelCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::CancelCommand()
+	{	
+	iCommandCancel = ETrue;
+	}
+
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::ExecuteSetBackCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::ExecuteSetBackCommand()
+	{
+	LOGTEXT(_L8("CATSelectNetwork::ExecuteSetBackCommand called"));
+	TBuf<5> tmpbuf;
+	tmpbuf.Append(iPhoneGlobals.iPhoneStatus.iCurrentNetwork.iCountryCode);
+	tmpbuf.Append(iPhoneGlobals.iPhoneStatus.iCurrentNetwork.iNetworkId);
+    TLex lex(tmpbuf);
+    TInt tmpNum;
+    lex.Val( tmpNum );
+	LOGTEXT2(_L8("tmpNum=%d"),tmpNum);
+	iTxBuffer.Format(KSelectNetworkCommand,tmpNum);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::SetNetworkSelection
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::SetNetworkSelection(const RMobilePhone::TMobilePhoneNetworkManualSelection& aNetworkManualSelection)
+	{
+	iNetworkManualSelection = aNetworkManualSelection;
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetwork::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetwork::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	if(iCommandCancel) //User runing cancel cmd
+		{
+		//We should set back network when selected network success
+		if((KErrNone ==aStatus)&&(!iCommandSetBack))
+			{
+			iCommandSetBack = ETrue;
+			//Set parameter
+			ExecuteSetBackCommand();
+			return;
+			}
+		if((iCommandSetBack)&&(KErrNone !=aStatus))
+			{
+			//Cancel fail because set back fail 
+			//Current Network Changed
+			iCtsyDispatcherCallback.CallbackPhoneSelectNetworkCancelComp(aStatus);
+			}
+		else
+			{
+			//First selectrd fail or set back success
+			//Cancel OK
+			iCtsyDispatcherCallback.CallbackPhoneSelectNetworkCancelComp(KErrNone);
+			}
+		}
+	else
+		{
+		iCtsyDispatcherCallback.CallbackPhoneSelectNetworkComp(aStatus);
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCommandRunning = EFalse;
+	iCommandCancel = EFalse;
+	iCommandSetBack = EFalse;
+	}
+//
+// End of file
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atselectnetworkmode.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,143 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATSelectNetworkMode
+
+
+#include "atselectnetworkmode.h"
+#include "mslogger.h"
+
+
+_LIT8(KATSelectNetworkMode,"AT+COPS=%d\r");
+// Class CATSelectNetworkMode
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSelectNetworkMode* CATSelectNetworkMode::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATSelectNetworkMode* self = new(ELeave) CATSelectNetworkMode(aGloblePhone,
+			                                                      aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::CATSelectNetworkMode
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSelectNetworkMode::CATSelectNetworkMode(CGlobalPhonemanager& aGloblePhone, 
+	                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetworkMode::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::~CATSelectNetworkMode
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSelectNetworkMode::~CATSelectNetworkMode()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetworkMode::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetworkMode::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CATSelectNetworkMode::ExecuteCommand called"));
+	iTxBuffer.Format(KATSelectNetworkMode,iNetworkSelection);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetworkMode::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::SetNetworkSelection
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetworkMode::SetNetworkSelection(const TInt aNetworkSelection)
+	{
+	iNetworkSelection = aNetworkSelection;
+	}
+// ---------------------------------------------------------------------------
+// CATSelectNetworkMode::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSelectNetworkMode::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	switch (iNetworkSelection)
+		{
+	case 0:
+		iCtsyDispatcherCallback.CallbackPhoneSetNetworkSelectionSettingComp(aStatus, 
+				                RMobilePhone::ENetworkSelectionAutomatic);
+		break;
+	case 1:
+		iCtsyDispatcherCallback.CallbackPhoneSetNetworkSelectionSettingComp(aStatus, 
+				                RMobilePhone::ENetworkSelectionManual);
+		break;
+	default:
+		iCtsyDispatcherCallback.CallbackPhoneSetNetworkSelectionSettingComp(aStatus, 
+				                RMobilePhone::ENetworkSelectionUnknown);
+		break;
+		}
+	}
+//
+// End of file
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/atsetnotifycell.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,130 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CATSetNotifyCellInfo
+
+#include "atsetnotifycell.h"
+#include "mslogger.h"
+#include "atgetphonecellinfo.h"
+#include "atnotifycellinfo.h"
+
+
+_LIT8(KATSetCellCommand, "AT+CCED=0,1\r");
+// Class CATSetNotifyCellInfo
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSetNotifyCellInfo* CATSetNotifyCellInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATSetNotifyCellInfo* self = new(ELeave) CATSetNotifyCellInfo(aGloblePhone,
+			                                                      aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::CATSetNotifyCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSetNotifyCellInfo::CATSetNotifyCellInfo(CGlobalPhonemanager& aGloblePhone, 
+	                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSetNotifyCellInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::~CATSetNotifyCellInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATSetNotifyCellInfo::~CATSetNotifyCellInfo()
+	{
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSetNotifyCellInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSetNotifyCellInfo::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KATSetCellCommand);
+	Write();
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSetNotifyCellInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+//// ---------------------------------------------------------------------------
+//// CATSetNotifyCellInfo::GetErrorValue
+//// other items were commented in a header
+//// ---------------------------------------------------------------------------
+TInt CATSetNotifyCellInfo::GetErrorValue()
+	{
+	return iError;
+	}
+// ---------------------------------------------------------------------------
+// CATSetNotifyCellInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATSetNotifyCellInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone == aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+		    {
+		    return;
+		    }
+		}
+	
+	CAtCommandBase::Complete();
+	iCtsyDispatcherCallback.CallbackPhoneRegisterCellInfoChangeNotificationComp(aStatus);
+	if(iIpcCompleteObserver)
+	    {
+	    iIpcCompleteObserver->NotifyIpcRequestComplete(iIpcId);
+	    }
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getcurrentnetworkinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,347 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CGetCurrentNetworkInfo
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+#include "getcurrentnetworkinfo.h"
+#include "mslogger.h"
+#include "atgetnetworkinfo.h"
+
+// define the AT command format
+_LIT8(KATSetFormatForLongName,  "AT+COPS=3,0\r");
+_LIT8(KATSetFormatForShortName, "AT+COPS=3,1\r");
+_LIT8(KATSetNumbericFormat,     "AT+COPS=3,2\r");
+
+// Class CGetCurrentNetworkInfo
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetCurrentNetworkInfo* CGetCurrentNetworkInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CGetCurrentNetworkInfo* self = new(ELeave) CGetCurrentNetworkInfo(aGloblePhone,
+			                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::CGetCurrentNetworkInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetCurrentNetworkInfo::CGetCurrentNetworkInfo(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::ConstructL()
+	{
+	LOGTEXT(_L8("[Ltsy Phone Control] Starting CATAnswer::ConstructL"));
+	iState = EATUnknown;
+	iATNetworkInfo = CATNetworkInfo::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATHelperCommand = CATHelperCommand::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::~CGetCurrentNetworkInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetCurrentNetworkInfo::~CGetCurrentNetworkInfo()
+	{
+	LOGTEXT(_L8("[Ltsy Phone Control] Starting CATAnswer::~CGetCurrentNetworkInfo()"));
+	delete iATHelperCommand;
+	iATHelperCommand = NULL;
+	delete iATNetworkInfo;
+	iATNetworkInfo = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+		{
+		return;
+		}
+	
+	switch(iState)
+		{
+		case EATSetLongFormat:
+		    LOGTEXT(_L8("[Ltsy Phone Control] complete EATSetLongFormat"));
+		    CompeteATCommand(iATHelperCommand);
+		    if(aStatus != KErrNone)
+		        {
+		        HandleGetCurNetworkError(aStatus);
+		        }
+		    else 
+		        {
+		        aStatus = iATHelperCommand->GetErrorValue();
+		        if(aStatus != KErrNone)
+		            {
+		            HandleGetCurNetworkError(aStatus);
+		            }
+		        else
+		            {
+		            iState = EATGetLongName;
+		            GetNetworkLongName();
+		            }
+		        }
+			break;
+			
+		case EATGetLongName:
+		    LOGTEXT(_L8("[Ltsy Phone Control] complete EATGetLongName"));
+		    CompeteATCommand(iATNetworkInfo);
+		    if(aStatus != KErrNone)
+		        {
+		        HandleGetCurNetworkError(aStatus);
+		        }
+		    else
+				{
+				TInt err = iATNetworkInfo->GetErrorValue();
+				if(err != KErrNone)
+				    {
+				    HandleGetCurNetworkError(err);
+				    }
+				else
+				    {
+				    iState = EATSetShortFormat;
+				    SetShortNameFormat();
+				    }
+				}
+			break;
+			
+		case EATSetShortFormat:
+		    LOGTEXT(_L8("[Ltsy Phone Control] complete EATSetShortFormat"));
+		    CompeteATCommand(iATHelperCommand);
+            if(aStatus != KErrNone)
+                {
+                HandleGetCurNetworkError(aStatus);
+                }
+            else 
+                {
+                aStatus = iATHelperCommand->GetErrorValue();
+                if(aStatus != KErrNone)
+                    {
+                    HandleGetCurNetworkError(aStatus);
+                    }
+                else
+                    {
+                    iState = EATGetShortName;
+                    GetNetworkShortName();
+                    }
+                }		    
+		    break;
+		    
+		case EATGetShortName:
+		    LOGTEXT(_L8("[Ltsy Phone Control] complete EATGetShortName"));
+            CompeteATCommand(iATNetworkInfo);
+            if(aStatus != KErrNone)
+                {
+                HandleGetCurNetworkError(aStatus);
+                }
+            else
+                {
+                TInt err = iATNetworkInfo->GetErrorValue();
+                if(err != KErrNone)
+                    {
+                    HandleGetCurNetworkError(err);
+                    }
+                else
+                    {
+                    iState = EATSetNumbericFormat;
+                    SetNumbericFormat();
+                    }
+                }
+		    break;
+		case EATSetNumbericFormat:
+		    LOGTEXT(_L8("[Ltsy Phone Control] complete EATSetNumbericFormat"));
+            CompeteATCommand(iATHelperCommand);
+            if(aStatus != KErrNone)
+                {
+                HandleGetCurNetworkError(aStatus);
+                }
+            else 
+                {
+                aStatus = iATHelperCommand->GetErrorValue();
+                if(aStatus != KErrNone)
+                    {
+                    HandleGetCurNetworkError(aStatus);
+                    }
+                else
+                    {
+                    iState = EATGetCountryCodeAndNetwrokId;
+                    GetCountryCodeAndNetworkId();
+                    }
+                }           
+            break;
+        case EATGetCountryCodeAndNetwrokId:
+            LOGTEXT(_L8("[Ltsy Phone Control] complete EATGetCountryCodeAndNetwrokId"));
+            CompeteATCommand(iATNetworkInfo);
+            if(aStatus != KErrNone)
+                {
+                HandleGetCurNetworkError(aStatus);
+                }
+            else
+                {
+                TInt err = iATNetworkInfo->GetErrorValue();
+                if(err != KErrNone)
+                    {
+                    HandleGetCurNetworkError(err);
+                    }
+                else
+                    {
+                    iState = EATUnknown;
+                    HandleGetCurNetworkComplete();
+                    }
+                }
+            break;
+            
+		default:
+			break;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::StartRequest()
+	{
+	LOGTEXT(_L8("[Ltsy Phone Control] Starting CATAnswer::StartRequest()"));
+	iState = EATSetLongFormat;
+	SetLongNameFormat();
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::StartATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->SetAtCommandObserver(this);
+	aAtCommand->StartRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::EndATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::CompeteATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->RemoveAtCommandObserver();
+	aAtCommand->Complete();
+	}
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::SetLongNameFormat
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::SetLongNameFormat()
+    {
+    iATHelperCommand->SetAtCommandString(KATSetFormatForLongName);
+    StartATCommand(iATHelperCommand);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::SetLongNameFormat
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::GetNetworkLongName()
+    {
+    StartATCommand(iATNetworkInfo);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::SetLongNameFormat
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::SetShortNameFormat()
+    {
+    iATHelperCommand->SetAtCommandString(KATSetFormatForShortName);
+    StartATCommand(iATHelperCommand);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::GetNetworkShortName
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::GetNetworkShortName()
+    {
+    StartATCommand(iATNetworkInfo);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::SetShortNumbericFormat
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::SetNumbericFormat()
+    {
+    iATHelperCommand->SetAtCommandString(KATSetNumbericFormat);
+    StartATCommand(iATHelperCommand);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::SetShortNumbericFormat
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::GetCountryCodeAndNetworkId()
+    {
+    StartATCommand(iATNetworkInfo);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::HandleGetCurNetworkError
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::HandleGetCurNetworkError(TInt aError)
+    {
+    iCtsyDispatcherCallback.CallbackPhoneGetCurrentNetworkInfoComp(aError,
+                                    iNetworkInfo, 
+                                    iPhoneGlobals.iPhoneStatus.iLocationArea);
+    }
+
+// ---------------------------------------------------------------------------
+// CGetCurrentNetworkInfo::HandleGetCurNetworkComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetCurrentNetworkInfo::HandleGetCurNetworkComplete()
+    {
+    LOGTEXT(_L8("[Ltsy Phone Control] CGetCurrentNetworkInfo::HandleGetCurNetworkComplete()"));
+    iNetworkInfo = iATNetworkInfo->GetNetWorkInfo();
+    iPhoneGlobals.iPhoneStatus.iCurrentNetwork = iNetworkInfo;
+    iPhoneGlobals.iEventSignalActive = EFalse;
+    iCtsyDispatcherCallback.CallbackPhoneGetCurrentNetworkInfoComp(KErrNone,
+                            iNetworkInfo, 
+                            iPhoneGlobals.iPhoneStatus.iLocationArea);
+    
+    if(iIpcCompleteObserver)
+        {
+        iIpcCompleteObserver->NotifyIpcRequestComplete(MLtsyDispatchPhoneGetCurrentNetworkInfo::KLtsyDispatchPhoneGetCurrentNetworkInfoApiId);
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getfdnstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,165 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CGetFdnStatus
+
+#include "getfdnstatus.h"
+#include "mslogger.h"
+#include "atgetfdnsupport.h"
+#include "atgetfdnstatus.h"
+
+// Class CGetFdnStatus
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetFdnStatus* CGetFdnStatus::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CGetFdnStatus* self = new(ELeave) CGetFdnStatus(aGloblePhone,
+			                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::CGetFdnStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetFdnStatus::CGetFdnStatus(CGlobalPhonemanager& aGloblePhone, 
+	                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::ConstructL()
+	{
+	iATCommandName = EATNone;
+	iATGetFdnStatus = CATGetFdnStatus::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATGetFdnSupport = CATGetFdnSupport::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::~CGetFdnStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetFdnStatus::~CGetFdnStatus()
+	{
+	delete iATGetFdnStatus;
+	iATGetFdnStatus = NULL;
+	delete iATGetFdnSupport;
+	iATGetFdnSupport = NULL;
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+		{
+		return;
+		}
+	switch(iATType)
+		{
+		case ELtsyAT_Phone_CheckFdnSupport:
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATGetFdnSupport->GetErrorValue();
+				}
+			iATGetFdnSupport->RemoveAtCommandObserver();
+			FdnSupportComplete(aStatus);
+			break;
+		case ELtsyAT_Phone_GetFdnStatus: 
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATGetFdnStatus->GetErrorValue();
+				}
+			FdnStatusComplete(aStatus);
+			EndATCommand(iATGetFdnStatus);
+			delete iATGetFdnStatus;
+			iATGetFdnStatus = NULL;
+			iPhoneGlobals.iEventSignalActive = EFalse;
+			break;
+		default:
+			break;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::StartRequest()
+	{
+	StartATCommand(iATGetFdnSupport);
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::HandleFdnSupport
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::FdnSupportComplete(const TInt aError)
+	{
+	if((KErrNone == aError)&&(iATGetFdnSupport->GetFdnSupport()))
+		{	
+		EndATCommand(iATGetFdnSupport);
+		StartATCommand(iATGetFdnStatus);
+		}
+	else
+		{
+		EndATCommand(iATGetFdnSupport);
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhoneGetFdnStatusComp(aError,RMobilePhone::EFdnUnknown);
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::FdnStatusComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::FdnStatusComplete(const TInt aError)
+	{
+	if((KErrNone == aError)&&(iATGetFdnStatus->GetFdnStatus()))
+		{
+		iCtsyDispatcherCallback.CallbackPhoneGetFdnStatusComp(aError,RMobilePhone::EFdnActive);
+		}
+	else
+		{
+		iCtsyDispatcherCallback.CallbackPhoneGetFdnStatusComp(aError,RMobilePhone::EFdnNotActive);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::StartATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->SetAtCommandObserver(this);
+	iATType = aAtCommand->AtType();
+	aAtCommand->StartRequest();
+	}
+// ---------------------------------------------------------------------------
+// CGetFdnStatus::EndATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetFdnStatus::EndATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->RemoveAtCommandObserver();
+	aAtCommand->Complete();
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getoperatorname.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,195 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CGetOperatorNmae
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+#include "getoperatorname.h"
+#include "mslogger.h"
+#include "atgetnetworkinfo.h"
+
+
+_LIT8(KATSetFormatForOperater, "AT+COPS=3,0\r");
+// Class CGetOperatorNmae
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetOperatorNmae* CGetOperatorNmae::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CGetOperatorNmae* self = new(ELeave) CGetOperatorNmae(aGloblePhone,
+			                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::CGetOperatorNmae
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetOperatorNmae::CGetOperatorNmae(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::ConstructL()
+	{
+	iATCommandName = EATNone;
+	iRequestIpc = 0;
+	iATHelperCommand = CATHelperCommand::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATNetworkInfo = CATNetworkInfo::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::~CGetOperatorNmae
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetOperatorNmae::~CGetOperatorNmae()
+	{
+	delete iATHelperCommand;
+	iATHelperCommand = NULL;
+	delete iATNetworkInfo;
+	iATNetworkInfo = NULL;
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+		{
+		return;
+		}
+	switch(iATType)
+		{
+		case ELtsyAT_Phone_SetOperFormat: 
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATHelperCommand->GetErrorValue();
+				}
+			SetOperFormatComplete(aStatus);
+			break;
+		case ELtsyAT_Phone_NwkInfo:
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATNetworkInfo->GetErrorValue();
+				if(KErrNone == aStatus)
+					{
+					iNetworkInfo = iATNetworkInfo->GetNetWorkInfo();
+					}
+				}
+			iPhoneGlobals.iEventSignalActive = EFalse;
+			iATNetworkInfo->RemoveAtCommandObserver();
+			EndATCommand(iATNetworkInfo);
+			CtsyDispatcherCallBack(aStatus);
+			break;
+		default:
+			break;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::StartRequest()
+	{
+	iATHelperCommand->SetAtCommandObserver(this);
+	iATHelperCommand->SetAtCommandString(KATSetFormatForOperater);
+	iATHelperCommand->ExecuteCommand();
+	iATType = ELtsyAT_Phone_SetOperFormat;
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::SetRequestTypeL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::SetRequestTypeL(TInt aIpc)
+	{
+	iRequestIpc = aIpc;
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::SetOperFormatComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::SetOperFormatComplete(const TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		EndATCommand(iATHelperCommand);
+		StartATCommand(iATNetworkInfo);
+		}
+	else
+		{
+		EndATCommand(iATHelperCommand);
+		CtsyDispatcherCallBack(aError);
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::CtsyDispatcherCallBackL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::CtsyDispatcherCallBack(const TInt aError)
+	{
+	switch(iRequestIpc)
+		{
+		case MLtsyDispatchPhoneGetOperatorName::KLtsyDispatchPhoneGetOperatorNameApiId:
+			iCtsyDispatcherCallback.CallbackPhoneGetOperatorNameComp(aError,  
+					                RMmCustomAPI::EOperatorNameProgrammableLatin, 
+					                iNetworkInfo.iLongName);
+			break;
+		case MLtsyDispatchPhoneGetNetworkProviderName::KLtsyDispatchPhoneGetNetworkProviderNameApiId:
+			iCtsyDispatcherCallback.CallbackPhoneGetNetworkProviderNameComp(aError,  
+					                iNetworkInfo.iLongName);
+			break;
+		case MLtsyDispatchPhoneGetServiceProviderName::KLtsyDispatchPhoneGetServiceProviderNameApiId:
+			{
+			RMobilePhone::TMobilePhoneServiceProviderNameV2 ServiceProvider;
+			ServiceProvider.iSPName = iNetworkInfo.iLongName;
+			iCtsyDispatcherCallback.CallbackPhoneGetServiceProviderNameComp(aError,ServiceProvider);
+			}
+			//CallbackPhoneGetServiceProviderNameComp(TInt aError, const RMobilePhone::TMobilePhoneServiceProviderNameV2& aServiceProvider);
+			break;
+		default:
+			break;
+			
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::StartATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->SetAtCommandObserver(this);
+	iATType = aAtCommand->AtType();
+	aAtCommand->StartRequest();
+	}
+// ---------------------------------------------------------------------------
+// CGetOperatorNmae::EndATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetOperatorNmae::EndATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->RemoveAtCommandObserver();
+	aAtCommand->Complete();
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/getphoneid.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,221 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CGetPhoneID
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+#include "getphoneid.h"
+#include "mslogger.h"
+#include "atgetimei.h"
+#include "atgetmanufacturer.h"
+#include "atgetmodel.h"
+#include "atgetrevision.h"
+
+
+// Class CGetPhoneID
+// ---------------------------------------------------------------------------
+// CGetPhoneID::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetPhoneID* CGetPhoneID::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CGetPhoneID* self = new(ELeave) CGetPhoneID(aGloblePhone,
+			                                    aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::CGetPhoneID
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetPhoneID::CGetPhoneID(CGlobalPhonemanager& aGloblePhone, 
+	                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::ConstructL()
+	{
+	iATGetImei = CATGetImei::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATGetManufacturer = CATGetManufacturer::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATGetModel = CATGetModel::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATGetRevision = CATGetRevision::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::~CGetPhoneID
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CGetPhoneID::~CGetPhoneID()
+	{
+	delete iATGetImei;
+	iATGetImei = NULL;
+	delete iATGetManufacturer;
+	iATGetManufacturer = NULL;
+	delete iATGetModel;
+	iATGetModel = NULL;
+	delete iATGetRevision;
+	iATGetRevision = NULL;
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+		{
+		return;
+		}
+	switch(iATType)
+		{
+		case ELtsyAT_Phone_GetImei:
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATGetImei->GetErrorValue();
+				}
+			GetImeiComplete(aStatus);
+			break;
+		case ELtsyAT_Phone_GetManufacturer: 
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATGetManufacturer->GetErrorValue();
+				}
+			GetManufacturerComplete(aStatus);
+			break;
+		case ELtsyAT_Phone_GetModel:
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATGetModel->GetErrorValue();
+				}
+			GetModelComplete(aStatus);
+			break;
+		case ELtsyAT_Phone_GetRevision:
+			if((KErrNone == aStatus)&&(aEventSource == EReadCompletion))
+				{
+				aStatus = iATGetRevision->GetErrorValue();
+				if(KErrNone == aStatus)
+					{
+					RMobilePhone::TMobilePhoneIdentityV1 PhoneId;
+					PhoneId = iATGetRevision->GetPhoneRevision();
+					iPhoneId.iRevision = PhoneId.iRevision;
+					}
+				}
+			iCtsyDispatcherCallback.CallbackPhoneGetPhoneIdComp(aStatus,iPhoneId);
+			EndATCommand(iATGetRevision);
+			iPhoneGlobals.iEventSignalActive = EFalse;
+			break;
+		default:
+			break;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::StartRequest()
+	{	
+	StartATCommand(iATGetImei);
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::GetImeiComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::GetImeiComplete(const TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		RMobilePhone::TMobilePhoneIdentityV1 PhoneId;
+		PhoneId = iATGetImei->GetPhoneImei();
+		iPhoneId.iSerialNumber = PhoneId.iSerialNumber;
+		EndATCommand(iATGetImei);
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		StartATCommand(iATGetManufacturer);
+		}
+	else
+		{
+		EndATCommand(iATGetImei);
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhoneGetPhoneIdComp(aError,iPhoneId);
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::GetManufacturerComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::GetManufacturerComplete(const TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		RMobilePhone::TMobilePhoneIdentityV1 PhoneId;
+		PhoneId = iATGetManufacturer->GetPhoneManufacturer();
+		iPhoneId.iManufacturer = PhoneId.iManufacturer;
+		EndATCommand(iATGetManufacturer);
+		StartATCommand(iATGetModel);
+		}
+	else
+		{
+		EndATCommand(iATGetManufacturer);
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhoneGetPhoneIdComp(aError,iPhoneId);
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::GetModelComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::GetModelComplete(const TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		RMobilePhone::TMobilePhoneIdentityV1 PhoneId;
+		PhoneId = iATGetModel->GetPhoneModel();
+		iPhoneId.iModel = PhoneId.iModel;
+		EndATCommand(iATGetModel);
+		StartATCommand(iATGetRevision);
+		}
+	else
+		{
+		EndATCommand(iATGetModel);
+		iCtsyDispatcherCallback.CallbackPhoneGetPhoneIdComp(aError,iPhoneId);
+		}
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::StartATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->SetAtCommandObserver(this);
+	iATType = aAtCommand->AtType();
+	aAtCommand->StartRequest();
+	}
+// ---------------------------------------------------------------------------
+// CGetPhoneID::EndATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CGetPhoneID::EndATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->RemoveAtCommandObserver();
+	aAtCommand->Complete();
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/initializephone.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,427 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CInitializePhone
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+#include "initializephone.h"
+#include "mslogger.h"
+#include "atgetmodemstatus.h"
+#include "atgetnetworkregistrationstatus.h"
+#include "atgetsimstatusready.h"
+#include "getcurrentnetworkinfo.h"
+#include "atgetnetworkinfo.h"
+#include "atgetsignalstrength.h"
+#include "atgetbatteryinfo.h"
+#include "athelpercommand.h"
+#include "notifybatteryandsignal.h"
+#include "commengine.h"
+#include "atnetworkregstatuschange.h"
+
+_LIT8(KATSMSSetting1,              "AT+CMGF=0\r");
+_LIT8(KATSMSSetting2,              "AT+CNMI=2,2\r");
+_LIT8(KATNwkRegistration,          "AT+CREG=1\r");
+_LIT8(KATGprsNwkRegistration,      "AT+CGREG=1\r");
+_LIT8(KATUnsolicitedWind,          "AT+WIND=16383\r");
+_LIT8(KATSetTDRSingal,             "AT&D1\r");
+// Class CInitializePhone
+// ---------------------------------------------------------------------------
+// CInitializePhone::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CInitializePhone* CInitializePhone::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+	                                     CATNetworkRegStatusChange& aNtwkRegStatusChange,
+	                                     CNotifyBatteryAndSignal& aNotifyBatteryAndSignal)
+	{
+	CInitializePhone* self = new(ELeave) CInitializePhone(aGloblePhone,
+			                                              aCtsyDispatcherCallback,
+			                                              aNtwkRegStatusChange,
+			                                              aNotifyBatteryAndSignal);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::CInitializePhone
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CInitializePhone::CInitializePhone(CGlobalPhonemanager& aGloblePhone, 
+	                               CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+	                               CATNetworkRegStatusChange& aNtwkRegStatusChange,
+	                               CNotifyBatteryAndSignal& aNotifyBatteryAndSignal)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback),
+		iNtwkRegStatusChange(aNtwkRegStatusChange),
+		iNotifyBatteryAndSignal(aNotifyBatteryAndSignal)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::ConstructL()
+	{
+	iATGetCurNetworkInfo = CGetCurrentNetworkInfo::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATGetCurNetworkInfo->SetIpcRequestCompleteObserver(this);
+	
+	iATHelperCommand = CATHelperCommand::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	
+	iATGetModemStatus = CATGetModemStatus::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	
+	iATSIMCard = CATSIMCard::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	
+	iNetworkRegStatus = CATNetworkRegistration::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iNetworkRegStatus->SetIpcRequestCompleteObserver(this);
+	iNetworkRegStatus->SetIpcId(MLtsyDispatchPhoneGetNetworkRegistrationStatus::KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId);
+	
+	iATGetSignal = CATGetSignal::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	
+	iATGetBattery = CATGetBattery::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	
+	iPendingRequestList.Reset();
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::~CInitializePhone
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CInitializePhone::~CInitializePhone()
+	{
+	delete iATGetModemStatus;
+	iATGetModemStatus = NULL;
+
+	delete iNetworkRegStatus;
+	iNetworkRegStatus = NULL;
+
+	delete iATSIMCard;
+	iATSIMCard = NULL;
+
+	delete iATGetCurNetworkInfo;
+    
+	delete iATGetSignal;
+	iATGetSignal = NULL;
+
+	delete iATGetBattery;
+	iATGetBattery = NULL;
+
+	delete iATHelperCommand;
+	iATHelperCommand = NULL;
+	
+	iPendingRequestList.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus)
+	{
+	// we are not going to handle the event of EWriteCompletion if no error was returned
+	if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+		{
+		return;
+		}
+	
+	TInt err = aStatus;
+	switch(iATType)
+		{
+		case ELtsyAT_Phone_ModemStatus:
+		    if(aStatus == KErrNone)
+		        {
+		        err = iATGetModemStatus->GetErrorValue();
+		        }
+		    
+            ModemStatusComplete(err);
+            CompleteATCommand(iATGetModemStatus);
+			break;
+			
+		case ELtsyAT_Phone_NwkRegStatus: 
+			if(KErrNone == aStatus)
+				{
+				err = iNetworkRegStatus->GetErrorValue();
+				}
+			iCtsyDispatcherCallback.CallbackPhoneGetNetworkRegistrationStatusComp(err,
+								    iPhoneGlobals.iPhoneStatus.iRegistrationStatus);
+			CompleteATCommand(iNetworkRegStatus);
+			break;
+			
+		case ELtsyAT_Phone_SimCardStatus: 
+			if(KErrNone == aStatus)
+				{
+				err = iATSIMCard->GetErrorValue();
+				}
+			iCtsyDispatcherCallback.CallbackPhoneBootNotifySimStatusReadyComp(err);
+			CompleteATCommand(iATSIMCard);
+			break;
+			
+		case ELtsyAT_Phone_GetSignal: 
+			if(KErrNone == aStatus)
+				{
+				err = iATGetSignal->GetErrorValue();
+				}
+			GetSignalComplete(err);
+			CompleteATCommand(iATGetSignal);
+			break;
+			
+		case ELtsyAT_Phone_GetBattery:
+			if(KErrNone == aStatus)
+				{
+				err = iATGetBattery->GetErrorValue();
+				}
+			GetBatteryComplete(err);
+			CompleteATCommand(iATGetBattery);
+			break;
+			
+		case ELtsyAT_Phone_SMSSetting1:
+			ExecuteNextATHelpCommand(KATSMSSetting2,ELtsyAT_Phone_SMSSetting2);
+			break;
+			
+		case ELtsyAT_Phone_SMSSetting2:
+			ExecuteNextATHelpCommand(KATNwkRegistration,ELtsyAT_Phone_RegistNwk);
+			break;
+		case ELtsyAT_Phone_RegistNwk:
+			ExecuteNextATHelpCommand(KATGprsNwkRegistration,ELtsyAT_Phone_GPRSRegNwk);
+			break;
+			
+		case ELtsyAT_Phone_GPRSRegNwk:
+			ExecuteNextATHelpCommand(KATSetTDRSingal,ELtsyAT_Phone_SetTDRSingal);
+			break;
+			
+		case ELtsyAT_Phone_SetTDRSingal:
+			ExecuteNextATHelpCommand(KATUnsolicitedWind,ELtsyAT_Phone_SetWind);
+			break;
+			
+		case ELtsyAT_Phone_SetWind:
+			iPhoneGlobals.iEventSignalActive = EFalse;
+			if(iPhoneGlobals.iPhoneStatus.iInitStatus == EPhoneInitialising)
+				{
+				iPhoneGlobals.iPhoneStatus.iInitStatus = EPhoneInitialised;
+				}
+			CompleteATCommand(iATHelperCommand);
+			break;
+			
+		default:
+			break;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::StartRequest()
+	{
+	StartATCommand(iATGetModemStatus);
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::ExecuteNextRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::ExecutePendingRequest()
+	{
+	if(iPendingRequestList.Count() > 0 && !iIsPendingRequestStillRunning)
+		{
+		// Mark if the next pending request should be run immediately. 
+		// There is a case: If we have alreay known the passed-back results for a certain API, so when such API passed by, 
+		// what is going to to is to complete this IPC request immediately synchronously.
+		TBool nextPendingReqShouldBeExecutedImmediatley = EFalse;
+		
+		// get the IPC number
+		TInt ipc = iPendingRequestList[0];
+		
+		// remove this request from the pending request list
+		iPendingRequestList.Remove(0);
+		
+		switch(ipc)
+			{
+			case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId:				
+				StartATCommand(iATSIMCard);
+				break;
+				
+			case MLtsyDispatchPhoneGetNetworkRegistrationStatus::KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId:
+			    iNtwkRegStatusChange.Disable();
+				StartATCommand(iNetworkRegStatus);
+				break;
+				
+			case MLtsyDispatchPhoneGetCurrentNetworkInfo::KLtsyDispatchPhoneGetCurrentNetworkInfoApiId: 
+				iATGetCurNetworkInfo->StartRequest();
+				break;
+				
+			case MLtsyDispatchPhoneGetNetworkMode::KLtsyDispatchPhoneGetNetworkModeApiId: 
+				iCtsyDispatcherCallback.CallbackPhoneGetNetworkModeComp(0,RMobilePhone::ENetworkModeGsm);
+				nextPendingReqShouldBeExecutedImmediatley = ETrue;
+				break;
+				
+			case MLtsyDispatchPhoneGetNitzInfo::KLtsyDispatchPhoneGetNitzInfoApiId:
+				iCtsyDispatcherCallback.CallbackPhoneGetNitzInfoComp(0,iPhoneGlobals.iPhoneStatus.iMobilePhoneNITZ);
+				nextPendingReqShouldBeExecutedImmediatley = ETrue;
+				break;
+				
+			case MLtsyDispatchPhoneGetSignalStrength::KLtsyDispatchPhoneGetSignalStrengthApiId: 
+				StartATCommand(iATGetSignal);
+				break;
+				
+			case MLtsyDispatchPhoneGetBatteryInfo::KLtsyDispatchPhoneGetBatteryInfoApiId: 
+				StartATCommand(iATGetBattery);
+				break;
+				
+			case MLtsyDispatchPhoneGetHomeNetwork::KLtsyDispatchPhoneGetHomeNetworkApiId: 
+				iCtsyDispatcherCallback.CallbackPhoneGetHomeNetworkComp(0,iNetworkInfo);
+				nextPendingReqShouldBeExecutedImmediatley = ETrue;
+				break;
+				
+			case MLtsyDispatchPhoneSimRefreshRegister::KLtsyDispatchPhoneSimRefreshRegisterApiId: 
+				iCtsyDispatcherCallback.CallbackPhoneSimRefreshRegisterComp(0);
+				iATHelperCommand->SetAtCommandObserver(this);
+				ExecuteNextATHelpCommand(KATSMSSetting1,ELtsyAT_Phone_SMSSetting1);
+				break;
+				
+			default:
+				break;
+			}
+		
+		// if the request was complete, we need to call ExecutePendingRequest() to execute next pending request again 
+        if(nextPendingReqShouldBeExecutedImmediatley)
+            {
+            ExecutePendingRequest();
+            }
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::NotifyIpcRequestComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::NotifyIpcRequestComplete(TInt aIpcId)
+    {
+    if(aIpcId == MLtsyDispatchPhoneGetCurrentNetworkInfo::KLtsyDispatchPhoneGetCurrentNetworkInfoApiId)
+        {
+        NetworkInfoComplete();
+        }
+    else if(aIpcId == MLtsyDispatchPhoneGetNetworkRegistrationStatus::KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId)
+        {
+        iNtwkRegStatusChange.Enable();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::ExecuteNextATHelpCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::ExecuteNextATHelpCommand(const TDesC8& aATString,TLtsyATCommandType aATType)
+	{
+	iATHelperCommand->Complete();
+	iATHelperCommand->SetAtCommandString(aATString);
+	iATType = aATType;
+	iATHelperCommand->StartRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::StartATCommand(CAtCommandBase* aAtCommand)
+	{
+	iIsPendingRequestStillRunning = ETrue;
+	aAtCommand->SetAtCommandObserver(this);
+	iATType = aAtCommand->AtType();
+	aAtCommand->StartRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::CompleteATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::CompleteATCommand(CAtCommandBase* aAtCommand)
+	{
+	iIsPendingRequestStillRunning = EFalse;
+	aAtCommand->RemoveAtCommandObserver();
+	aAtCommand->Complete();
+	ExecutePendingRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::ModemStatusComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::ModemStatusComplete(TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		iCtsyDispatcherCallback.CallbackPhoneBootNotifyModemStatusReadyComp(aError,
+				                ERfsStateInfoNormal);
+		}
+	else
+		{
+		User::After(5000000);
+		iCtsyDispatcherCallback.CallbackPhoneBootNotifyModemStatusReadyComp(aError,
+							    ERfsStateInfoNormal);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::NetworkInfoComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::NetworkInfoComplete()
+	{
+	ExecutePendingRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::GetSignalComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::GetSignalComplete(TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		iSignalInfo = iATGetSignal->getSignalInfo();
+		iPhoneGlobals.iPhoneStatus.iSignalInfo = iSignalInfo;
+		}
+	iCtsyDispatcherCallback.CallbackPhoneGetSignalStrengthComp(aError,
+							iSignalInfo.iSignalStrength,
+							iSignalInfo.iBar);
+	}
+// ---------------------------------------------------------------------------
+// CInitializePhone::GetBatteryComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::GetBatteryComplete(TInt aError)
+	{
+	if(KErrNone == aError)
+		{
+		iBatteryInfo = iATGetBattery->GetBatteryinfo();
+		iPhoneGlobals.iPhoneStatus.iBatteryInfo = iBatteryInfo;
+		iPhoneGlobals.iPhoneStatus.iRfStateInfo = iATGetBattery->GetRfStateInfo();
+		}
+	iCtsyDispatcherCallback.CallbackPhoneGetBatteryInfoComp(aError,iBatteryInfo);
+	}
+
+// ---------------------------------------------------------------------------
+// CInitializePhone::GetBatteryComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitializePhone::AppendIpcRequestToPendingListL(TInt aIpc)
+    {
+    iPendingRequestList.AppendL(aIpc);
+    }
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phone/src/notifybatteryandsignal.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,191 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGetModemStatus
+// Description:
+// CNotifyBatteryAndSignal
+
+#include "notifybatteryandsignal.h"
+#include "mslogger.h"
+#include "atgetbatteryinfo.h"
+#include "atgetsignalstrength.h"
+
+const TInt KLtsyOneSecond = 1000000;
+
+// Class CNotifyBatteryAndSignal
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CNotifyBatteryAndSignal* CNotifyBatteryAndSignal::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CNotifyBatteryAndSignal* self = new(ELeave) CNotifyBatteryAndSignal(aGloblePhone,
+			                                                            aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self ;
+	}
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::CNotifyBatteryAndSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CNotifyBatteryAndSignal::CNotifyBatteryAndSignal(CGlobalPhonemanager& aGloblePhone, 
+	                                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CNotifyBatteryAndSignal::ConstructL()
+	{
+	iATCommandName = EATNone;
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	iATGetBattery = CATGetBattery::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	iATGetSignal = CATGetSignal::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	}
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::~CNotifyBatteryAndSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CNotifyBatteryAndSignal::~CNotifyBatteryAndSignal()
+	{
+	if(iATGetBattery)
+		{
+		delete iATGetBattery;
+		iATGetBattery = NULL;
+		}
+	if(iATGetSignal)
+		{
+		delete iATGetSignal;
+		iATGetSignal = NULL;
+		}
+	}
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::AtCommandExecuteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CNotifyBatteryAndSignal::AtCommandExecuteComplete(TAtEventSource aEventSource, TInt /*aStatus*/)
+	{
+	if(aEventSource == EWriteCompletion)
+		{
+		return;
+		}
+	TInt ret = KErrNone;
+	switch(iATCommandName)
+		{
+		case EATGetBattery:
+			iATGetBattery->RemoveAtCommandObserver();
+			iPhoneGlobals.iEventSignalActive = EFalse;
+			if(aEventSource == EReadCompletion)
+				{
+				ret = iATGetBattery->GetErrorValue();
+				if(KErrNone == ret)
+					{
+					iBatteryInfo = iATGetBattery->GetBatteryinfo();
+					TRfStateInfo RfStateInfo;
+					RfStateInfo = iATGetBattery->GetRfStateInfo();
+					if(iPhoneGlobals.iPhoneStatus.iRfStateInfo!=RfStateInfo)
+						{
+						iPhoneGlobals.iPhoneStatus.iRfStateInfo = RfStateInfo;
+						iCtsyDispatcherCallback.CallbackPhoneNotifyRfStatusChangeInd(ret,RfStateInfo);
+						}
+					if(iPhoneGlobals.iPhoneStatus.iBatteryInfo.iChargeLevel != iBatteryInfo.iChargeLevel)
+						{
+						iPhoneGlobals.iPhoneStatus.iBatteryInfo.iChargeLevel = iBatteryInfo.iChargeLevel;
+						iCtsyDispatcherCallback.CallbackPhoneNotifyBatteryInfoChangeInd(ret,iBatteryInfo);
+						}
+					}
+				}
+			iATGetBattery->Complete();
+			iATCommandName = EATGetSignal;
+			break;
+		case EATGetSignal: 
+			iATGetSignal->RemoveAtCommandObserver();
+			iPhoneGlobals.iEventSignalActive = EFalse;
+			if(aEventSource == EReadCompletion)
+				{
+				ret = iATGetSignal->GetErrorValue();
+				if(KErrNone == ret)
+					{
+					iSignalInfo = iATGetSignal->getSignalInfo();
+					if(iPhoneGlobals.iPhoneStatus.iSignalInfo.iSignalStrength != iSignalInfo.iSignalStrength)
+						{
+						iCtsyDispatcherCallback.CallbackPhoneNotifySignalStrengthChangeInd(ret,
+								                iSignalInfo.iSignalStrength,
+								                iSignalInfo.iBar);
+						}
+					}
+				}
+			iATGetSignal->Complete();
+			iATCommandName = EATGetBattery;
+			break;
+		default:
+			break;
+		}
+	StartTimer(30);
+	}
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CNotifyBatteryAndSignal::StartRequest()
+	{
+	StartTimer(10);
+	iATCommandName = EATGetBattery;
+	}
+// ---------------------------------------------------------------------------
+// CNotifyBatteryAndSignal::TimerRun
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CNotifyBatteryAndSignal::TimerRun(TInt aError)
+    {
+	if((aError == KErrNone)&&
+	   (!iPhoneGlobals.iEventSignalActive)&&
+	   (iPhoneGlobals.iPhoneStatus.iMode==RPhone::EModeOnlineCommand))
+	    {
+		switch(iATCommandName)
+			{
+			case EATGetBattery:
+				iPhoneGlobals.iEventSignalActive = ETrue;
+				iATGetBattery->SetAtCommandObserver(this);
+				iATGetBattery->ExecuteCommand();
+				break;
+			case EATGetSignal:
+				iPhoneGlobals.iEventSignalActive = ETrue;
+				iATGetSignal->SetAtCommandObserver(this);
+				iATGetSignal->ExecuteCommand();
+				break;
+			default:
+				break;
+			}
+		}
+	else
+		{
+		StartTimer(30);
+		}
+	}
+
+/**
+ * 
+ * 
+ */
+void CNotifyBatteryAndSignal::StartTimer(TInt aSeconds)
+    {
+	iCallbackTimer->After(aSeconds*KLtsyOneSecond);
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkgetphonestoreinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,144 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkgetphonestoreinfo.h
+// This contains CAtPhbkGetPhoneStoreInfo which is used to get phonebook information
+// 
+
+#ifndef ATPHBKGETPHONESTOREINFO_H
+#define ATPHBKGETPHONESTOREINFO_H
+
+//system include 
+#include <etelmm.h>
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtPhbkGetPhoneStoreInfo
+ *
+ */
+class CAtPhbkGetPhoneStoreInfo : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkGetPhoneStoreInfo();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkGetPhoneStoreInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkGetPhoneStoreInfo* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* Set PhoneStoreParam by handler
+	* 
+	* @param aStoreName
+	*/
+	void SetPhoneStoreParam(const TDesC& aStoreName);
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkGetPhoneStoreInfo(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	*  Executer AT command for getting Phone Store Info
+	*/
+	void GetPhoneStoreInfo();
+private:
+	/**
+	*   save the iStoreName by SetPhoneStoreParam
+	*/
+	TBuf<8>  iStoreName;
+
+	/**
+	*  phonestoreinfo for callback
+	*/
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1 iPhoneStoreInfo;
+	
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetIccSmsStore,
+		ESetIccSmsStoreComplete,
+		ESetPhoneStore,
+		ESetPhoneStoreComplete,
+		EGetPhoneStoreInfo,
+		EGetPhoneStoreInfoComplete,
+		EATNotInProgress
+		}iState;
+		
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;			
+
+	}; // class CAtPhbkGetPhoneStoreInfo
+
+#endif //  ATPHBKGETPHONESTOREINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstorecache.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,155 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstorecache.h
+// This contains CAtPhbkStoreCache which is used to cache phonebook Entries
+// 
+
+#ifndef ATPHBKSTORECACHE_H
+#define ATPHBKSTORECACHE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtPhbkStoreCache
+ *
+ */
+class CAtPhbkStoreCache : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkStoreCache();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreCache* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreCache* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* Set Phonebook Type 
+	* 
+	* @param  aPhonebookType
+	*/
+	void SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CAtPhbkStoreCache(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  Executer AT command for reading phonebook entries
+	*/	
+	void ReadEntry();
+	
+	/**
+	*  Generate TLV Data should be used by callback
+	*/
+	TInt GeneratePhbkDataL();
+private:	
+	/**
+	*  save PhoneBookType by SetPhonebookType
+	*/	
+	DispatcherPhonebook::TPhonebook iPhoneBookType;
+	
+	/**
+	*  state machine for EventSignal 
+	*/	
+	enum 
+		{
+		ESetStoreName,
+		ESetStoreNameComplete,
+		EReadEntry,
+		EReadEntryComplete,
+		EATNotInProgress
+		}iState;
+	
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;	
+
+	/**
+	*  This is used to generate TLV data by GeneratePhbkData 
+	*/
+	TPhonebookReadEntry  iReadEntry;
+	
+	/*
+	* Client reserved space for phonebook data
+	*/
+	TBuf8<800>   iPhbkData; 
+	
+	/*
+	*  indicate whether it is OK or ERROR string 
+	*/
+    TBool   iEndFlag;
+	
+	}; // class CAtPhbkStoreCache
+#endif // ATPHBKSTORECACHE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstoredelete.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,157 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstoredelete.h
+// This contains CAtPhbkStoreDelete which is used to delete a phonebook Entry
+// 
+
+#ifndef ATPHBKSTOREDELETE_H
+#define ATPHBKSTOREDELETE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtPhbkStoreDelete
+ *
+ */
+class CAtPhbkStoreDelete : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkStoreDelete();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreDelete* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreDelete* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* Set Phonebook Type 
+	* 
+	* @param  aPhonebookType
+	*/
+	void SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType);
+	
+	/**
+	* Set Phonebook Index should be deleted
+	* 
+	* @param  aIndex
+	*/
+	void SetDeleteIndex(TInt aIndex);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkStoreDelete(CGlobalPhonemanager& aGloblePhone, 
+                       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  Executer AT command for Deleting an Entry
+	*/
+	void DeleteEntry();
+	
+	/**
+	* Get the maximum number length for each phonebook store type
+	*/
+	void GetMaxNumberLen();
+private:	
+	/**
+	*  save PhoneBookType by SetPhonebookType
+	*/	
+	DispatcherPhonebook::TPhonebook iPhoneBookType;
+	
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetStoreName,
+		ESetStoreNameComplete,
+		EDeleteEntry,
+		EDeleteEntryComplete,
+		EATNotInProgress
+		}iState;
+		
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;	
+	
+	/**
+	*  The index phonebook Entry should be deleted
+	*/
+	TInt iIndex;
+	
+	/**
+	* the maximum number length 
+	*/
+	TInt iMaxLen;
+	
+	}; // class AtPhbkStoreDelete
+#endif // ATPHBKSTOREDELETE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstoreinitialise.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,161 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstoreinitialise.h
+// This contains CAtPhbkStoreInitialise which initialises all kinds of phonebook 
+// 
+
+#ifndef ATPHBKSTOREINITIALISE_H
+#define ATPHBKSTOREINITIALISE_H
+
+//system include  
+#include <etelmm.h>
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtPhbkStoreInitialise
+ *
+ */
+class CAtPhbkStoreInitialise : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkStoreInitialise();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreInitialise* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreInitialise* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkStoreInitialise(CGlobalPhonemanager& aGloblePhone, 
+                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	*  Executer AT command for getting Store Info
+	*/
+	void GetStoreInfo();
+	
+	/**
+	*  assign totalEntries,maxTextLen and maxNumberLen for each 
+	*  phonebook store type 
+	*/
+	void AssignPhbkType();
+private:
+	/**
+	*  the structure for callback
+	*/
+	DispatcherPhonebook::TPhonebookStoreInfoV1  iStoreInfo;
+
+	/**
+	*  state machine for EventSignal 
+	*/	
+	enum 
+		{
+		ESetStoreName,
+		ESetStoreNameComplete,
+		EGetStoreInfo,
+		EGetStoreInfoComplete,
+		EATNotInProgress
+		}iState;
+		
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;
+	
+	/**
+	*  the array stores phonebook type's string 
+	*/
+	RArray<TPtrC8>  iStoreArr;
+	
+    /**
+	*  phonebook store type's index 
+	*/
+	TInt  iStoreIndex;
+	
+	/**
+	*  total Entries for each store type
+	*/
+	TInt iTotalEntries;
+	
+	/**
+	*  maximum number Length
+	*/
+	TUint16 iValNumberLen;
+	
+	/**
+	*  maximum text Length
+	*/	
+	TUint16 iValTextLen;
+	
+	}; // class CAtPhbkStoreInitialise
+
+#endif // ATPHBKSTOREINITIALISE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstoreread.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,173 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstoreread.h
+// This contains CAtPhbkStoreRead which is use to read a phonebook Entry
+// 
+
+#ifndef ATPHBKSTOREREAD_H
+#define ATPHBKSTOREREAD_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtPhbkStoreRead
+ *
+ */
+class CAtPhbkStoreRead : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkStoreRead();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreRead* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreRead* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* Set read phonebook parameters
+	* 
+	* @param  aIndex
+	* @param  aSlotNum
+	*/
+	void SetReadParam(TInt aIndex,TInt aSlotNum);
+
+	/**
+	* Set Phonebook Type 
+	* 
+	* @param  aPhonebookType
+	*/
+	void SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkStoreRead(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  Executer AT command for reading a phonebook entry
+	*/	
+	void ReadEntry();
+	
+	/**
+	*  Generate TLV Data should be used by callback
+	*/
+	TInt GeneratePhbkDataL();
+private:
+	/**
+	*  save PhoneBookType by SetPhonebookType
+	*/	
+	DispatcherPhonebook::TPhonebook iPhoneBookType;
+	
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetStoreName,
+		ESetStoreNameComplete,
+		EReadEntry,
+		EReadEntryComplete,
+		EATNotInProgress
+		}iState;
+		
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;
+	
+	/*
+	* the first index should be read
+	*/
+	TInt iIndex;
+	
+	/*
+	* the phonebook item number want to read
+	*/
+	TInt iSlotNum;
+	
+	/**
+	*  This is used to generate TLV data by GeneratePhbkData 
+	*/
+	TPhonebookReadEntry  iReadEntry;
+	
+	/*
+	* Client reserved space for phonebook data
+	*/
+	TBuf8<800>   iPhbkData; 
+	
+	/*
+	*  indicate whether it is OK or ERROR string 
+	*/
+    TBool   iEndFlag;
+	
+	}; // class CAtPhbkStoreRead
+#endif // ATPHBKSTOREREAD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/inc/atphbkstorewrite.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,167 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstorewrite.h
+// This contains CAtPhbkStoreWrite which is use to write a phonebook Entry
+// 
+
+#ifndef ATPHBKSTOREWRITE_H
+#define ATPHBKSTOREWRITE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * TPhonebookEntry
+ *
+ */
+class TPhonebookEntry
+    {
+public:
+	TUint16     iIndex;
+    TBuf16<20>  iNumber;
+    TBuf16<14>  iText;	
+    };
+
+/**
+ * CAtPhbkStoreWrite
+ *
+ */
+class CAtPhbkStoreWrite : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkStoreWrite();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreWrite* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkStoreWrite* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+    /**
+	*   set PhoneEntry passed by handler
+	*/
+	void SetPhonebookEntryL(const TDesC8& aEntry);
+	
+	/**
+	* Set Phonebook Type 
+	* 
+	* @param  aPhonebookType
+	*/
+	void SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkStoreWrite(CGlobalPhonemanager& aGloblePhone, 
+                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  Executer AT command for writing a phonebook entry
+	*/	
+	void WriteEntry();
+	
+	/**
+	* Get the maximum number length for each phonebook store type
+	*/
+	void GetMaxNumberLen();
+private:	
+	/**
+	*  save PhoneBookType by SetPhonebookType
+	*/	
+	DispatcherPhonebook::TPhonebook iPhoneBookType;
+
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetStoreName,
+		ESetStoreNameComplete,
+		EWriteEntry,
+		EWriteEntryComplete,
+		EATNotInProgress
+		}iState;
+	
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;	
+	
+	/**
+	*  The structure decoded for phonebook Entry 
+	*/
+	TPhonebookEntry iPhbkEntry;
+	
+	/**
+	* the maximum number length 
+	*/
+	TInt iMaxLen;
+	
+	}; // class CAtPhbkStoreWrite
+#endif // ATPHBKSTOREWRITE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkgetphonestoreinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,365 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkgetphonestoreinfo.cpp
+// This contains CAtPhbkGetPhoneStoreInfo which is used to get phonebook information
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <etelmm.h>
+
+//user include
+#include "atphbkgetphonestoreinfo.h"
+#include "mslogger.h"
+#include "ltsycommondefine.h"
+
+//constant defination
+_LIT8(KSetPhoneStore,"AT+CPBS=\"%S\"\r");
+_LIT8(KGetPhoneStoreInfo,"AT+CPBS?\r");
+_LIT8(KCPBSResponseString,"+CPBS:");
+_LIT8(KAdnPhonebook,"SM");
+_LIT8(KFdnPhonebook,"FD");
+_LIT8(KGetPrefMemCommand,"AT+CPMS?\r");
+_LIT8(KCPMSResponseString,"+CPMS:");
+
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::CAtPhbkGetPhoneStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkGetPhoneStoreInfo::CAtPhbkGetPhoneStoreInfo(CGlobalPhonemanager& aGloblePhone, 
+                                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkGetPhoneStoreInfo::CAtPhbkGetPhoneStoreInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::~CAtPhbkGetPhoneStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkGetPhoneStoreInfo::~CAtPhbkGetPhoneStoreInfo()
+	{
+	LOGTEXT(_L8("CAtPhbkGetPhoneStoreInfo::~CAtPhbkGetPhoneStoreInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkGetPhoneStoreInfo* CAtPhbkGetPhoneStoreInfo::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtPhbkGetPhoneStoreInfo* self = new (ELeave)CAtPhbkGetPhoneStoreInfo(aGloblePhone, 
+			                                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkGetPhoneStoreInfo* CAtPhbkGetPhoneStoreInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtPhbkGetPhoneStoreInfo* self=CAtPhbkGetPhoneStoreInfo::NewLC(aGloblePhone, 
+                                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::SetPhoneStoreParam
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::SetPhoneStoreParam(const TDesC& aStoreName)
+	{
+	iStoreName = aStoreName;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::StartRequest()
+	{
+	if( iStoreName.CompareF(KETelIccSmsStore) == KErrNone)
+		{
+		iState = ESetIccSmsStore;
+		iTxBuffer.Zero();
+		iTxBuffer.Copy(KGetPrefMemCommand);
+		Write();
+		}
+	else
+		{
+	    ExecuteCommand();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkGetPhoneStoreInfo::ExecuteCommand called"));
+	iState = ESetPhoneStore;
+	TPtrC8  storeName;
+	iTxBuffer.Zero();
+	if( iStoreName.CompareF(KETelIccFdnPhoneBook) == KErrNone )
+		{
+		storeName.Set(KFdnPhonebook);
+		}
+	else if( iStoreName.CompareF(KETelIccAdnPhoneBook) == KErrNone)
+		{
+		storeName.Set(KAdnPhonebook);
+		}
+	iTxBuffer.Format(KSetPhoneStore,&storeName);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkGetPhoneStoreInfo::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookGetPhoneStoreInfoComp(aStatus,iPhoneStoreInfo);
+		}
+	else
+		{
+		if( aEventSource == EWriteCompletion )
+			{
+			LOGTEXT(_L8("CAtPhbkGetPhoneStoreInfo::EventSignal,EWriteCompletion!"));
+			if( iState == ESetPhoneStore )
+				{
+				iState = ESetPhoneStoreComplete;
+				}
+			else if( iState == EGetPhoneStoreInfo )
+				{
+				iState = EGetPhoneStoreInfoComplete;
+				}
+			else if( iState ==ESetIccSmsStore )
+				{
+				iState = ESetIccSmsStoreComplete;
+				}
+			}
+    	else 
+			{
+			LOGTEXT(_L8("CAtPhbkGetPhoneStoreInfo::EventSignal,EReadCompletion!"));
+			if( iState == ESetPhoneStoreComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone)
+					{
+					iState = EGetPhoneStoreInfo;
+					GetPhoneStoreInfo();
+					}
+				else
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookGetPhoneStoreInfoComp(iError,iPhoneStoreInfo);
+					}
+				}
+			else if( iState == EGetPhoneStoreInfoComplete )
+				{
+				iPhoneStoreInfo.iName = iStoreName;
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iCtsyDispatcherCallback.CallbackPhonebookGetPhoneStoreInfoComp(iError,iPhoneStoreInfo);
+				}
+			else if( iState == ESetIccSmsStoreComplete)
+				{
+				iPhoneStoreInfo.iName = iStoreName;
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iCtsyDispatcherCallback.CallbackPhonebookGetPhoneStoreInfoComp(iError,iPhoneStoreInfo);
+				}
+			}
+		}
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::GetPhoneStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::GetPhoneStoreInfo()
+	{
+	LOGTEXT(_L8("CAtPhbkGetPhoneStoreInfo::GetPhoneStoreInfo callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Copy(KGetPhoneStoreInfo);
+	Write();   
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkGetPhoneStoreInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkGetPhoneStoreInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState == ESetPhoneStoreComplete )
+		{
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+		}
+	else if( iState == EGetPhoneStoreInfoComplete )
+		{
+		/**
+		* Here is an Example 
+		* +CPBS: "SM",6,250  
+        * ADN phonebook is selected,6 locations are used and 
+        * total 250 locations are available
+		*/
+		iError = KErrNone;
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		//remove AT+CPBS
+		if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG			
+		for( TInt i=0;i<count;i++ )
+			{
+		    LOGTEXT3(_L8("CAtPhbkGetPhoneStoreInfo::ParseResponseL\tarray[%d]=%S"),
+		    		      i,&array[i]);     
+			}
+#endif			
+		if (count <= 1)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		if(array[0].MatchF(KCPBSResponseString) == KErrNotFound)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+				
+		//parse used
+		TLex8 lex(array[2]);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		iPhoneStoreInfo.iUsedEntries = val;
+		
+		//parse total
+		TLex8 lex1(array[3]);
+		ret = lex1.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		iPhoneStoreInfo.iTotalEntries = val;
+		iPhoneStoreInfo.iType = RMobilePhoneStore::EPhoneBookStore;
+	    LOGTEXT3(_L8("CAtPhbkGetPhoneStoreInfo::ParseResponseL\tPreferred store used=%d, total=%d"), 
+	    		                                iPhoneStoreInfo.iUsedEntries,iPhoneStoreInfo.iTotalEntries);
+		CleanupStack::PopAndDestroy(&array);
+		}
+	else 
+		{
+		/**
+		* Parse result of AT+CPMS? 
+		* Response:+CPMS:<mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>
+		* Here only the first mem is used. mem1 is SM
+		*/
+		iError = KErrNone;
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt Count = array.Count();
+		if (Count <= 1)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		if(array[0].MatchF(KCPMSResponseString) == KErrNotFound)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		//parse name 
+		TPtrC8 name(array[1]);
+		
+		//parse used
+		TLex8 lex(array[2]);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		iPhoneStoreInfo.iUsedEntries = val;
+		
+		//parse total
+		TLex8 lex1(array[3]);
+		ret = lex1.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		iPhoneStoreInfo.iTotalEntries = val;
+		iPhoneStoreInfo.iType = RMobilePhoneStore::EShortMessageStore;
+		LOGTEXT3(_L8("CAtPhbkGetPhoneStoreInfo::ParseResponseL\tPreferred store used=%d, total=%d"), 
+			    		                        iPhoneStoreInfo.iUsedEntries,iPhoneStoreInfo.iTotalEntries);
+		CleanupStack::PopAndDestroy(&array);
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorecache.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,371 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstorecache.cpp
+// This contains CAtPhbkStoreCache which is used to cache phonebook Entries
+// 
+
+//system include 
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mpbutil.h>
+#include <cmmgsmphonestorageutility.h>
+
+//user include 
+#include "atphbkstorecache.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KPhbkStoreRead,"AT+CPBR=%d,%d\r");
+_LIT8(KSelAdnPhonebook,"AT+CPBS=\"SM\"\r");
+_LIT8(KSelFdnPhonebook,"AT+CPBS=\"FD\"\r");
+_LIT8(KCPBRMatchString,"+CPBR:*");
+_LIT8(KCPBRSResponseString,"+CPBR:");
+const TInt KAdnStartIndex = 1;
+const TInt KFdnStartIndex = 1;
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::CAtPhbkStoreCache
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreCache::CAtPhbkStoreCache(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkStoreCache::CAtPhbkStoreCache called"));
+	iEndFlag = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::~CAtPhbkStoreCache
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreCache::~CAtPhbkStoreCache()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreCache::~CAtPhbkStoreCache called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreCache* CAtPhbkStoreCache::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreCache* self = new (ELeave)CAtPhbkStoreCache(aGloblePhone, 
+                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreCache* CAtPhbkStoreCache::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreCache* self=CAtPhbkStoreCache::NewLC(aGloblePhone, 
+                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	AddExpectStringL(KLtsyOkString);
+	AddExpectStringL(KLtsyErrorString);
+	AddExpectStringL(KCPBRMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::SetPhonebookType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType)
+	{
+	iPhoneBookType = aPhonebookType;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreCache::ExecuteCommand called"));
+	iState = ESetStoreName;
+	iTxBuffer.Zero();	
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		iTxBuffer.Copy(KSelAdnPhonebook);
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		iTxBuffer.Copy(KSelFdnPhonebook);
+		}
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::ReadEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::ReadEntry()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreCache::ReadEntry callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	TInt totalEntries(KErrNone);
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		totalEntries = iPhoneGlobals.iPhonebookStoreInfo.iAdnTotalEntries;
+		iTxBuffer.Format(KPhbkStoreRead,KAdnStartIndex,totalEntries);
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		totalEntries = iPhoneGlobals.iPhonebookStoreInfo.iFdnTotalEntries; 
+		iTxBuffer.Format(KPhbkStoreRead,KFdnStartIndex,totalEntries);
+		}
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkStoreCache::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookStoreCacheComp(aStatus,iPhoneBookType,iPhbkData);
+		}
+	else
+		{
+		if( aEventSource== EWriteCompletion )
+			{
+			if( iState==ESetStoreName )
+				{
+				iState = ESetStoreNameComplete;
+				}
+			else if( iState==EReadEntry )
+				{
+				iState = EReadEntryComplete;
+				}
+			}
+		else 
+			{
+			if( iState==ESetStoreNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone)
+					{
+					ClearBuffer();
+					iState = EReadEntry;
+					ReadEntry();
+					}
+				else 
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookStoreCacheComp(iError,iPhoneBookType,iPhbkData);
+					}
+				}
+			else if( iState==EReadEntryComplete )
+				{
+				//encounter OK or ERROR
+				if( iEndFlag )
+					{
+					ClearBuffer();
+					iPhbkData.Zero();
+					Complete();
+					iPhoneGlobals.iEventSignalActive = EFalse;
+					iCtsyDispatcherCallback.CallbackPhonebookStoreCacheComp(iError,iPhoneBookType,iPhbkData);
+					}
+				else 
+					{
+					if( iError==KErrNone )
+						{
+						TRAPD(err, GeneratePhbkDataL());
+						iCtsyDispatcherCallback.CallbackPhonebookStoreCacheComp(err,iPhoneBookType,iPhbkData);
+						ClearCurrentLine();
+						}
+					else 
+						{
+						iCtsyDispatcherCallback.CallbackPhonebookStoreCacheComp(iError,iPhoneBookType,iPhbkData);
+						ClearCurrentLine();
+						}
+					}
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreCache::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState == ESetStoreNameComplete )
+	    {
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+	    }
+	else if( iState == EReadEntryComplete )
+		{
+		/**
+		* Here is an Example 
+		* at+CPBR=1,250    
+		*+CPBR: 1,"1234001",129,""
+		*+CPBR: 2,"123456002",129,"TelNo 002"
+		*+CPBR: 3,"123456003",129,"TelNo 003"
+		*+CPBR: 4,"123456004",129,"TelNo 004"
+		*OK
+		*/
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		// remove the string of AT+CPBR=..
+		if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG		
+		for( TInt i=0;i<count;i++ )
+			{
+			LOGTEXT3(_L8("CAtPhbkStoreCache::ParseResponseL\tarray[%d]=%S"),i,&array[i]);  
+			}
+#endif		
+		if((array[1].Match(KLtsyOkString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNone;
+			iEndFlag = ETrue;
+			return; 
+			}
+		else if((array[1].Match(KLtsyErrorString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrGeneral;
+			iEndFlag = ETrue;
+			return; 
+			}
+	  
+		iError = KErrNone;
+		//remove number line if it has 
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			array.Remove(0);
+			}
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		//parse index
+		TLex8 lex(array[1]);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		//Index  
+		iReadEntry.iIndex = val;             
+		iReadEntry.iNumber.Copy(array[2]);   
+		//Parse TON/NPI
+		TLex8 lex1(array[3]);
+		TUint16 val1;
+		ret = lex1.Val(val1,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		 //TON/NPI
+		iReadEntry.iTon = (TUint8)val1;  
+		iReadEntry.iText.Copy(array[4]);
+		CleanupStack::PopAndDestroy();
+		} 
+  	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreCache::GeneratePhbkData
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CAtPhbkStoreCache::GeneratePhbkDataL()
+	{
+	CPhoneBookBuffer* pbBuffer = new(ELeave) CPhoneBookBuffer(); // used to write phonebook data
+	iPhbkData.Zero();
+	 // Set it to point to the Client buffer
+	pbBuffer->Set(&iPhbkData);
+	pbBuffer->AddNewEntryTag();
+	
+	TInt ret = pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBAdnIndex,iReadEntry.iIndex);
+	if( ret!=KErrNone )
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBNumber, iReadEntry.iNumber);
+	if( ret!=KErrNone )
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBTonNpi, iReadEntry.iTon);
+	if(ret!=KErrNone)
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBText, iReadEntry.iText);
+	if(ret != KErrNone)
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	delete pbBuffer;
+	return KErrNone;
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstoredelete.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,233 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstoredelete.cpp
+// This contains CAtPhbkStoreDelete which is used to delete a phonebook Entry
+// 
+
+//system include 
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "atphbkstoredelete.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KPhbkStoreDelete,"AT+CPBW=%d\r");
+_LIT8(KSelAdnPhonebook,"AT+CPBS=\"SM\"\r");
+_LIT8(KSelFdnPhonebook,"AT+CPBS=\"FD\"\r");
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::CAtPhbkStoreDelete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreDelete::CAtPhbkStoreDelete(CGlobalPhonemanager& aGloblePhone, 
+                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                       :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkStoreDelete::CAtPhbkStoreDelete called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::~CAtPhbkStoreDelete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreDelete::~CAtPhbkStoreDelete()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreDelete::~CAtPhbkStoreDelete called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreDelete* CAtPhbkStoreDelete::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreDelete* self = new (ELeave)CAtPhbkStoreDelete(aGloblePhone, 
+                                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreDelete* CAtPhbkStoreDelete::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreDelete* self=CAtPhbkStoreDelete::NewLC(aGloblePhone, 
+                                                       aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::SetPhonebookType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType)
+	{
+	iPhoneBookType = aPhonebookType;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::SetDeleteIndex
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::SetDeleteIndex(TInt aIndex)
+	{
+	iIndex = aIndex;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::StartRequest()
+	{
+	GetMaxNumberLen();
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreDelete::ExecuteCommand called"));
+	iState = ESetStoreName;
+	iTxBuffer.Zero();	
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		iTxBuffer.Copy(KSelAdnPhonebook);
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		iTxBuffer.Copy(KSelFdnPhonebook);
+		}
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::DeleteEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::DeleteEntry()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreDelete::DeleteEntry callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KPhbkStoreDelete,iIndex);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkStoreDelete::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookStoreDeleteEntryComp(aStatus,iPhoneBookType,iMaxLen);
+		}
+	else
+		{
+		if( aEventSource== EWriteCompletion )
+			{
+			if( iState==ESetStoreName )
+				{
+				iState = ESetStoreNameComplete;
+				}
+			else if( iState==EDeleteEntry )
+				{
+				iState = EDeleteEntryComplete;
+				}
+			}
+		else 
+			{
+			if( iState==ESetStoreNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if( iError == KErrNone )
+					{
+					iState = EDeleteEntry;
+					DeleteEntry();
+					}
+				else
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookStoreDeleteEntryComp(iError,iPhoneBookType,iMaxLen);
+					}
+				}
+			else if( iState== EDeleteEntryComplete)
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iCtsyDispatcherCallback.CallbackPhonebookStoreDeleteEntryComp(iError,iPhoneBookType,iMaxLen);
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreDelete::GetMaxNumberLen
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreDelete::GetMaxNumberLen()
+	{
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		iMaxLen = iPhoneGlobals.iPhonebookStoreInfo.iAdnMaximumNumberLength;
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		iMaxLen = iPhoneGlobals.iPhonebookStoreInfo.iFdnMaximumNumberLength;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstoreinitialise.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,339 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstoreinitialise.cpp
+// This contains CAtPhbkStoreInitialise which initialises all kinds of phonebook 
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <etelmm.h>
+
+//user  include 
+#include "atphbkstoreinitialise.h"
+#include "mslogger.h"
+#include "ltsycommondefine.h"
+
+//constant defination
+_LIT8(KAdnStore,"AT+CPBS=\"SM\"\r");
+_LIT8(KFdnStore,"AT+CPBS=\"FD\"\r");
+_LIT8(KGetSotreInfo,"AT+CPBR=?\r");
+_LIT8(KCPBRResponseString,"+CPBR:");
+_LIT8(KSeparator,"-");
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::CAtPhbkStoreInitialise
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreInitialise::CAtPhbkStoreInitialise(CGlobalPhonemanager& aGloblePhone, 
+                                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                               :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkStoreInitialise::CAtPhbkStoreInitialise called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::~CAtPhbkStoreInitialise
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreInitialise::~CAtPhbkStoreInitialise()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreInitialise::~CAtPhbkStoreInitialise called"));
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreInitialise* CAtPhbkStoreInitialise::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtPhbkStoreInitialise* self = new (ELeave)CAtPhbkStoreInitialise(aGloblePhone, 
+			                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreInitialise* CAtPhbkStoreInitialise::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtPhbkStoreInitialise* self=CAtPhbkStoreInitialise::NewLC(aGloblePhone, 
+                                                               aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	//first is ADN 
+	iStoreArr.Reset();
+	iStoreArr.Append(KAdnStore());
+//	//second is FDN
+	iStoreArr.Append(KFdnStore());
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreInitialise::ExecuteCommand called"));
+	iState = ESetStoreName;
+	iStoreIndex = 0;
+	iTxBuffer.Zero();	
+	iTxBuffer.Copy(iStoreArr[iStoreIndex]);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkStoreInitialise::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookStoreInitialiseComp(aStatus,iStoreInfo);
+		}
+	else
+		{
+		if( aEventSource == EWriteCompletion )
+			{
+			LOGTEXT(_L8("CAtPhbkStoreInitialise::EventSignal,EWriteCompletion!"));
+			if( iState==ESetStoreName )
+				{
+				iState = ESetStoreNameComplete;
+				}
+			else if( iState==EGetStoreInfo )
+				{
+				iState = EGetStoreInfoComplete;
+				}
+			 }
+		else 
+			{
+			LOGTEXT(_L8("CAtPhbkStoreInitialise::EventSignal,EReadCompletion!"));
+			if( iState==ESetStoreNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone )
+					{
+					iState = EGetStoreInfo;
+					GetStoreInfo();
+					}
+				else
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookStoreInitialiseComp(iError,iStoreInfo);
+					}
+				}
+			else if( iState==EGetStoreInfoComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iStoreIndex++;
+				//stands for complete all phonebook store type's at+CPBR=?
+				if ( iStoreIndex > 1 )
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookStoreInitialiseComp(iError,iStoreInfo);
+					}
+				else 
+					{
+					iState = ESetStoreName;
+					iTxBuffer.Zero();
+					//For this case,only two store type
+					iTxBuffer.Copy(iStoreArr[iStoreIndex]);   
+					Write();
+					}
+				}
+			}  
+		}
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::GetStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::GetStoreInfo()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreInitialise::GetPhoneStoreInfo callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Copy(KGetSotreInfo);
+	Write();   
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState == ESetStoreNameComplete )
+		{
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+		}
+	else if( iState == EGetStoreInfoComplete )
+		{
+		/**
+		* Parse result of AT+CPBR=? 
+		* Response:+CPMS:<(startIndex-endIndex>,<len1>,<len2>
+		* len1 is maximum length for phone number
+		* len2 is maximum length for text 
+		*/
+		iError = KErrNone;
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		// remove the string of AT+CPBR=?
+		if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG	
+		for( TInt i=0;i<count;i++ )
+			{
+		    LOGTEXT3(_L8("CAtPhbkStoreInitialise::ParseResponseL\tarray[%d]=%S"),
+		    		      i,&array[i]);     
+			}
+#endif		
+		if (count <= 1)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		if(array[0].MatchF(KCPBRResponseString) == KErrNotFound)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		//parse iTotalEntries
+		TInt len = array[1].Length();
+		TInt pos = array[1].FindF(KSeparator);
+		TPtrC8 tempStr;
+		tempStr.Set(array[1].Left(pos));
+		TLex8 lex(tempStr);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		tempStr.Set(array[1].Right(len-pos-1));
+		TLex8 lex1(tempStr);
+		TUint16 val1;
+		ret = lex1.Val(val1,EDecimal);
+		if(ret!=KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+	    iTotalEntries = val1-val+1;
+
+		
+	  	//parse MaximumNumberLength
+		TLex8 lexNumberLen(array[2]);
+		ret = lexNumberLen.Val(iValNumberLen,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+				
+		//parse MaximumTextLength
+		TLex8 lexTextLen(array[3]);
+		ret = lexTextLen.Val(iValTextLen,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		AssignPhbkType();
+		LOGTEXT2(_L8("CAtPhbkStoreInitialise::ParseResponseL\tiTotalEntries=%d"),iTotalEntries);
+	    LOGTEXT3(_L8("CAtPhbkStoreInitialise::ParseResponseL\tPreferred MaxNumbereLen=%d, MaxTextLen=%d"), 
+	    		                                              iValNumberLen,iValTextLen);
+		CleanupStack::PopAndDestroy(&array);
+
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreInitialise::AssignPhbkType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreInitialise::AssignPhbkType()
+	{
+	if( iStoreIndex == 0 )
+		{
+		iStoreInfo.iAdnTotalEntries = iTotalEntries;
+		iPhoneGlobals.iPhonebookStoreInfo.iAdnTotalEntries = iTotalEntries;
+		iStoreInfo.iAdnMaximumNumberLength = iValNumberLen;
+		iStoreInfo.iAdnMaximumTextLength = iValTextLen;
+		iPhoneGlobals.iPhonebookStoreInfo.iAdnMaximumNumberLength =
+		                                    iValNumberLen;
+		iPhoneGlobals.iPhonebookStoreInfo.iAdnMaximumTextLength =
+		                                     iValTextLen;
+		}
+	else if( iStoreIndex == 1 )
+		{
+		iStoreInfo.iFdnTotalEntries = iTotalEntries;
+		iPhoneGlobals.iPhonebookStoreInfo.iFdnTotalEntries = iTotalEntries;
+		iStoreInfo.iFdnMaximumNumberLength = iValNumberLen;
+		iStoreInfo.iFdnMaximumTextLength = iValTextLen;
+		iPhoneGlobals.iPhonebookStoreInfo.iFdnMaximumNumberLength = 
+											iValNumberLen;
+		iPhoneGlobals.iPhonebookStoreInfo.iFdnMaximumTextLength =
+											iValTextLen;    
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstoreread.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,362 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstoreread.cpp
+// This contains CAtPhbkStoreRead which is use to read a phonebook Entry
+// 
+
+//system include
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mpbutil.h>
+#include <cmmgsmphonestorageutility.h>
+
+//user include 
+#include "atphbkstoreread.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KPhbkStoreRead,"AT+CPBR=%d,%d\r");
+_LIT8(KSelAdnPhonebook,"AT+CPBS=\"SM\"\r");
+_LIT8(KSelFdnPhonebook,"AT+CPBS=\"FD\"\r");
+_LIT8(KCPBRMatchString,"+CPBR:*");
+_LIT8(KCPBRSResponseString,"+CPBR:");
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::CAtPhbkStoreRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreRead::CAtPhbkStoreRead(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkStoreRead::CAtPhbkStoreRead called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::~CAtPhbkStoreRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreRead::~CAtPhbkStoreRead()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreRead::~CAtPhbkStoreRead called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreRead* CAtPhbkStoreRead::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreRead* self = new (ELeave)CAtPhbkStoreRead(aGloblePhone, 
+                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreRead* CAtPhbkStoreRead::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreRead* self=CAtPhbkStoreRead::NewLC(aGloblePhone, 
+                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	AddExpectStringL(KLtsyOkString);
+	AddExpectStringL(KLtsyErrorString);
+	AddExpectStringL(KCPBRMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::SetPhonebookType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType)
+	{
+	iPhoneBookType = aPhonebookType;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::SetReadParam
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::SetReadParam(TInt aIndex,TInt aSlotNum)
+	{
+	iIndex = aIndex;
+	iSlotNum = aSlotNum;
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreRead::ExecuteCommand called"));
+	iState = ESetStoreName;
+	iTxBuffer.Zero();	
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		iTxBuffer.Copy(KSelAdnPhonebook);
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		iTxBuffer.Copy(KSelFdnPhonebook);
+		}
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::ReadEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::ReadEntry()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreRead::ReadEntry callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KPhbkStoreRead,iIndex,iIndex+iSlotNum-1);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkStoreRead::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookStoreReadEntryComp(aStatus,iPhoneBookType,iPhbkData);
+		}
+	else
+		{
+		if( aEventSource== EWriteCompletion )
+			{
+			if( iState==ESetStoreName )
+				{
+				iState = ESetStoreNameComplete;
+				}
+			else if( iState==EReadEntry )
+				{
+				iState = EReadEntryComplete;
+				}
+			}
+		else 
+			{
+			if( iState==ESetStoreNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone)
+					{
+					ClearBuffer();
+					iState = EReadEntry;
+					ReadEntry();
+					}
+				else 
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookStoreReadEntryComp(iError,iPhoneBookType,iPhbkData);
+					}
+				}
+			else if( iState==EReadEntryComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				//encounter OK or ERROR
+				if( iEndFlag )
+					{
+					ClearBuffer();
+					iPhbkData.Zero();
+					iCtsyDispatcherCallback.CallbackPhonebookStoreReadEntryComp(iError,iPhoneBookType,iPhbkData);
+					}
+				else
+					{
+					if( iError==KErrNone )
+						{
+						TRAPD(err, GeneratePhbkDataL());
+						iCtsyDispatcherCallback.CallbackPhonebookStoreReadEntryComp(err,iPhoneBookType,iPhbkData);
+						ClearCurrentLine();
+						}
+					else
+						{
+						iCtsyDispatcherCallback.CallbackPhonebookStoreReadEntryComp(iError,iPhoneBookType,iPhbkData);
+						}
+					}
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreRead::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState == ESetStoreNameComplete )
+	    {
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+	    }
+	else if( iState == EReadEntryComplete )
+		{
+		/**
+		* +CPBR = <index>,<number>,<129/145>,<text> 
+		* OK    
+		*/
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		// remove the string of AT+CPBR=..
+		if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG		
+		for( TInt i=0;i<count;i++ )
+			{
+			LOGTEXT3(_L8("CAtPhbkStoreRead::ParseResponseL\tarray[%d]=%S"),i,&array[i]); 
+			}
+#endif		
+		if((array[1].Match(KLtsyOkString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNone;
+			iEndFlag = ETrue;
+			return; 
+			}
+		else if((array[1].Match(KLtsyErrorString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrGeneral;
+			iEndFlag = ETrue;
+			return; 
+			}
+	  
+		iError = KErrNone;
+		//remove number line if it has 
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			array.Remove(0);
+			}
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		//parse index
+		TLex8 lex(array[1]);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		//Index  
+		iReadEntry.iIndex = val;             
+		iReadEntry.iNumber.Copy(array[2]);   
+		//Parse TON/NPI
+		TLex8 lex1(array[3]);
+		TUint16 val1;
+		ret = lex1.Val(val1,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		 //TON/NPI
+		iReadEntry.iTon = (TUint8)val1;  
+		iReadEntry.iText.Copy(array[4]);
+		CleanupStack::PopAndDestroy();
+		} 
+  	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreRead::GeneratePhbkData
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CAtPhbkStoreRead::GeneratePhbkDataL()
+	{
+	CPhoneBookBuffer* pbBuffer = new(ELeave) CPhoneBookBuffer(); // used to write phonebook data
+	iPhbkData.Zero();
+	pbBuffer->Set(&iPhbkData); // Set it to point to the Client buffer
+	pbBuffer->AddNewEntryTag();
+	
+	TInt ret = pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBAdnIndex,iReadEntry.iIndex);
+	if( ret!=KErrNone )
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBNumber, iReadEntry.iNumber);
+	if( ret!=KErrNone )
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBTonNpi, iReadEntry.iTon);
+	if(ret!=KErrNone)
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBText, iReadEntry.iText);
+	if(ret != KErrNone)
+		{
+		delete pbBuffer;
+		return ret;
+		}
+	
+	delete pbBuffer;
+	return KErrNone;
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebook/src/atphbkstorewrite.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,311 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkstorewrite.cpp
+// This contains CAtPhbkStoreWrite which is use to write a phonebook Entry
+// 
+
+//system include 
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mpbutil.h> 
+
+//user include 
+#include "atphbkstorewrite.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KPhbkStoreWrite,"AT+CPBW=%d,\"%S\",145,\"%S\"\r");
+_LIT8(KSelAdnPhonebook,"AT+CPBS=\"SM\"\r");
+_LIT8(KSelFdnPhonebook,"AT+CPBS=\"FD\"\r");
+const TInt KMaxNumberLen = 20;
+const TInt KMaxTextLen = 14;
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::CAtPhbkStoreWrite
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreWrite::CAtPhbkStoreWrite(CGlobalPhonemanager& aGloblePhone, 
+                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                     :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkStoreWrite::CAtPhbkStoreWrite called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::~CAtPhbkStoreWrite
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreWrite::~CAtPhbkStoreWrite()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreWrite::~CAtPhbkStoreWrite called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreWrite* CAtPhbkStoreWrite::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                            CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreWrite* self = new (ELeave)CAtPhbkStoreWrite(aGloblePhone, 
+                                                            aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkStoreWrite* CAtPhbkStoreWrite::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkStoreWrite* self=CAtPhbkStoreWrite::NewLC(aGloblePhone, 
+                                                     aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::SetPhonebookType
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::SetPhonebookType(DispatcherPhonebook::TPhonebook aPhonebookType)
+	{
+	iPhoneBookType = aPhonebookType;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::SetPhonebookEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::SetPhonebookEntryL(const TDesC8& aEntry)
+	{
+	TInt ret = KErrNone;
+	TInt retVal = KErrNone;
+	TUint8 tmpTagValue;
+	TPtrC16 textPtr;
+    TUint8 tagValue;
+    CPhoneBookBuffer::TPhBkTagType tagType;
+    TUint8 newEntryTag;
+    newEntryTag = RMobilePhoneBookStore::ETagPBNewEntry;
+    TUint16 index;
+    TPtrC16 numPtr;
+    TPtrC16 type;
+    // used to write phonebook data
+	CPhoneBookBuffer* pbBuffer = new(ELeave) CPhoneBookBuffer(); 
+	CleanupStack::PushL(pbBuffer);
+	
+    //  Set pointer to constant descriptor
+    TPtr8 dataToSeparate( NULL, 0, 0 );
+    dataToSeparate.Set( (TUint8*)aEntry.Ptr(),
+    		aEntry.Length(), aEntry.Length() );
+    
+    //  Init and get entry info
+    pbBuffer->Set( &dataToSeparate );
+    pbBuffer->StartRead();
+    ret = pbBuffer->GetTagAndType( tmpTagValue, tagType );
+    // Ensure, that there is new entry containing data
+    if ( KErrNone == ret && tmpTagValue == newEntryTag )
+        {
+        // Get the first value from TLV data
+        ret = pbBuffer->GetTagAndType( tagValue, tagType );
+        while(ret == KErrNone)
+			{	
+			switch ( tagValue )
+		        {
+		        // Get name
+		        case RMobilePhoneBookStore::ETagPBText:
+		        	retVal = pbBuffer->GetValue( textPtr );
+		            if(retVal == KErrNone)
+		                {
+		                iPhbkEntry.iText = textPtr;
+		            	}
+		            break;
+		         // Get number
+		        case RMobilePhoneBookStore::ETagPBNumber:
+		            ret = pbBuffer->GetValue( numPtr );
+		            if(retVal == KErrNone)
+		            	{
+		            	iPhbkEntry.iNumber = numPtr;
+		            	}
+		            break;
+		         // get the index
+		        case RMobilePhoneBookStore::ETagPBAdnIndex:
+		        	retVal = pbBuffer->GetValue(index);
+		            if( retVal == KErrNone )
+		            	{
+		            	iPhbkEntry.iIndex = index;
+		            	}
+		            break;
+		         // get ETagPBTonNpi , not needed
+		        case RMobilePhoneBookStore::ETagPBTonNpi:
+		        	retVal = pbBuffer->GetValue(type);
+		            break;      
+		        default:
+		        	break;
+		        }//switch 
+			ret = pbBuffer->GetTagAndType( tagValue, tagType );
+		    }//while
+ 		}
+	CleanupStack::PopAndDestroy(pbBuffer);
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::StartRequest()
+	{
+	GetMaxNumberLen();
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreWrite::ExecuteCommand called"));
+	iState = ESetStoreName;
+	iTxBuffer.Zero();	
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		iTxBuffer.Copy(KSelAdnPhonebook);
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		iTxBuffer.Copy(KSelFdnPhonebook);
+		}
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::WriteEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::WriteEntry()
+	{
+	LOGTEXT(_L8("CAtPhbkStoreWrite::WriteEntry callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	TBuf8<KMaxNumberLen> tempNumber;
+	TBuf8<KMaxTextLen>   tempText;
+	//covert 16 bit to 8 bit
+	tempNumber.Copy(iPhbkEntry.iNumber);
+	tempText.Copy(iPhbkEntry.iText);
+	iTxBuffer.Format(KPhbkStoreWrite,iPhbkEntry.iIndex,
+			         &tempNumber,&tempText);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkStoreWrite::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookStoreWriteEntryComp(aStatus,iPhoneBookType,iPhbkEntry.iIndex,iMaxLen);
+		}
+	else
+		{
+		if( aEventSource== EWriteCompletion )
+			{
+			if( iState==ESetStoreName )
+				{
+				iState = ESetStoreNameComplete;
+				}
+			else if( iState==EWriteEntry )
+				{
+				iState = EWriteEntryComplete;
+				}
+			}
+		else 
+			{
+			if( iState==ESetStoreNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if( iError==KErrNone )
+					{
+					iState = EWriteEntry;
+					WriteEntry();
+					}
+				else
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookStoreWriteEntryComp(iError,iPhoneBookType,
+																				 iPhbkEntry.iIndex,iMaxLen);
+					}
+				}
+			else if( iState== EWriteEntryComplete)
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iCtsyDispatcherCallback.CallbackPhonebookStoreWriteEntryComp(iError,iPhoneBookType,
+															                 iPhbkEntry.iIndex,iMaxLen);
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkStoreWrite::GetMaxNumberLen
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkStoreWrite::GetMaxNumberLen()
+	{
+	if( iPhoneBookType == DispatcherPhonebook::EIccAdn )
+		{
+		iMaxLen = iPhoneGlobals.iPhonebookStoreInfo.iAdnMaximumNumberLength;
+		}
+	else if( iPhoneBookType == DispatcherPhonebook::EIccFdn )
+		{
+		iMaxLen = iPhoneGlobals.iPhonebookStoreInfo.iFdnMaximumNumberLength;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/inc/atphbkengetinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,136 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkengetinfo.h
+// This contains CAtPhbkEnGetInfo which is used to get emergency call info
+// 
+
+#ifndef ATPHBKENGETINFO_H
+#define ATPHBKENGETINFO_H
+
+//system include 
+#include <etelmm.h>
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtPhbkEnGetInfo
+ *
+ */
+class CAtPhbkEnGetInfo : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkEnGetInfo();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkEnGetInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkEnGetInfo* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkEnGetInfo(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	*  Executer AT command for getting Phone Store Info
+	*/
+	void GetEnStoreInfo();
+private:
+
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetEnStore,
+		ESetEnStoreComplete,
+		EGetEnStoreInfo,
+		EGetEnStoreInfoComplete,
+		EATNotInProgress
+		}iState;
+	
+    /**
+	* PhonebookEn used entries
+	*/		
+	TUint16 iUsed;
+	
+    /**
+	* PhonebookEn total entries
+	*/		
+	TUint16 iTotal;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;			
+
+	}; // class CAtPhbkEnGetInfo
+
+#endif //  ATPHBKENGETINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/inc/atphbkenread.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,151 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkenread.h
+// This contains CAtPhbkEnRead which is use to read a PhonebookEn Entry
+// 
+
+#ifndef ATPHBKENREAD_H
+#define ATPHBKENREAD_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+//constant defination
+const TInt KEnNumberLen = 6;
+
+/**
+ * CAtPhbkEnRead
+ *
+ */
+class CAtPhbkEnRead : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkEnRead();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkEnRead* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkEnRead* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* Set read PhonebookEn index
+	* 
+	* @param  aIndex
+	* @param  aSlotNum
+	*/
+	void SetIndex(TInt aIndex);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtPhbkEnRead(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  Executer AT command for reading a phonebook entry
+	*/	
+	void ReadEntry();
+	
+private:
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetEnName,
+		ESetEnNameComplete,
+		EReadEntry,
+		EReadEntryComplete,
+		EATNotInProgress
+		}iState;
+		
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;
+	
+	/*
+	* the first index should be read
+	*/
+	TInt iIndex;
+	
+	/*
+	* the phonebooken number want to read
+	*/
+	TBuf<KEnNumberLen> iNumber;
+	
+	
+	/*
+	*  indicate whether it is OK or ERROR string 
+	*/
+    TBool   iEndFlag;
+	
+	}; // class CAtPhbkEnRead
+#endif // ATPHBKENREAD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/inc/atphbkenreadall.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,141 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkenreadall.h
+// This contains CAtPhbkEnReadAll which is used to read all PhonebookEn Entries
+// 
+
+#ifndef ATPHBKENREADALL_H
+#define ATPHBKENREADALL_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+//constant defination
+const TInt KEnNumberLength = 6;
+
+/**
+ * CAtPhbkEnReadAll
+ *
+ */
+class CAtPhbkEnReadAll : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtPhbkEnReadAll();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkEnReadAll* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtPhbkEnReadAll* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CAtPhbkEnReadAll(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  Executer AT command for reading phonebook entries
+	*/	
+	void ReadEntry();
+private:	
+	/**
+	*  state machine for EventSignal 
+	*/	
+	enum 
+		{
+		ESetEnName,
+		ESetEnNameComplete,
+		EReadEntry,
+		EReadEntryComplete,
+		EATNotInProgress
+		}iState;
+	
+	/**
+	* The return error value of AT command executed 
+	*/		
+	TInt iError;	
+
+	/*
+	* the first index should be read
+	*/
+	TInt iIndex;
+	
+	/*
+	* the phonebooken number want to read
+	*/
+	TBuf<KEnNumberLength> iNumber;
+	
+	/*
+	*  indicate whether it is OK or ERROR string 
+	*/
+    TBool   iEndFlag;
+	
+	}; // class CAtPhbkEnReadAll
+#endif // ATPHBKENREADALL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/src/atphbkengetinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,265 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkengetinfo.cpp
+// This contains CAtPhbkEnGetInfo which is used to get emergency call info
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <etelmm.h>
+
+//user include
+#include "atphbkengetinfo.h"
+#include "mslogger.h"
+#include "ltsycommondefine.h"
+
+//constant defination
+_LIT8(KSetEnStore,"AT+CPBS=\"%S\"\r");
+_LIT8(KGetEnStoreInfo,"AT+CPBS?\r");
+_LIT8(KCPBSResponseString,"+CPBS:");
+_LIT8(KPhonebookEn,"EN");
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::CAtPhbkEnGetInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnGetInfo::CAtPhbkEnGetInfo(CGlobalPhonemanager& aGloblePhone, 
+                                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkEnGetInfo::CAtPhbkEnGetInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::~CAtPhbkEnGetInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnGetInfo::~CAtPhbkEnGetInfo()
+	{
+	LOGTEXT(_L8("CAtPhbkEnGetInfo::~CAtPhbkEnGetInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnGetInfo* CAtPhbkEnGetInfo::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtPhbkEnGetInfo* self = new (ELeave)CAtPhbkEnGetInfo(aGloblePhone, 
+			                                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnGetInfo* CAtPhbkEnGetInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtPhbkEnGetInfo* self=CAtPhbkEnGetInfo::NewLC(aGloblePhone, 
+                                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnGetInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnGetInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnGetInfo::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkEnGetInfo::ExecuteCommand called"));
+	iState = ESetEnStore;
+	TPtrC8  storeName;
+	iTxBuffer.Zero();
+	storeName.Set(KPhonebookEn);
+	iTxBuffer.Format(KSetEnStore,&storeName);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnGetInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkEnGetInfo::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookEnStoreGetInfoComp(aStatus,iUsed);
+		}
+	else
+		{
+		if( aEventSource == EWriteCompletion )
+			{
+			LOGTEXT(_L8("CAtPhbkEnGetInfo::EventSignal,EWriteCompletion!"));
+			if( iState==ESetEnStore )
+				{
+				iState = ESetEnStoreComplete;
+				}
+			else if( iState==EGetEnStoreInfo )
+				{
+				iState = EGetEnStoreInfoComplete;
+				}
+			 }
+		else 
+			{
+			LOGTEXT(_L8("CAtPhbkEnGetInfo::EventSignal,EReadCompletion!"));
+			if( iState == ESetEnStoreComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone)
+					{
+					iState = EGetEnStoreInfo;
+					GetEnStoreInfo();
+					}
+				else
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookEnStoreGetInfoComp(iError,iUsed);
+					}
+				}
+			else if( iState == EGetEnStoreInfoComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				iCtsyDispatcherCallback.CallbackPhonebookEnStoreGetInfoComp(iError,iUsed);
+				}
+			}
+		}
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::GetEnStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnGetInfo::GetEnStoreInfo()
+	{
+	LOGTEXT(_L8("CAtPhbkEnGetInfo::GetEnStoreInfo callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Copy(KGetEnStoreInfo);
+	Write();   
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnGetInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnGetInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState==ESetEnStoreComplete )
+		{
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+		}
+	else if( iState==EGetEnStoreInfoComplete )
+		{
+		/**
+		* Here is an Example 
+		* +CPBS: "EN",2,16 
+        * phonebooken is selected,2 locations are used and 
+        * total 16 locations are available
+		*/
+		iError = KErrNone;
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		//remove AT+CPBS
+		if(array[0].MatchF(KAnyATCommand)!=KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG			
+		for( TInt i=0;i<count;i++ )
+			{
+		    LOGTEXT3(_L8("CAtPhbkEnGetInfo::ParseResponseL\tarray[%d]=%S"),
+		    		      i,&array[i]);     
+			}
+#endif			
+		if (count <= 1)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		if(array[0].MatchF(KCPBSResponseString)==KErrNotFound)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+				
+		//parse used
+		TLex8 lex(array[2]);
+		TUint16 val;
+		TInt ret=lex.Val(val,EDecimal);
+		if(ret!=KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		iUsed = val;
+		
+		//parse total
+		TLex8 lex1(array[3]);
+		ret=lex1.Val(val,EDecimal);
+		if(ret!=KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		iTotal = val;
+	    LOGTEXT3(_L8("CAtPhbkEnGetInfo::ParseResponseL\tPreferred store used=%d, total=%d"), 
+	    		                                iUsed,iTotal);
+		CleanupStack::PopAndDestroy(&array);
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/src/atphbkenread.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,293 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkenread.cpp
+// This contains CAtPhbkEnRead which is use to read a PhonebookEn Entry
+// 
+
+//system include
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mpbutil.h>
+#include <cmmgsmphonestorageutility.h>
+
+//user include 
+#include "atphbkenread.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KPhbkStoreRead,"AT+CPBR=%d\r");
+_LIT8(KSelPhonebookEn,"AT+CPBS=\"EN\"\r");
+_LIT8(KCPBRMatchString,"+CPBR:*");
+_LIT8(KCPBRSResponseString,"+CPBR:");
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::CAtPhbkEnRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnRead::CAtPhbkEnRead(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkEnRead::CAtPhbkEnRead called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::~CAtPhbkEnRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnRead::~CAtPhbkEnRead()
+	{
+	LOGTEXT(_L8("CAtPhbkEnRead::~CAtPhbkEnRead called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnRead* CAtPhbkEnRead::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkEnRead* self = new (ELeave)CAtPhbkEnRead(aGloblePhone, 
+                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnRead* CAtPhbkEnRead::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkEnRead* self=CAtPhbkEnRead::NewLC(aGloblePhone, 
+                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	AddExpectStringL(KLtsyOkString);
+	AddExpectStringL(KLtsyErrorString);
+	AddExpectStringL(KCPBRMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::SetIndex
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::SetIndex(TInt aIndex)
+	{
+	iIndex = aIndex;
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkEnRead::ExecuteCommand called"));
+	iState = ESetEnName;
+	iTxBuffer.Zero();	
+	iTxBuffer.Copy(KSelPhonebookEn);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::ReadEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::ReadEntry()
+	{
+	LOGTEXT(_L8("CAtPhbkEnRead::ReadEntry callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KPhbkStoreRead,iIndex);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkEnRead::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadEntryComp(aStatus,iIndex,iNumber);
+		}
+	else
+		{
+		if( aEventSource== EWriteCompletion )
+			{
+			if( iState==ESetEnName )
+				{
+				iState = ESetEnNameComplete;
+				}
+			else if( iState==EReadEntry )
+				{
+				iState = EReadEntryComplete;
+				}
+			}
+		else 
+			{
+			if( iState==ESetEnNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone)
+					{
+					ClearBuffer();
+					iState = EReadEntry;
+					ReadEntry();
+					}
+				else 
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadEntryComp(iError,iIndex,iNumber);
+					}
+				}
+			else if( iState==EReadEntryComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				//encounter OK or ERROR
+				if( iEndFlag )
+					{
+					ClearBuffer();
+					iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadEntryComp(iError,iIndex,iNumber);
+					}
+				else
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadEntryComp(iError,iIndex,iNumber);
+					ClearCurrentLine();
+					}
+				}
+			} 
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnRead::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnRead::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState == ESetEnNameComplete )
+	    {
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+	    }
+	else if( iState == EReadEntryComplete )
+		{
+		/**
+		* +CPBR = <index>,<number>,<129>
+		* OK    
+		*/
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		// remove the string of AT+CPBR=..
+		if(array[0].MatchF(KAnyATCommand)!=KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG		
+		for( TInt i=0;i<count;i++ )
+			{
+			LOGTEXT3(_L8("CAtPhbkEnRead::ParseResponseL\tarray[%d]=%S"),i,&array[i]); 
+			}
+#endif		
+		if((array[0].Match(KLtsyOkString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNone;
+			iEndFlag = ETrue;
+			return; 
+			}
+		else if((array[0].Match(KLtsyErrorString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrGeneral;
+			iEndFlag = ETrue;
+			return; 
+			}
+	  
+		iError = KErrNone;
+		//remove number line if it has 
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			array.Remove(0);
+			}
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		//parse index
+		TLex8 lex(array[1]);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		//Index  
+		iIndex = val;    
+		iNumber.Zero();
+		iNumber.Copy(array[2]);   
+		//Parse TON/NPI
+		TLex8 lex1(array[3]);
+		TUint16 val1;
+		ret = lex1.Val(val1,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		CleanupStack::PopAndDestroy();
+		} 
+    }
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/phonebooken/src/atphbkenreadall.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,292 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atphbkenreadall.cpp
+// This contains CAtPhbkEnReadAll which is used to read all PhonebookEn Entries
+// 
+
+//system include 
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mpbutil.h>
+#include <cmmgsmphonestorageutility.h>
+
+//user include 
+#include "atphbkenreadall.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KPhbkStoreRead,"AT+CPBR=%d,%d\r");
+_LIT8(KSelPhonebookEn,"AT+CPBS=\"EN\"\r");
+_LIT8(KCPBRMatchString,"+CPBR:*");
+_LIT8(KCPBRSResponseString,"+CPBR:");
+const TInt KEnStartIndex = 1;
+const TInt KEnEndIndex = 16;
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::CAtPhbkEnReadAll
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnReadAll::CAtPhbkEnReadAll(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtPhbkEnReadAll::CAtPhbkEnReadAll called"));
+	iEndFlag = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::~CAtPhbkEnReadAll
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnReadAll::~CAtPhbkEnReadAll()
+	{
+	LOGTEXT(_L8("CAtPhbkEnReadAll::~CAtPhbkEnReadAll called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnReadAll* CAtPhbkEnReadAll::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkEnReadAll* self = new (ELeave)CAtPhbkEnReadAll(aGloblePhone, 
+                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtPhbkEnReadAll* CAtPhbkEnReadAll::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtPhbkEnReadAll* self=CAtPhbkEnReadAll::NewLC(aGloblePhone, 
+                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnReadAll::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	AddExpectStringL(KLtsyOkString);
+	AddExpectStringL(KLtsyErrorString);
+	AddExpectStringL(KCPBRMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnReadAll::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnReadAll::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtPhbkEnReadAll::ExecuteCommand called"));
+	iState = ESetEnName;
+	iTxBuffer.Zero();	
+	iTxBuffer.Copy(KSelPhonebookEn);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::ReadEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnReadAll::ReadEntry()
+	{
+	LOGTEXT(_L8("CAtPhbkEnReadAll::ReadEntry callded"));
+	iPhoneGlobals.iEventSignalActive = ETrue;
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KPhbkStoreRead,KEnStartIndex,KEnEndIndex);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnReadAll::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtPhbkEnReadAll::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus != KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadAllComp(aStatus,iIndex,iNumber,EFalse);
+		}
+	else
+		{
+		if( aEventSource== EWriteCompletion )
+			{
+			if( iState==ESetEnName )
+				{
+				iState = ESetEnNameComplete;
+				}
+			else if( iState==EReadEntry )
+				{
+				iState = EReadEntryComplete;
+				}
+			}
+		else 
+			{
+			if( iState==ESetEnNameComplete )
+				{
+				Complete();
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				if(iError == KErrNone)
+					{
+					ClearBuffer();
+					iState = EReadEntry;
+					ReadEntry();
+					}
+				else 
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadAllComp(iError,iIndex,iNumber,EFalse);
+					}
+				}
+			else if( iState==EReadEntryComplete )
+				{
+				//encounter OK or ERROR
+				if( iEndFlag )
+					{
+					ClearBuffer();
+					iIndex++;
+					iNumber.Zero();
+					Complete();
+					iPhoneGlobals.iEventSignalActive = EFalse;
+		    		iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadAllComp(iError,iIndex,iNumber,EFalse);
+					}
+				else 
+					{
+					iCtsyDispatcherCallback.CallbackPhonebookEnStoreReadAllComp(iError,iIndex,iNumber,ETrue);
+					ClearCurrentLine();
+					}
+				}
+			}
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtPhbkEnReadAll::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtPhbkEnReadAll::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if( iState == ESetEnNameComplete )
+	    {
+		if (CurrentLine().Match(KLtsyOkString) == 0)
+			{
+			iError = KErrNone;
+			}
+		else
+			{
+			iError = KErrGeneral;
+			}
+	    }
+	else if( iState == EReadEntryComplete )
+		{
+		/**
+		* Here is an Example 
+		* at+CPBR=1,16  
+		*+CPBR: 1,"112",129
+		*+CPBR: 2,"911",129
+		*OK
+		*/
+		RArray<TPtrC8> array;
+		CleanupClosePushL(array);
+		iParser->ParseRespondedBuffer(array,Buffer());
+		// remove the string of AT+CPBR=..
+		if(array[0].MatchF(KAnyATCommand)!=KErrNotFound)
+			{
+			array.Remove(0);
+			}
+		TInt count = array.Count();
+#ifdef _DEBUG		
+		for( TInt i = 0;i<count;i++ )
+			{
+			LOGTEXT3(_L8("CAtPhbkEnReadAll::ParseResponseL\tarray[%d]=%S"),i,&array[i]);  
+			}
+#endif		
+		if((array[1].Match(KLtsyOkString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNone;
+			iEndFlag = ETrue;
+			return; 
+			}
+		else if((array[1].Match(KLtsyErrorString) == KErrNone))
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrGeneral;
+			iEndFlag = ETrue;
+			return; 
+			}
+	  
+		iError = KErrNone;
+		//remove number line if it has 
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			array.Remove(0);
+			}
+		if( array[0].MatchF(KCPBRSResponseString) == KErrNotFound )
+			{
+			CleanupStack::PopAndDestroy();
+			iError = KErrNotFound;
+			return;
+			}
+		//parse index
+		TLex8 lex(array[1]);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		//Index  
+		iIndex = val;     
+		iNumber.Zero();
+		iNumber.Copy(array[2]);   
+		//Parse TON/NPI
+		TLex8 lex1(array[3]);
+		TUint16 val1;
+		ret = lex1.Val(val1,EDecimal);
+		if(ret != KErrNone)
+			{
+			CleanupStack::PopAndDestroy();
+			iError = ret;
+			return;
+			}
+		CleanupStack::PopAndDestroy();
+		} 
+  	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/activatecontextandgetaddr.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,117 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file activatecontextandgetip.h
+// 
+// 
+
+#ifndef __CACTIVATECONTEXTANDGETIP_H__
+#define __CACTIVATECONTEXTANDGETIP_H__
+
+// user include
+#include <callbacktimer.h>
+#include "atcommandcontrolbase.h"
+
+class CATHelperCommand;
+class CATGprsContextActivate;
+class CATGPRSGetContextAddr;
+class CATGprsContextConnect;
+
+/**
+ * CActivatContextAndGetAddr inherits from the CATCommandControlBase class. 
+ * This class provide the common functionalities for activatinf context and 
+ * get context address.
+ *
+ */
+class CActivatContextAndGetAddr : public CATCommandControlBase
+{
+public:
+	static CActivatContextAndGetAddr* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CActivatContextAndGetAddr();
+	virtual void AtCommandExecuteComplete(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * start the request 
+	 */
+	void StartRequest();
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+
+protected :
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CActivatContextAndGetAddr(CGlobalPhonemanager& aGloblePhone, 
+		                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * Call back when the at command finished
+	 * 
+	 */
+	void DispatcherCallback(TInt aError);
+	/**
+	 * Start an AT Command
+	 * @param  aAtCommand the AT Command class 
+	 */
+	void StartATCommand(CAtCommandBase* aAtCommand);
+	/**
+	 * End an AT Command
+	 * @param  aAtCommand  the AT Command class 
+	 */
+	void EndATCommand(CAtCommandBase* aAtCommand);
+	/**
+	 * Start an AT Help Command
+	 * @param  aATString the AT Command string 
+	 * @param  aATType the AT Command Type 
+	 */
+	void ExecuteATHelpCommand(const TDesC8& aATString,TLtsyATCommandType aATType);
+	
+private:
+	CATHelperCommand* iATHelperCommand;
+	CATGprsContextActivate* iATGprsContextActivate;
+	CATGPRSGetContextAddr* iATGPRSGetContextAddr;
+	CATGprsContextConnect* iATGprsContextConnect;
+	/**
+	 * Context ID
+	 */
+	TInt iContextId;
+    /**
+	* Identify the Type of AT Command
+	*/
+	TLtsyATCommandType iATType;
+	TUint iConnectionSpeed;
+	enum 
+		{
+		EATNone,
+		EATActivateContext,
+		EATGetContextIp
+		} iATCommandName;
+
+};
+#endif //__CACTIVATECONTEXTANDGETIP_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsattach.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,78 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsattach.h
+// This contains CATGprsAttach which is defines the AT command used for attacheing.
+// 
+
+
+#ifndef _ATGPRSATTACH_H
+#define _ATGPRSATTACH_H
+
+// user include
+#include "atcommandbase.h"
+
+/**
+ * CATGprsAttach inherits from the CAtCommandBase class. 
+ * This class provide the common functionalities for attacheing.
+ *
+ */
+class CATGprsAttach : public CAtCommandBase
+{
+public:
+	static CATGprsAttach* NewL(CGlobalPhonemanager& aGloblePhone, 
+                               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsAttach();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 *  Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Cancel the AT Command execution
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsAttach(CGlobalPhonemanager& aGloblePhone, 
+                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsconfig.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,98 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsconfig.h
+// AT command definition
+// This contains CATGPRSSetConfig which is defines the AT command used 
+// for setting GPRS context configuration.
+// 
+
+#ifndef _ATGPRSCONFIG_H
+#define _ATGPRSCONFIG_H
+
+// user include
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+/**
+ * CATGPRSSetConfig inherits from the CAtCommandBase class. 
+ * This class provide the common functionalities for setting 
+ * GPRS context configuration.
+ *
+ */
+class CATGPRSSetConfig : public CAtCommandBase
+{
+public:
+	static CATGPRSSetConfig* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGPRSSetConfig();
+	/**
+	 * This Function creates the at set string for the AT+CGDCONT command.
+	 */
+	TInt MakeupCGDCONT();
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGPRSSetConfig( CGlobalPhonemanager& aGloblePhone, 
+                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+	
+	TBool iDeleteContext;
+	
+};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextactivate.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,85 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprscontextactivate.h
+// AT command definition
+// This file defines the AT command used for activating a PDP context.
+// 
+
+#ifndef __ATGPRSCONTEXTACTIVATE_H
+#define __ATGPRSCONTEXTACTIVATE_H
+
+// user include
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+
+/**
+ * CATGprsContextActivate inherits from the CATCommands class. 
+ * Sends the AT command to attach a context to the network.
+ */
+class CATGprsContextActivate : public CAtCommandBase
+{
+public:
+	static CATGprsContextActivate* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsContextActivate();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	TInt GetErrorValue();
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsContextActivate(CGlobalPhonemanager& aGloblePhone, 
+                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextconnect.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,87 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprscontextconnect.h
+// AT command definition
+// This file defines the AT command used for activating a PDP context.
+// 
+
+#ifndef __ATGPRSCONTEXTCONNECT_H
+#define __ATGPRSCONTEXTCONNECT_H
+
+// user include
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+
+/**
+ * CATGprsContextConnect inherits from the CATCommands class. 
+ * Sends the AT command to attach a context to the network.
+ */
+class CATGprsContextConnect : public CAtCommandBase
+{
+public:
+	static CATGprsContextConnect* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsContextConnect();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	TInt GetErrorValue();
+	virtual void StartRequest();
+	TUint GetConnectionSpeed();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsContextConnect(CGlobalPhonemanager& aGloblePhone, 
+                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+	TUint iConnectionSpeed;
+};
+
+
+#endif //__ATGPRSCONTEXTCONNECT_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextdeactivate.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,89 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprscontextdeactivate.h
+// AT command definition
+// This file defines the AT command used for deactivating a PDP context.
+// 
+
+
+#ifndef __ATGPRSCONTEXTDEACTIVATE_H
+#define __ATGPRSCONTEXTDEACTIVATE_H
+
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+/**
+ * CATGprsContextDelete inherits from the CATCommands class. 
+ * Sends the AT command to deactivate a context to the network.
+ */
+class CATGprsContextDeactivate : public CAtCommandBase
+{
+public:
+	static CATGprsContextDeactivate* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsContextDeactivate();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsContextDeactivate(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructorr
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprscontextdelete.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,89 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprscontextdelete.h
+// AT command definition
+// This file defines the AT command used for deleting a context from the phone.
+// 
+
+#ifndef __ATGPRSCONTEXTDELETE_H
+#define __ATGPRSCONTEXTDELETE_H
+
+// user include
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+/**
+ * CATGprsContextDelete inherits from the CATCommands class. 
+ * Sends the AT command 'AT+CGDCONT=x' to delete a context from the phone
+ */
+class CATGprsContextDelete : public CAtCommandBase
+{
+public:
+	static CATGprsContextDelete* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsContextDelete();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsContextDelete(CGlobalPhonemanager& aGloblePhone, 
+                         CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructorr
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsdetach.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,78 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsdetach.h
+// AT command definition
+// This file defines the AT command used for detaching..
+// 
+
+#ifndef _ATGPRSDETACH_H
+#define _ATGPRSDETACH_H
+
+#include "atcommandbase.h"
+
+/**
+ * CATGprsDetach inherits from the CAtCommandBase class. 
+ * Sends the AT command to detach from the network.
+ * This class transmits the following commands: AT+CGATT=0
+ */
+class CATGprsDetach : public CAtCommandBase
+{
+public:
+	static CATGprsDetach* NewL(CGlobalPhonemanager& aGloblePhone, 
+                               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsDetach();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsDetach(CGlobalPhonemanager& aGloblePhone, 
+                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsgetcontextaddr.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,90 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsgetcontextip.h
+// AT command definition
+// This contains CATGPRSGetContextAddr which is defines the AT command used 
+// for getting GPRS context IP address.
+// 
+
+#ifndef _ATGPRSGETCONTEXTIP_H
+#define _ATGPRSGETCONTEXTIP_H
+
+// user include
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+/**
+ * CATGPRSGetContextAddr inherits from the CAtCommandBase class. 
+ * This class provide the common functionalities for getting 
+ * GPRS context IP address..
+ *
+ */
+class CATGPRSGetContextAddr : public CAtCommandBase
+{
+public:
+	static CATGPRSGetContextAddr* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGPRSGetContextAddr();
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	TInt GetErrorValue();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGPRSGetContextAddr( CGlobalPhonemanager& aGloblePhone, 
+                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+	/*
+	 * The config to be set configuration
+	 */
+	RPacketContext::TContextConfigGPRS iContextConfig;
+    };
+
+#endif //_ATGPRSGETCONTEXTIP_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsntwkregstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,90 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsntwkregstatus.h
+// AT command definition
+// This file defines the AT command used for getting out the phones current network
+//registration status..
+// 
+
+#ifndef __ATGPRSNTWKREGSTATUS_H
+#define __ATGPRSNTWKREGSTATUS_H
+
+//system include
+#include <etelpckt.h>
+
+//user include
+#include "atcommandbase.h"
+
+class CATGprsNtwkRegStatusChange;
+/**
+ * CATGprsNtwkRegStatus inherits from the CAtCommandBase class. 
+ * Sends the AT command to find out the phones current network
+ * registration status.
+ * This class transmits the following commands: AT+CGREG?
+ */
+class CATGprsNtwkRegStatus : public CAtCommandBase
+{
+public:
+	static CATGprsNtwkRegStatus* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+                                      CATGprsNtwkRegStatusChange& aNtwkRegStatusChange);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsNtwkRegStatus();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 * @param aNtwkRegStatusChange
+	 */
+	CATGprsNtwkRegStatus(CGlobalPhonemanager& aGloblePhone, 
+                         CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+                         CATGprsNtwkRegStatusChange& aNtwkRegStatusChange);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	RPacketService::TRegistrationStatus iGprsRegistrationStatus; 
+	CATGprsNtwkRegStatusChange& iNtwkRegStatusChange;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsntwkregstatuschange.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,108 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsntwkregstatus.h
+// AT command definition
+// This file defines the AT command used to Notify the phones current network
+//registration status..
+//
+
+#ifndef __ATGPRSNTWKREGSTATUSCHANGE_H
+#define __ATGPRSNTWKREGSTATUSCHANGE_H
+
+//system include
+
+//user include
+#include "atcommandbase.h"
+/**
+ * CATGprsNtwkRegStatusChange inherits from the CAtCommandBase class. 
+ * AT command to Notify the phones current network
+ * registration status.
+ * This class transmits the following commands: +CGREG:
+ */
+class CATGprsNtwkRegStatusChange : public CAtCommandBase
+	{
+public:
+	static CATGprsNtwkRegStatusChange* NewL(CGlobalPhonemanager& aGloblePhone,
+			                                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	static CATGprsNtwkRegStatusChange* NewLC(CGlobalPhonemanager& aGloblePhone,
+			                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);			                     	
+	/**
+	 * Destructor
+	 *
+	 */
+	virtual ~CATGprsNtwkRegStatusChange();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand(){};
+	/**
+	 * Parses the +CGREG unsolicited string from the modem.
+	 * An example response would be '+CGREG: 2' where the value denotes the
+	 * current registration status.
+	 * If parsing succeeds then aRegStatus is updated.
+	 * 
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	 * 
+	 * 
+	 */
+	void Enable();
+	/**
+	 * 
+	 * 
+	 */
+	void Disable();
+	
+	
+protected:
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsNtwkRegStatusChange(CGlobalPhonemanager& aGloblePhone,
+				               CCtsyDispatcherCallback& aCtsyDispatcherCallback);	
+	/**
+	 * 2nd Constructor
+	 * This function must be called in his subtype class for 
+	 * creating instance of class CRespondBufParser
+	 */
+	void ConstructL();
+	
+private:
+	/**
+	 * 
+	 * 
+	 */
+	RPacketService::TRegistrationStatus iRegistrationStatus;
+	/*
+	 * The return value of AT command executed 
+	 */
+	TInt iError;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/atgprsqosprofile.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,87 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atgprsqosprofile.h
+// AT command definition
+// This file defines the AT command used to set GPRS Qos profile
+//
+
+#ifndef __ATGPRSQOSPROFILE_H
+#define __ATGPRSQOSPROFILE_H
+
+#include "atcommandbase.h"
+#include "cltsypacketserviceshandler.h"
+
+/**
+ * CATGprsSetProfileMin inherits from the CAtCommandBase class. 
+ * AT command to set GPRS Qos profile for require value
+ * This class transmits the following commands: AT+CGQREQ=%d,%d,%d,%d,%d,%d
+ */
+class CATGprsSetProfileReq : public CAtCommandBase
+{
+public:
+	static CATGprsSetProfileReq* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CATGprsSetProfileReq();
+	/**
+	 * Format the command 
+	 */
+	void MakeupCGQREQ();
+	/**
+	 * Set the context for config
+	 * 
+	 */
+	void SetContext(const TInt aContextId);
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * Start Execute AT Command
+	 */
+	virtual void ExecuteCommand();
+	/**
+	 * Virtual function. Inherited from CAtCommandBase
+	 * @param aResponseBuf Line buf reading from baseband 
+	 */
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	 * Will be called by AT Manager whenever a event was triggered
+	 * 
+	 * @param aEventSource
+	 * @param aStatus
+	 */
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	virtual void StartRequest();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CATGprsSetProfileReq( CGlobalPhonemanager& aGloblePhone, 
+                          CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	TInt iError;
+	TInt iContextId;
+	RPacketQoS::TQoSGPRSRequested iQoSConfig;
+    };
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/inc/initialisepdpcontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,83 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file initialisepdpcontext.h
+// This contains CInitialisePdpContext which is defines the founctions for loan comm port.
+// 
+
+#ifndef __INITIALISEPDPCONTEXT_H__
+#define __INITIALISEPDPCONTEXT_H__
+
+#include <callbacktimer.h>
+
+// user include
+#include "atcommandcontrolbase.h"
+#include "cltsypacketserviceshandler.h"
+
+/**
+ *  CInitialisePdpContext inherits from the MTimerObserver class. 
+ * This class provide the common functionalities for Initialise Pdp Context.
+ */
+class CInitialisePdpContext : public MTimerObserver,
+                              public CBase
+{
+public:
+	static CInitialisePdpContext* NewL(CGlobalPhonemanager& aGloblePhone, 
+		                               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * Destructor
+	 *
+	 */
+	~CInitialisePdpContext();
+
+	void StartRequest();
+	/*
+	 * Set the parameter of AT command 
+	 * 
+	 * @param aContext The context to be set configuration
+	 */
+	void SetContext(const TInt aContextId);
+	/**
+	 * This function will stop the TSY from using the comport 
+	 * and loan it to the client.
+	 */
+	void LoanCommPort();
+	
+protected:	
+	/**
+	 * Constructor
+	 *
+	 * @param aGloblePhone
+	 * @param aCtsyDispatcherCallback
+	 */
+	CInitialisePdpContext(CGlobalPhonemanager& aGloblePhone, 
+		                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	/**
+	 * 2nd Constructor
+	 */
+	void ConstructL();
+private:
+	//From MTimerObserver
+    virtual void TimerRun(TInt aError);	
+private:
+	
+	CGlobalPhonemanager& iPhoneGlobals;
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	CCallbackTimer* iCallbackTimer;	
+	/*
+	 * The context to be set configuration
+	 */
+	TInt iContextId;
+    };
+
+#endif //__INITIALISEPDPCONTEXT_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/activatecontextandgetaddr.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,313 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CActivatContextAndGetAddr
+// 
+
+#include <ctsy/ltsy/ltsylogger.h>
+
+#include "activatecontextandgetaddr.h"
+#include "mslogger.h"
+#include "athelpercommand.h"
+#include "atgprscontextactivate.h"
+#include "atgprsgetcontextaddr.h"
+#include "atgprscontextconnect.h"
+#include "commengine.h"
+
+_LIT8(KATDeleteContext2, "AT+CGDCONT=2\r");
+_LIT8(KATDeleteContext3, "AT+CGDCONT=3\r");
+_LIT8(KATDeleteContext4, "AT+CGDCONT=4\r");
+
+// CActivatContextAndGetAddr
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::NewL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CActivatContextAndGetAddr* CActivatContextAndGetAddr::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CActivatContextAndGetAddr* self = new(ELeave) CActivatContextAndGetAddr(aGloblePhone,
+			                                      aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::CActivatContextAndGetAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CActivatContextAndGetAddr::CActivatContextAndGetAddr(CGlobalPhonemanager& aGloblePhone, 
+	                        CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CATCommandControlBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::CActivatContextAndGetAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::ConstructL()
+	{
+	iATCommandName = EATNone;
+	iATHelperCommand = CATHelperCommand::NewL(iPhoneGlobals,iCtsyDispatcherCallback);
+	
+	iATGprsContextActivate = CATGprsContextActivate::NewL(iPhoneGlobals,
+			                                              iCtsyDispatcherCallback);
+	iATGPRSGetContextAddr = CATGPRSGetContextAddr::NewL(iPhoneGlobals,
+								                        iCtsyDispatcherCallback);
+	iATGprsContextConnect = CATGprsContextConnect::NewL(iPhoneGlobals,
+								                        iCtsyDispatcherCallback);
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::~CActivatContextAndGetAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CActivatContextAndGetAddr::~CActivatContextAndGetAddr()
+	{
+	delete iATHelperCommand;
+	iATHelperCommand = NULL;
+	
+	delete iATGprsContextActivate;
+	iATGprsContextActivate = NULL;
+	
+	delete iATGPRSGetContextAddr;
+	iATGPRSGetContextAddr = NULL;
+	
+	delete iATGprsContextConnect;
+	iATGprsContextConnect = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::AtCommandExecuteComplete()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::AtCommandExecuteComplete(TAtEventSource aEventSource, 
+		                                                 TInt aStatus)
+	{
+	if((aEventSource == EWriteCompletion)&&(KErrNone == aStatus))
+		{
+		return;
+		}
+	
+	TInt ret = KErrNone;
+	switch(iATType)
+		{
+		case ELtsyAT_Packet_DeleteContext2:
+            ret = iATHelperCommand->GetErrorValue();
+		    if ((KErrNone == ret) && (KErrNone == aStatus))
+		        {
+		        ExecuteATHelpCommand(KATDeleteContext3,ELtsyAT_Packet_DeleteContext3);
+		        }
+		    else
+		        {
+	            EndATCommand(iATHelperCommand);
+                iPhoneGlobals.iEventSignalActive = EFalse;
+                LOGTEXT3(_L8("[Ltsy] DeleteContext2 failed (%d or %d) in CActivatContextAndGetAddr"), ret, aStatus);
+                DispatcherCallback(KErrGeneral);
+		        }
+			break;
+		case ELtsyAT_Packet_DeleteContext3:
+            ret = iATHelperCommand->GetErrorValue();
+            if ((KErrNone == ret) && (KErrNone == aStatus))
+                {
+                ExecuteATHelpCommand(KATDeleteContext4,ELtsyAT_Packet_DeleteContext4);
+                }
+            else
+                {
+                EndATCommand(iATHelperCommand);
+                iPhoneGlobals.iEventSignalActive = EFalse;
+                LOGTEXT3(_L8("[Ltsy] DeleteContext3 failed (%d or %d) in CActivatContextAndGetAddr"), ret, aStatus);
+                DispatcherCallback(KErrGeneral);
+                }
+			break;
+		case ELtsyAT_Packet_DeleteContext4:
+            ret = iATHelperCommand->GetErrorValue();
+            EndATCommand(iATHelperCommand);
+            if ((KErrNone == ret) && (KErrNone == aStatus))
+                {
+                iATGprsContextActivate->SetContext(iContextId);
+                StartATCommand(iATGprsContextActivate);
+                }
+            else
+                {
+                iPhoneGlobals.iEventSignalActive = EFalse;
+                LOGTEXT3(_L8("[Ltsy] DeleteContext4 failed (%d or %d) in CActivatContextAndGetAddr"), ret, aStatus);
+                DispatcherCallback(KErrGeneral);
+                }
+			break;
+		case ELtsyAT_Packet_ActivateContext:
+			EndATCommand(iATGprsContextActivate);
+			if(aStatus == KErrNone)
+				{
+				ret = iATGprsContextActivate->GetErrorValue();
+				if(KErrNone == ret)
+					{
+					iATGPRSGetContextAddr->SetContext(iContextId);
+					StartATCommand(iATGPRSGetContextAddr);
+					}
+				else
+				    {
+				    iPhoneGlobals.iEventSignalActive = EFalse;
+				    DispatcherCallback(ret);
+				    }
+				}
+			else
+				{
+				iPhoneGlobals.iEventSignalActive = EFalse;
+				DispatcherCallback(aStatus);
+				}
+			break;
+		case ELtsyAT_Packet_GetContextAddr: 
+			EndATCommand(iATGPRSGetContextAddr);
+			if(aStatus == KErrNone)
+				{
+				ret = iATGPRSGetContextAddr->GetErrorValue();
+				if(KErrNone == ret)
+					{
+					iATGprsContextConnect->SetContext(iContextId);
+					StartATCommand(iATGprsContextConnect);
+					}
+				else
+				    {
+                    iPhoneGlobals.iEventSignalActive = EFalse;
+                    DispatcherCallback(ret);
+				    }
+				}
+			else
+				{
+                iPhoneGlobals.iEventSignalActive = EFalse;
+				DispatcherCallback(aStatus);
+				}
+			break;
+		case ELtsyAT_Packet_ConnectContext: 
+			EndATCommand(iATGprsContextConnect);
+			if(aStatus == KErrNone)
+				{
+				ret = iATGprsContextConnect->GetErrorValue();
+				if(KErrNone == aStatus)
+					{
+					iConnectionSpeed = iATGprsContextConnect->GetConnectionSpeed();
+					}
+				DispatcherCallback(ret);
+				}
+			else
+				{
+				DispatcherCallback(aStatus);
+				}
+            iPhoneGlobals.iEventSignalActive = EFalse;
+			break;
+		default:
+			break;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::StartRequest()
+	{
+	iATHelperCommand->SetAtCommandObserver(this);
+	ExecuteATHelpCommand(KATDeleteContext2,ELtsyAT_Packet_DeleteContext2);
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::SetContext()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::ExecuteNextATHelpCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::ExecuteATHelpCommand(const TDesC8& aATString,TLtsyATCommandType aATType)
+	{
+	iATHelperCommand->Complete();
+	iATHelperCommand->SetAtCommandString(aATString);
+	iATType = aATType;
+	iATHelperCommand->StartRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::StartATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::StartATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->SetAtCommandObserver(this);
+	iATType = aAtCommand->AtType();
+	aAtCommand->StartRequest();
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::EndATCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::EndATCommand(CAtCommandBase* aAtCommand)
+	{
+	aAtCommand->RemoveAtCommandObserver();
+	aAtCommand->Complete();
+	}
+
+// ---------------------------------------------------------------------------
+// CActivatContextAndGetAddr::DispatcherCallback()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CActivatContextAndGetAddr::DispatcherCallback(TInt aError)
+	{
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i = 0;
+	
+	//Get the context from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesActivatePdpContextComp(aError, 
+			                iPhoneGlobals.iContextList[i]->iInfo.iName,
+			                iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iAccessPointName,
+			                iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpType);
+	if(aError == KErrNone)
+		{
+		iPhoneGlobals.iContextList[i]->iInfo.iStatus = RPacketContext::EStatusActive;
+		TContextMisc contextMisc;
+		contextMisc.iStatus = RPacketContext::EStatusActive;
+		iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineData;
+		iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextStatusChangeInd(aError,
+								iPhoneGlobals.iContextList[i]->iInfo.iName,
+								contextMisc);
+		iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextConfigChangedInd(aError, 
+				                iPhoneGlobals.iContextList[i]->iInfo.iName, 
+				                iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iAccessPointName, 
+				                iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpAddress, 
+				                0, 
+				                iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iProtocolConfigOption.iMiscBuffer);
+		iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextConnectionSpeedChangeInd(aError,
+				                iPhoneGlobals.iContextList[i]->iInfo.iName,
+				                iConnectionSpeed);
+		iPhoneGlobals.iCommEngine->CommCancel();
+		}
+	}
+
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsattach.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,138 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGprsAttach
+// The execution command is used to attach the MT to, or detach the MT from, the GPRS
+// service. After the command has completed, the MT remains in V.25ter command state.
+// If the MT is already in the requested state, the command is ignored and the OK
+// response is returned. If the requested state cannot be achieved, an ERROR or +CME
+// ERROR response is returned. Extended error responses are enabled by the +CMEE
+// command.
+// Any active PDP contexts will be automatically deactivated when the attachment state
+// changes to detached.
+// The read command returns the current GPRS service state.
+// The test command is used for requesting information on the supported GPRS service
+// states.
+// +CGATT= [<state>]
+// <state>: indicates the state of GPRS attachment
+// 0 – detached
+// 1 – attached
+// Other values are reserved and will result in an ERROR response to the
+// execution command.
+// other items were commented in a header
+// 
+
+#include "atgprsattach.h"
+#include "mslogger.h"
+
+_LIT8(KAttachCommand, "AT+CGATT=1\r");
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::NewL
+// other items were commented in a header
+// --------------------------------------------------------------------------
+CATGprsAttach* CATGprsAttach::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsAttach* self = new(ELeave) CATGprsAttach(aGloblePhone,
+			                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::CATGprsAttach
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsAttach::CATGprsAttach(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsAttach::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::~CATGprsAttach()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsAttach::~CATGprsAttach()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsAttach::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsAttach::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KAttachCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsAttach::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsAttach::EventSigna
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsAttach::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesPacketAttachComp(aStatus);
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsconfig.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,242 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CActivatContextAndGetAddr
+// This command specifies PDP context parameter values for a PDP context identified 
+// by the local context identification parameter, <cid>.
+// Eleven PDP contexts can be defined through Wavecom software.
+// A special form of the set command, +CGDCONT= <cid> causes the values for context
+// number <cid> to become undefined.
+// The test command returns values supported as a compound value. If the MT supports
+// several PDP types, <PDP_type>, the parameter value ranges for each <PDP_type> are
+// returned on a separate line.
+// The read command returns the current settings for each defined context.
+// The test command returns values supported as a compound value. If the MT supports
+// several PDP types, <PDP_type), the parameter value ranges for each <PDP_type> are
+// returned on a separate line.
+// +CGDCONT=[<cid> [,<PDP_type> [,<APN>[,<PDP_addr> [,<d_comp>[,<h_comp>]]]]]]
+// Defined values
+// <cid>: (PDP Context Identifier) a numeric parameter (1-32) which specifies a particular
+// PDP context definition. The parameter is local to the TE-MT interface and is used in
+// other PDP context-related commands.
+// <PDP_type>: (Packet Data Protocol type) a string parameter which specifies the type of
+// packet data protocol
+// IP Internet Protocol
+// PPP Point to Point Protocol
+// <APN>: (Access Point Name) a string parameter, which is a logical name that is used to
+// select the GGSN or the external packet data network.
+// If the value is null or omitted, then the subscription value will be requested.
+// WAVECOM confidential ?
+// This confidential document is the property of WAVECOM and may not be copied or circulated
+// without permission
+// <PDP_address>: a string parameter that identifies the MT in the address space
+// applicable to the PDP.
+// If the value is null or omitted, then a value may be provided by the TE during the PDP
+// startup procedure or, failing that, a dynamic address will be requested.
+// The read form of the command will continue to return the null string even if an address
+// has been allocated during the PDP startup procedure. The allocated address may be
+// read using the +CGPADDR command.
+// <d_comp>: a numeric parameter that controls PDP data compression
+// 0 - off (default if value is omitted)
+// 1 ?on
+// Other values are reserved.
+// <h_comp>: a numeric parameter that controls PDP header compression
+// 0 - off (default if value is omitted)
+// 1 ?on
+// Other values are reserved.
+// other items were commented in a header
+
+#include "mslogger.h"
+#include "atgprsconfig.h"
+
+_LIT8(KIPType4	, "IP");
+_LIT8(KIPType6	, "IP");
+_LIT8(KX25		, "X25");
+_LIT8(KSetCGDCONTCommand,"AT+CGDCONT=%d,\"%S\",\"%S\"\r");
+_LIT8(KATDeleteContext1, "AT+CGDCONT=1\r");
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::NewL
+//
+// ---------------------------------------------------------------------------
+CATGPRSSetConfig* CATGPRSSetConfig::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGPRSSetConfig* self = new(ELeave) CATGPRSSetConfig(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::CATGPRSSetConfig
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGPRSSetConfig::CATGPRSSetConfig(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSSetConfig::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iDeleteContext = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::~CATGPRSSetConfig()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGPRSSetConfig::~CATGPRSSetConfig()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSSetConfig::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSSetConfig::ExecuteCommand()
+	{
+	iDeleteContext = ETrue;
+	iTxBuffer.Copy(KATDeleteContext1);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::MakeupCGDCONT()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGPRSSetConfig::MakeupCGDCONT()
+	{
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i;
+	//Get the context location from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+	const TInt KPDPTypeIdent=5;
+	TBuf8<KPDPTypeIdent>						pdpType;		// PDP Type identifier
+	TBuf8<RPacketContext::KGSNNameLength>		gsnName;			// Access point Name
+	TBuf8<RPacketContext::KMaxPDPAddressLength>	pdpAddress;	// PDP pre-assigned address
+	switch(iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpType)
+		{
+		case RPacketContext::EPdpTypeIPv4:
+			pdpType.Format(KIPType4);
+			break;
+		case RPacketContext::EPdpTypeIPv6:
+			pdpType.Format(KIPType6);
+			break;
+		case RPacketContext::EPdpTypeX25:
+			pdpType.Format(KX25);
+			break;
+		default:
+			pdpType.Format(KIPType6);
+			break;
+		}
+
+	gsnName.Copy(iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iAccessPointName);
+	pdpAddress.Copy(iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpAddress);
+
+	iTxBuffer.Format(KSetCGDCONTCommand, iContextId, &pdpType, &gsnName);
+
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::SetContext
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSSetConfig::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSSetConfig::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSSetConfig::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSSetConfig::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	if(iDeleteContext)
+		{
+		iDeleteContext = EFalse;
+		TInt ret=MakeupCGDCONT();
+		Write();
+		}
+	else
+		{
+		TInt count = iPhoneGlobals.iContextList.Count();
+		TInt i;
+		//Get the context location from context list
+		for(i = 0; i < count;i++)
+			{
+			if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+				{
+				break;
+				}
+			}
+		iCtsyDispatcherCallback.CallbackPacketServicesSetPdpContextConfigComp(aStatus,
+						        iPhoneGlobals.iContextList[i]->iInfo.iName);
+        iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextAddedInd(aStatus,
+                                iPhoneGlobals.iContextList[i]->iInfo.iName);
+		CAtCommandBase::Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		}
+	}
+
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextactivate.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,148 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The execution command is used to activate or deactivate the specified PDP context (s).
+// After the command has completed, the MT remains in V.25ter command state. If any
+// PDP context is already in the requested state, the state for that context remains
+// unchanged.
+// If the requested state for any specified context cannot be achieved, an ERROR or +CME
+// ERROR response is returned. Extended error responses are enabled by the +CMEE
+// command.
+// If the MT is not GPRS attached when the activation form of the command is executed,
+// the MT first performs a GPRS attach and them attempts to activate the specified
+// contexts. If the attach fails then the MT responds with ERROR or, if extended error
+// responses are enabled, with the appropriate failure-to-attach error message.
+// If no <cid>s are specified the activation form of the command activates all defined
+// contexts.
+// If no <cid>s are specified the deactivation form of the command deactivates all active
+// contexts.
+// Two PDP contexts can be activated through Wavecom software.
+// The read command returns the current activation states for all the defined PDP
+// contexts.
+// The test command is used for requesting information on the supported PDP context
+// activation states.
+// Defined Values
+// <state>: indicates the state of PDP context activation
+//  0 ?deactivated
+//  1 ?activated
+//  Other values are reserved and will result in an ERROR response to the
+// execution command.
+// <cid>: a numeric parameter which specifies a particular PDP context.
+//  other items were commented in a header
+
+#include "mslogger.h"
+#include "atgprscontextactivate.h"
+
+_LIT8(KATContextActivate,   "AT+CGACT=1,%d\r");
+const TInt KLtsyGprsContextActivateTimeOut = 30;
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::NewL
+//
+// ---------------------------------------------------------------------------
+CATGprsContextActivate* CATGprsContextActivate::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsContextActivate* self = new(ELeave) CATGprsContextActivate(aGloblePhone,
+			                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::CATGprsContextActivate
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextActivate::CATGprsContextActivate(CGlobalPhonemanager& aGloblePhone, 
+                                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextActivate::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Packet_ActivateContext;
+	iReadTimeOut = KLtsyGprsContextActivateTimeOut;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::~CATGprsContextActivate()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextActivate::~CATGprsContextActivate()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextActivate::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextActivate::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CATGprsContextActivate::Start called"));
+	LOGTEXT2(_L8("iCid=%d"),iContextId);
+	iTxBuffer.Format(KATContextActivate,iContextId);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::SetContext
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextActivate::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGprsContextActivate::GetErrorValue()
+	{
+	return iError;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextActivate::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextActivate::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextconnect.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,178 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The execution command is used to activate or deactivate the specified PDP context (s).
+// After the command has completed, the MT remains in V.25ter command state. If any
+// PDP context is already in the requested state, the state for that context remains
+// unchanged.
+// If the requested state for any specified context cannot be achieved, an ERROR or +CME
+// ERROR response is returned. Extended error responses are enabled by the +CMEE
+// command.
+// If the MT is not GPRS attached when the activation form of the command is executed,
+// the MT first performs a GPRS attach and them attempts to activate the specified
+// contexts. If the attach fails then the MT responds with ERROR or, if extended error
+// responses are enabled, with the appropriate failure-to-attach error message.
+// If no <cid>s are specified the activation form of the command activates all defined
+// contexts.
+// If no <cid>s are specified the deactivation form of the command deactivates all active
+// contexts.
+// Two PDP contexts can be activated through Wavecom software.
+// The read command returns the current activation states for all the defined PDP
+// contexts.
+// The test command is used for requesting information on the supported PDP context
+// activation states.
+// Defined Values
+// <state>: indicates the state of PDP context activation
+//  0 ?deactivated
+//  1 ?activated
+//  Other values are reserved and will result in an ERROR response to the
+// execution command.
+// <cid>: a numeric parameter which specifies a particular PDP context.
+//  other items were commented in a header
+
+#include "mslogger.h"
+#include "atgprscontextconnect.h"
+
+_LIT8(KATContextConnect,   "ATD*99***%d#\r");
+_LIT8(KLtsyGprsNoConnect, "NO CARRIER");
+_LIT8(KLtsyGprsConnectStr, "CONNECT*");
+_LIT8(KLtsyGprsConnect, "CONNECT");
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::NewL
+//
+// ---------------------------------------------------------------------------
+CATGprsContextConnect* CATGprsContextConnect::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsContextConnect* self = new(ELeave) CATGprsContextConnect(aGloblePhone,
+			                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::CATGprsContextConnect
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextConnect::CATGprsContextConnect(CGlobalPhonemanager& aGloblePhone, 
+                                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextConnect::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Packet_ConnectContext;
+	AddExpectStringL(KLtsyGprsConnectStr);
+	AddExpectStringL(KLtsyGprsNoConnect);
+	iReadTimeOut = 30;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::~CATGprsContextConnect()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextConnect::~CATGprsContextConnect()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextConnect::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextConnect::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CATGprsContextConnect::Start called"));
+	LOGTEXT2(_L8("iCid=%d"),iContextId);
+	iTxBuffer.Format(KATContextConnect,iContextId);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::SetContext
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextConnect::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGprsContextConnect::GetErrorValue()
+	{
+	return iError;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::GetConnectionSpeed
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TUint CATGprsContextConnect::GetConnectionSpeed()
+	{
+	return iConnectionSpeed;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextConnect::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextConnect::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,CurrentLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	if( array[0].MatchF(KLtsyGprsConnect)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	else
+		{
+		TUint val = 0;
+		TLex8 lex(array[1]);
+		lex.Val(val);
+		iConnectionSpeed = val;
+		CleanupStack::PopAndDestroy(&array);
+		iError = KErrNone;
+		}
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextdeactivate.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,176 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The execution command is used to activate or deactivate the specified PDP context (s).
+// After the command has completed, the MT remains in V.25ter command state. If any
+// PDP context is already in the requested state, the state for that context remains
+// unchanged.
+// If the requested state for any specified context cannot be achieved, an ERROR or +CME
+// ERROR response is returned. Extended error responses are enabled by the +CMEE
+// command.
+// If the MT is not GPRS attached when the activation form of the command is executed,
+// the MT first performs a GPRS attach and them attempts to activate the specified
+// contexts. If the attach fails then the MT responds with ERROR or, if extended error
+// responses are enabled, with the appropriate failure-to-attach error message.
+// If no <cid>s are specified the activation form of the command activates all defined
+// contexts.
+// If no <cid>s are specified the deactivation form of the command deactivates all active
+// contexts.
+// Two PDP contexts can be activated through Wavecom software.
+// The read command returns the current activation states for all the defined PDP
+// contexts.
+// The test command is used for requesting information on the supported PDP context
+// activation states.
+// Defined Values
+// <state>: indicates the state of PDP context activation
+//  0 ?deactivated
+//  1 ?activated
+//  Other values are reserved and will result in an ERROR response to the
+// execution command.
+// <cid>: a numeric parameter which specifies a particular PDP context.
+//  other items were commented in a header
+// other items were commented in a header
+
+#include "mslogger.h"
+#include "atgprscontextdeactivate.h"
+
+_LIT8(KATContextDeactivate,   "AT+CGACT=0,%d\r");
+const TInt KDefaultDeactivateTimeout = 30;
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::NewL
+//
+// ---------------------------------------------------------------------------
+CATGprsContextDeactivate* CATGprsContextDeactivate::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsContextDeactivate* self = new(ELeave) CATGprsContextDeactivate(aGloblePhone,
+			                                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::CATGprsContextDeactivate
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextDeactivate::CATGprsContextDeactivate(CGlobalPhonemanager& aGloblePhone, 
+                                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	iReadTimeOut = KDefaultDeactivateTimeout;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDeactivate::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Packet_DeactivateContext;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::~CATGprsContextDeactivate()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextDeactivate::~CATGprsContextDeactivate()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDeactivate::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDeactivate::ExecuteCommand()
+	{
+	LOGTEXT2(_L8("iCid=%d"),iContextId);
+	// Send the AT+CGACT=0,x command to the phone
+	iTxBuffer.Format(KATContextDeactivate,iContextId);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::SetContext
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDeactivate::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDeactivate::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDeactivate::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDeactivate::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if((KErrNone ==aStatus)&&(aEventSource == EWriteCompletion))
+		{
+		return;
+		}
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i;
+	//Get the context from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+	if((KErrNone ==aStatus)&&(aEventSource == EReadCompletion)&&(iError==KErrNone))
+		{
+		iPhoneGlobals.iContextList[i]->iInfo.iStatus = RPacketContext::EStatusInactive;
+		TContextMisc contextMisc;
+		contextMisc.iStatus = RPacketContext::EStatusInactive;
+		iPhoneGlobals.iPhoneStatus.iMode = RPhone::EModeOnlineCommand;
+		iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextStatusChangeInd(iError,
+				                iPhoneGlobals.iContextList[i]->iInfo.iName,
+				                contextMisc);
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesDeactivatePdpContextComp(iError,
+					        iPhoneGlobals.iContextList[i]->iInfo.iName);
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprscontextdelete.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,144 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CATGprsContextDelete
+
+#include "atgprscontextdelete.h" // header file for this source file
+#include "mslogger.h"		 // for LOGTEXT macros
+
+_LIT8(KATContextDelete,  "AT+CGDCONT=%d\r");
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::NewL
+// AT state machine which will send AT+CGDCONT=x to delete a context from the phone.
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextDelete* CATGprsContextDelete::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsContextDelete* self = new(ELeave) CATGprsContextDelete(aGloblePhone,
+			                                                      aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::CATGprsContextDelete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextDelete::CATGprsContextDelete(CGlobalPhonemanager& aGloblePhone, 
+                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDelete::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::~CATGprsContextDelete()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsContextDelete::~CATGprsContextDelete()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDelete::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDelete::ExecuteCommand()
+	{
+	LOGTEXT2(_L8("iCid=%d"),iContextId);
+	// Send the AT+CGDCONT=x command to the phone
+	iTxBuffer.Format(KATContextDelete,iContextId);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::SetContext
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDelete::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDelete::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsContextDelete::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsContextDelete::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if((KErrNone ==aStatus)&&(aEventSource == EWriteCompletion))
+		{
+		return;
+		}
+	TName Name;
+	if((KErrNone ==aStatus)&&(aEventSource == EReadCompletion)&&(iError==KErrNone))
+		{
+		TInt count = iPhoneGlobals.iContextList.Count();
+		TInt i;
+		//Get the context from context list
+		for(i = 0; i < count;i++)
+			{
+			if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+				{
+				Name = iPhoneGlobals.iContextList[i]->iInfo.iName;
+				delete iPhoneGlobals.iContextList[i];
+				iPhoneGlobals.iContextList[i] = NULL;
+				iPhoneGlobals.iContextList.Remove(i);
+				break;
+				}
+			}
+		count = iPhoneGlobals.iContextList.Count();
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesDeletePdpContextComp(aStatus,Name);
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsdetach.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,134 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The execution command is used to attach the MT to, or detach the MT from, the GPRS
+// service. After the command has completed, the MT remains in V.25ter command state.
+// If the MT is already in the requested state, the command is ignored and the OK
+// response is returned. If the requested state cannot be achieved, an ERROR or +CME
+// ERROR response is returned. Extended error responses are enabled by the +CMEE
+// command.
+// Any active PDP contexts will be automatically deactivated when the attachment state
+// changes to detached.
+// The read command returns the current GPRS service state.
+// The test command is used for requesting information on the supported GPRS service
+// states.
+// +CGATT= [<state>]
+// <state>: indicates the state of GPRS attachment
+// 0 ?detached
+// 1 ?attached
+// Other values are reserved and will result in an ERROR response to the
+// execution command.
+
+#include "mslogger.h"
+#include "atgprsdetach.h"
+
+_LIT8(KDetachCommand, "AT+CGATT=0\r");
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsDetach* CATGprsDetach::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsDetach* self = new(ELeave) CATGprsDetach(aGloblePhone,
+			                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::CATGprsDetach
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsDetach::CATGprsDetach(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsDetach::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::~CATGprsDetach()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsDetach::~CATGprsDetach()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsDetach::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsDetach::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KDetachCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsDetach::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsDetach::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsDetach::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesPacketDetachComp(aStatus);
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsgetcontextaddr.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,163 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The execution command returns a list of PDP addresses for the specified context
+// identifiers.
+// The test command returns a list of defined <cid>s
+// Defined values
+// <cid>: a numeric parameter which specifies a particular PDP context definition. 
+// If no <cid> is specified, the addresses for all defined contexts are returned.
+// <PDP_address>: a string that identifies the MT in the address space applicable 
+// to the PDP. The address may be static or dynamic. For a static address, it will 
+// be the one set by the +CGDCONT command when the context was defined. For a 
+// dynamic address it will be the one assigned during the last PDP context 
+// activation that used the context definition referred to by <cid>. 
+// <PDP_address> is omitted if none is available.
+
+#include "mslogger.h"
+#include "atgprsgetcontextaddr.h"
+
+_LIT8(KATGetContextAddress,    "AT+CGPADDR=%d\r");
+_LIT8(KATGetContextAddressStr, "+CGPADDR:");
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGPRSGetContextAddr* CATGPRSGetContextAddr::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGPRSGetContextAddr* self = new(ELeave) CATGPRSGetContextAddr(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::CATGPRSGetContextAddr
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGPRSGetContextAddr::CATGPRSGetContextAddr(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSGetContextAddr::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	iAtType = ELtsyAT_Packet_GetContextAddr;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::~CATGPRSGetContextAddr()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGPRSGetContextAddr::~CATGPRSGetContextAddr()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSGetContextAddr::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSGetContextAddr::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CATGPRSGetContextAddr::Start called"));
+	LOGTEXT2(_L8("iCid=%d"),iContextId);
+	iTxBuffer.Format(KATGetContextAddress,iContextId);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::SetContext
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSGetContextAddr::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::GetErrorValue
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CATGPRSGetContextAddr::GetErrorValue()
+	{
+	return iError;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGPRSGetContextAddr::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGPRSGetContextAddr::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	if( array[0].MatchF(KATGetContextAddressStr)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i = 0;
+	//Get the context from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+	if(Count > 2 )
+		{
+		iPhoneGlobals.iContextList[i]->iDefContextConfigGPRS.iPdpAddress.Copy(array[2]);
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	CleanupStack::PopAndDestroy(&array);
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsntwkregstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,198 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// The set command controls the presentation of an unsolicited result code +CGREG:
+// <stat> when <n>=1 and there is a change in the MT's GPRS network registration
+// status, or code +CGREG: <stat>[,<lac>,<ci>] when <n>=2 and there is a change of the
+// network cell.
+// The read command returns the status of result code presentation and an integer <stat>
+// which shows whether the network has currently indicated the registration of the MT.
+// Location information elements <lac> and <ci> are returned only when <n>=2 and MT
+// is registered in the network.
+// Defined values
+// <n>:
+//  0 disable network registration unsolicited result code
+//  1 enable network registration unsolicited result code +CGREG: <stat>
+//  2 enable network registration and location information unsolicited result code
+// +CGREG: <stat>[,<lac>,<ci>]
+// <stat>:
+//  0 not registered, ME is not currently searching a new operator to register to
+//  1 registered, home network
+//  2 not registered, but ME is currently searching a new operator to register to
+//  3 registration denied
+//  4 unknown
+//  5 registered, roaming
+// <lac>:
+//  string type; two byte location area code in hexadecimal format.
+// <ci>:
+//  string type; two byte cell ID in hexadecimal format
+
+#include "atgprsntwkregstatus.h"		// Header file for this source file
+#include "mslogger.h"				// For LOGTEXT macros
+#include "atgprsntwkregstatuschange.h"	
+
+_LIT8(KATGprsNtwkRegStatusCommand, "AT+CGREG?\r");
+_LIT8(KATGetGprsNetworkRegResponse,"+CGREG:");
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatus* CATGprsNtwkRegStatus::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+                                                 CATGprsNtwkRegStatusChange& aNtwkRegStatusChange)
+	{
+	CATGprsNtwkRegStatus* self = new(ELeave) CATGprsNtwkRegStatus(aGloblePhone,
+			                                                      aCtsyDispatcherCallback,
+			                                                      aNtwkRegStatusChange);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::CATGprsNtwkRegStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatus::CATGprsNtwkRegStatus(CGlobalPhonemanager& aGloblePhone, 
+                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+                                           CATGprsNtwkRegStatusChange& aNtwkRegStatusChange)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback),
+		iNtwkRegStatusChange(aNtwkRegStatusChange)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatus::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::~CATGprsNtwkRegStatus
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatus::~CATGprsNtwkRegStatus()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::StartRequestL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatus::StartRequest()
+	{
+	iNtwkRegStatusChange.Disable();
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatus::ExecuteCommand()
+	{
+	iTxBuffer.Copy(KATGprsNtwkRegStatusCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::ParseResponseL
+// other items were commented in a header
+//
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatus::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) != 0)
+		{
+		iError = KErrGeneral;
+		return;
+		}
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,PrecedingLine());
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	if( array[0].MatchF(KATGetGprsNetworkRegResponse)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrGeneral;
+		return ;
+		}
+	
+	// Skip over one parameter
+	TInt val = 0;
+	TLex8 lex(array[2]);
+	lex.Val(val);
+	// Convert scond value to equivalent EtelMM enum
+	switch(val)
+		{
+	case 0:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+		iGprsRegistrationStatus = RPacketService::ENotRegisteredNotSearching;
+		break;
+	case 1:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+		iGprsRegistrationStatus=RPacketService::ERegisteredOnHomeNetwork;
+		break;
+	case 2:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+		iGprsRegistrationStatus=RPacketService::ENotRegisteredSearching;
+		break;
+	case 3:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+		iGprsRegistrationStatus=RPacketService::ERegistrationDenied;
+		break;
+	case 4:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+		iGprsRegistrationStatus=RPacketService::EUnknown;
+		break;
+	case 5:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+		iGprsRegistrationStatus=RPacketService::ERegisteredRoaming;
+		break;
+	default:
+		iGprsRegistrationStatus = RPacketService::EUnknown;
+		break;
+		}
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	} //ParseResponseL
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatus::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatus::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesGetPacketNetworkRegistrationStatusComp(aStatus,
+					        iGprsRegistrationStatus);
+	iNtwkRegStatusChange.Enable();
+	CAtCommandBase::Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+// End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprsntwkregstatuschange.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,175 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// +CGREG: <stat>[,<lac>,<ci>]
+// <stat>:
+//  0 not registered, ME is not currently searching a new operator to register to
+//  1 registered, home network
+//  2 not registered, but ME is currently searching a new operator to register to
+//  3 registration denied
+//  4 unknown
+//  5 registered, roaming
+// <lac>:
+//  string type; two byte location area code in hexadecimal format.
+// <ci>:
+//  string type; two byte cell ID in hexadecimal format
+
+#include <et_phone.h>		// For CTelObject
+#include "atgprsntwkregstatuschange.h"		// Header file for this source file
+#include "mslogger.h"					// For LOGTEXT macros
+
+_LIT8(KATGetGprsNtwkRegResponse,"+CGREG:*");
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatusChange* CATGprsNtwkRegStatusChange::NewL(CGlobalPhonemanager& aGloblePhone,
+		                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsNtwkRegStatusChange* self = CATGprsNtwkRegStatusChange::NewLC(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatusChange* CATGprsNtwkRegStatusChange::NewLC(CGlobalPhonemanager& aGloblePhone,
+		                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsNtwkRegStatusChange* self = new (ELeave) CATGprsNtwkRegStatusChange(aGloblePhone, aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::~CATGprsNtwkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatusChange::~CATGprsNtwkRegStatusChange()
+	{
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatusChange::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	RemoveAllExpectString();
+	AddExpectStringL(KATGetGprsNtwkRegResponse);
+	Enable();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::CATGprsNtwkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsNtwkRegStatusChange::CATGprsNtwkRegStatusChange(CGlobalPhonemanager& aGloblePhone,
+		                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+							   :CAtCommandBase(aGloblePhone, aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::CATGprsNtwkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatusChange::Enable()
+	{
+	AddUnsolicitedAtCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::CATGprsNtwkRegStatusChange
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatusChange::Disable()
+	{
+	RemoveAtCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatusChange::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,CurrentLine());
+	ClearCurrentLine();
+	TInt Count = array.Count();
+	if (Count < 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	if( array[0].MatchF(KATGetGprsNtwkRegResponse)==KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return ;
+		}
+	// Skip over one parameter
+	
+	TInt val = 0;
+	TLex8 lex(array[1]);
+	lex.Val(val);
+	// Convert scond value to equivalent EtelMM enum
+	switch(val)
+		{
+		case 0:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+			iRegistrationStatus = RPacketService::ENotRegisteredNotSearching;
+			break;
+		case 1:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+			iRegistrationStatus=RPacketService::ERegisteredOnHomeNetwork;
+			break;
+		case 2:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+			iRegistrationStatus=RPacketService::ENotRegisteredSearching;
+			break;
+		case 3:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+			iRegistrationStatus=RPacketService::ERegistrationDenied;
+			break;
+		case 4:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+			iRegistrationStatus=RPacketService::EUnknown;
+			break;
+		case 5:		// ETSI value as defined in ETSI 07.07 section 10.1.14
+			iRegistrationStatus=RPacketService::ERegisteredRoaming;
+			break;
+		default:
+			iRegistrationStatus = RPacketService::EUnknown;
+			break;
+		}
+	CleanupStack::PopAndDestroy(&array);
+	iError = KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsNtwkRegStatusChange::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsNtwkRegStatusChange::EventSignal(TAtEventSource /*aEventSource*/, TInt /*aStatus*/)
+	{
+	iCtsyDispatcherCallback.CallbackPacketServicesNotifyPacketNetworkRegistrationStatusInd(iError,
+				            iRegistrationStatus);
+	}
+
+//End file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/atgprssetqosprofile.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,390 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// This file implements the CATGprsSetProfile class and the CATGprsGetProfile.
+// This command allows the TE to specify a Quality of Service Profile that is 
+// used when the MT sends an Activate PDP Context Request message to the network.
+// The set command specifies a profile for the context identified by the local context
+// identification parameter, <cid>. Since this is the same parameter that is used in the
+// +CGDCONT command, the +CGQREQ command is effectively an extension to the
+// +CGDCONT command. The QoS profile consists of a number of parameters, each of
+// which may be set to a separate value.
+// A special form of the set command, +CGQREQ= <cid> causes the requested profile for
+// context number <cid> to become undefined.
+// The read command returns the current settings for each defined context.
+// The test command returns values supported as a compound value. If the MT supports
+// several PDP types, the parameter value ranges for each PDP type are returned on a
+// separate line.
+// Defined values
+// <cid>: a numeric parameter which specifies a particular PDP context definition.
+// <precedence>: a numeric parameter which specifies the precedence class
+// <delay>: a numeric parameter which specifies the delay class
+// <reliability>: a numeric parameter which specifies the reliability class
+// <peak>: a numeric parameter which specifies the peak throughput class
+// <mean>: a numeric parameter which specifies the mean throughput class
+// If a value is omitted for a particular class then the value is considered to be 
+// unspecified.
+// AT+CGQREQ=[<cid> [,<precedence >[,<delay> [,<reliability.> [,<peak>[,<mean>]]]]]]
+// other items were commented in a header
+
+#include <pcktcs.h>
+#include "atgprsqosprofile.h"
+#include <etelpckt.h>
+#include "mslogger.h"
+
+_LIT8(KCGQreq, "AT+CGQREQ=%d,%d,%d,%d,%d,%d\r");
+
+// CATGprsSetProfileReq::NewL()
+CATGprsSetProfileReq* CATGprsSetProfileReq::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CATGprsSetProfileReq* self = new(ELeave) CATGprsSetProfileReq(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop(self );
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::CATGprsSetProfileReq()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsSetProfileReq::CATGprsSetProfileReq(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsSetProfileReq::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::~CATGprsSetProfileReq()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CATGprsSetProfileReq::~CATGprsSetProfileReq()
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsSetProfileReq::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::ExecuteCommand()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsSetProfileReq::ExecuteCommand()
+	{
+	MakeupCGQREQ();
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::SetContext()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsSetProfileReq::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i;
+	//Get the context from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+	iQoSConfig = iPhoneGlobals.iContextList[i]->iQoSConfig;
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::ParseResponseL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsSetProfileReq::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CATGprsSetProfileReq::EventSignal()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CATGprsSetProfileReq::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	if(KErrNone ==aStatus)
+		{
+		if(aEventSource == EReadCompletion)
+			{
+			aStatus = iError;
+			}
+		else
+			return;
+		}
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i;
+	//Get the context from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+
+	CAtCommandBase::Complete();
+	if(KErrNone ==aStatus)
+		{
+		RPacketQoS::TQoSGPRSNegotiated QoSGPRSNegotiated;
+		QoSGPRSNegotiated.iDelay = iPhoneGlobals.iContextList[i]->iQoSConfig.iReqDelay;
+		QoSGPRSNegotiated.iMeanThroughput = iPhoneGlobals.iContextList[i]->iQoSConfig.iReqMeanThroughput;
+		QoSGPRSNegotiated.iPeakThroughput = iPhoneGlobals.iContextList[i]->iQoSConfig.iReqPeakThroughput;
+		QoSGPRSNegotiated.iPrecedence = iPhoneGlobals.iContextList[i]->iQoSConfig.iReqPrecedence;
+		QoSGPRSNegotiated.iReliability = iPhoneGlobals.iContextList[i]->iQoSConfig.iReqReliability;
+		iCtsyDispatcherCallback.CallbackPacketServicesNotifyQosProfileChangedGPRSInd(aStatus,
+				                iPhoneGlobals.iContextList[i]->iInfo.iName,
+				                QoSGPRSNegotiated);
+		}
+	iCtsyDispatcherCallback.CallbackPacketServicesSetPdpContextQosComp(aStatus,
+						    iPhoneGlobals.iContextList[i]->iInfo.iName);
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	}
+
+/**
+ * This Function creates the at set string for the AT+CGQREQ command.
+ */
+void CATGprsSetProfileReq::MakeupCGQREQ()
+	{
+	TInt precedence, delay, reliability, peakthru, meanthru = 0;
+
+	switch (iQoSConfig.iReqPrecedence)
+		{
+		case RPacketQoS::EPriorityHighPrecedence:
+			precedence = 1; // high precedence
+		break;
+
+		case RPacketQoS::EPriorityMediumPrecedence:
+			precedence = 2; // normal precedence
+		break;
+		
+		case RPacketQoS::EPriorityLowPrecedence:
+			precedence = 3; // low precedence
+		break;
+		
+		default:
+			precedence = 0; // unspecified or unknown precedence
+		break;
+		};
+
+	switch (iQoSConfig.iReqDelay)
+		{
+		case RPacketQoS::EDelayClass1:
+			delay = 1;
+		break;
+
+		case RPacketQoS::EDelayClass2:
+			delay = 2;
+		break;
+
+		case RPacketQoS::EDelayClass3:
+			delay = 3;
+		break;
+
+		case RPacketQoS::EDelayClass4:
+			delay = 4;
+		break;
+
+		default:
+			delay = 0;
+		break;
+		};
+
+	switch (iQoSConfig.iReqReliability)
+		{
+		case RPacketQoS::EReliabilityClass1:
+			reliability = 1;
+		break;
+
+		case RPacketQoS::EReliabilityClass2:
+			reliability = 2;
+		break;
+
+		case RPacketQoS::EReliabilityClass3:
+			reliability = 3;
+		break;
+
+		case RPacketQoS::EReliabilityClass4:
+			reliability = 4;
+		break;
+
+		case RPacketQoS::EReliabilityClass5:
+			reliability = 5;
+		break;
+
+		default:
+			reliability = 0; // unspecified or unknown reliability
+		break;
+		};
+
+	switch (iQoSConfig.iReqPeakThroughput)
+		{
+		case RPacketQoS::EPeakThroughput1000:
+			peakthru = 1;
+		break;
+
+		case RPacketQoS::EPeakThroughput2000:
+			peakthru = 2;
+		break;
+
+		case RPacketQoS::EPeakThroughput4000:
+			peakthru = 3;
+		break;
+
+		case RPacketQoS::EPeakThroughput8000:
+			peakthru = 4;
+		break;
+
+		case RPacketQoS::EPeakThroughput16000:
+			peakthru = 5;
+		break;
+
+		case RPacketQoS::EPeakThroughput32000:
+			peakthru = 6;
+		break;
+
+		case RPacketQoS::EPeakThroughput64000:
+			peakthru = 7;
+		break;
+
+		case RPacketQoS::EPeakThroughput128000:
+			peakthru = 8;
+		break;
+
+		case RPacketQoS::EPeakThroughput256000:
+			peakthru = 9;
+		break;
+		
+		default:
+			peakthru = 0; // unspecified or unknown peak throughput
+		break;
+		};
+
+	switch (iQoSConfig.iReqMeanThroughput)
+		{
+		case RPacketQoS::EMeanThroughput100:
+			meanthru = 2;
+		break;
+
+		case RPacketQoS::EMeanThroughput200:
+			meanthru = 3;
+		break;
+
+		case RPacketQoS::EMeanThroughput500:
+			meanthru = 4;
+		break;
+
+		case RPacketQoS::EMeanThroughput1000:
+			meanthru = 5;
+		break;
+
+		case RPacketQoS::EMeanThroughput2000:
+			meanthru = 6;
+		break;
+
+		case RPacketQoS::EMeanThroughput5000:
+			meanthru = 7;
+		break;
+
+		case RPacketQoS::EMeanThroughput10000:
+			meanthru = 8;
+		break;
+
+		case RPacketQoS::EMeanThroughput20000:
+			meanthru = 9;
+		break;
+		
+		case RPacketQoS::EMeanThroughput50000:
+			meanthru = 10;
+		break;
+
+		case RPacketQoS::EMeanThroughput100000:
+			meanthru = 11;
+		break;
+
+		case RPacketQoS::EMeanThroughput200000:
+			meanthru = 12;
+		break;
+		case RPacketQoS::EMeanThroughput500000:
+			meanthru = 13;
+		break;
+
+		case RPacketQoS::EMeanThroughput1000000:
+			meanthru = 14;
+		break;
+
+		case RPacketQoS::EMeanThroughput2000000:
+			meanthru = 15;
+		break;
+
+		case RPacketQoS::EMeanThroughput5000000:
+			meanthru = 16;
+		break;
+
+		case RPacketQoS::EMeanThroughput10000000:
+			meanthru = 17;
+		break;
+
+		case RPacketQoS::EMeanThroughput20000000:
+			meanthru = 18;
+		break;
+
+		case RPacketQoS::EUnspecifiedMeanThroughput:
+		case RPacketQoS::EMeanThroughput50000000:
+			meanthru = 31;
+		break;
+
+		default:
+			meanthru = 0; // unspecified or unknown mean throughput
+		break;
+		};
+
+	iTxBuffer.Format(KCGQreq,iContextId,			
+			precedence,
+			delay,
+			reliability,
+			peakthru,
+			meanthru);
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/pktservice/src/initialisepdpcontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,162 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// CInitialisePdpContext:
+// 
+
+#include "initialisepdpcontext.h"
+#include "mslogger.h"
+#include "tsyconfg.h"
+#include "globalphonemanager.h"
+
+const TInt KLtsyOnePause = 100000;
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::NewL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CInitialisePdpContext* CInitialisePdpContext::NewL(CGlobalPhonemanager& aGloblePhone, 
+	                                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CInitialisePdpContext* self = new(ELeave) CInitialisePdpContext(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::PushL(self );
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self ;
+	}
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::CInitialisePdpContext()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CInitialisePdpContext::CInitialisePdpContext(CGlobalPhonemanager& aGloblePhone, 
+	                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+		:iPhoneGlobals(aGloblePhone),
+		 iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::ConstructL()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitialisePdpContext::ConstructL()
+	{
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	}
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::~CInitialisePdpContext()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CInitialisePdpContext::~CInitialisePdpContext()
+	{
+	if(iCallbackTimer)
+		{
+		iCallbackTimer->Cancel();
+		delete iCallbackTimer;
+		iCallbackTimer = NULL;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::StartRequest()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitialisePdpContext::StartRequest()
+	{
+	iCallbackTimer->After(KLtsyOnePause);
+	}
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::SetContext()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitialisePdpContext::SetContext(const TInt aContextId)
+	{
+	iContextId = aContextId;
+	}
+
+// ---------------------------------------------------------------------------
+// CInitialisePdpContext::LoanCommPort()
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CInitialisePdpContext::LoanCommPort()
+	{
+	TInt count = iPhoneGlobals.iContextList.Count();
+	TInt i = 0;
+	
+	//Get the context from context list
+	for(i = 0; i < count;i++)
+		{
+		if(iPhoneGlobals.iContextList[i]->iContextID == iContextId)
+			{
+			break;
+			}
+		}
+	
+	TFileName csy;
+	TName port;
+	if(iPhoneGlobals.iPhoneStatus.iDataPortLoaned)
+		{
+		iCtsyDispatcherCallback.CallbackPacketServicesInitialisePdpContextComp(KErrEtelPortAlreadyLoaned,
+				                iPhoneGlobals.iContextList[i]->iInfo.iName,
+								port);
+		return ;
+		}
+	TInt ret = 0;
+	TRAP(ret,iPhoneGlobals.iConfiguration->ConfigModemStringL(TPtrC(KCDTypeNameCsyName),csy));
+	if (ret!=KErrNone)
+		{
+		iCtsyDispatcherCallback.CallbackPacketServicesInitialisePdpContextComp(ret,
+				                iPhoneGlobals.iContextList[i]->iInfo.iName,
+				                port);
+		return ;
+		}
+	TBuf8<KMaxName> tmp;
+	tmp.Copy(csy);
+    LOGTEXTREL2(_L8("csy:\t%S"),&tmp);
+	
+	TRAP(ret,iPhoneGlobals.iConfiguration->ConfigModemStringL(TPtrC(KCDTypeNamePortName),port));
+	if (ret!=KErrNone)
+		{
+		iCtsyDispatcherCallback.CallbackPacketServicesInitialisePdpContextComp(ret,
+				                iPhoneGlobals.iContextList[i]->iInfo.iName,
+				                port);
+		return;
+		}
+    tmp.Copy(port);
+    LOGTEXTREL2(_L8("port:\t%S"),&tmp);
+
+	iCtsyDispatcherCallback.CallbackPacketServicesInitialisePdpContextComp(KErrNone,
+			                iPhoneGlobals.iContextList[i]->iInfo.iName,
+			                port);
+
+	TContextMisc contextMisc;
+	contextMisc.iStatus = RPacketContext::EStatusInactive;
+	iPhoneGlobals.iContextList[i]->iInfo.iStatus = RPacketContext::EStatusInactive;
+	iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextStatusChangeInd(ret,
+			                iPhoneGlobals.iContextList[i]->iInfo.iName,
+							contextMisc);
+	iCtsyDispatcherCallback.CallbackPacketServicesNotifyPdpContextAddedInd(ret, 
+			                iPhoneGlobals.iContextList[i]->iInfo.iName);
+	}
+
+void CInitialisePdpContext::TimerRun(TInt aError)
+    {
+	if(aError == KErrNone)
+	    {
+	    LoanCommPort();
+		}
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atmessagestoreinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,119 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atmessagestoreinfo.h
+// This contains CAtMessageStoreInfo which is used to get message store information
+// 
+
+#ifndef ATMESSAGESTOREINFO_H
+#define ATMESSAGESTOREINFO_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtGetMessageStoreInfo
+ *
+ */
+
+class CAtMessageStoreInfo : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtMessageStoreInfo();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtMessageStoreInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtMessageStoreInfo* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+		
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtMessageStoreInfo(CGlobalPhonemanager& aGloblePhone, 
+                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	* indicate how many items message stored
+	*/
+	TInt iUsed;
+	
+	/**
+	* total items for storeing message
+	*/
+	TInt iTotal;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+    TInt iError;	
+    
+	}; // class CAtMessageStoreInfo
+
+#endif // ATMESSAGESTOREINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsack.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,187 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsack.h
+// This contains CAtSmsAck and CAtSmsNack which is used to send 
+// positive(negative) acknowledgment
+// 
+
+#ifndef ATSMSACK_H
+#define ATSMSACK_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+class CAtSmsAck : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsAck();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsAck* NewL(CGlobalPhonemanager& aGloblePhone, 
+                           CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsAck* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                            CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsAck(CGlobalPhonemanager& aGloblePhone, 
+              CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;	
+	}; // class CAtSmsAck
+
+class CAtSmsNack : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsNack();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsNack* NewL(CGlobalPhonemanager& aGloblePhone, 
+                            CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsNack* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	/**
+	* Set Nack TPDU data
+	* 
+	*/
+	void SetNackTpdu(TPtrC8 aRpError);
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsNack(CGlobalPhonemanager& aGloblePhone, 
+               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+    /**
+	 *  Nack required TPDU data
+	 */
+	TBuf8<256> iRpError;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;	
+	}; // class CAtSmsNack
+#endif // ATSMSACK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsreceive.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,152 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsreceive.h
+// This contains CAtSmsReceive which received incoming messages
+// 
+
+#ifndef ATSMSRECEIVE_H
+#define ATSMSRECEIVE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+#include <cmmsmsutility.h>
+
+//user include 
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+
+/**
+ * CAtSmsReceiveMessage
+ *
+ */
+class CAtSmsReceive: public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/	
+	~CAtSmsReceive();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsReceive* NewL(CGlobalPhonemanager& aGloblePhone, 
+                               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CAtSmsReceive* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+protected:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CAtSmsReceive(CGlobalPhonemanager& aGloblePhone, 
+                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/	
+	void ConstructL();
+private:
+	/**
+	* Parse 1st line of CMT response, of the format: "+CMT: [<alpha>], <pdu_len>"
+	* Stores the <pdu_len> in aPduLen
+	*/
+	void CMTResponseFirstLineL();
+	
+	/**
+	* Parse second line of CMT or DS response, of the format: "<pdu>"
+	* The <pdu> is saved to aPdu. If the <pdu> is found to have a prefixed SCA
+	* then that is removed before the save to aPdu.
+	*/
+	void CMTResponseSecondLineL();
+private:
+	/**
+	*   when receiving a message,its states should be changed
+	*/
+	enum 
+		{
+		EReceiveReady,
+		EWaitForCmtSecondLine,
+		EATNotInProgress
+		}iState;
+	
+	/**
+	*  Stores the length of PDU received
+	*/	
+	TInt iPduLen;		
+	
+	/**
+	*  binary format of PDU
+	*/	
+	RMobileSmsMessaging::TMobileSmsGsmTpdu  iPdu;
+	
+	/**
+	*  iAttr saved attritube of message revceived 
+	*/	
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 iAttr;
+	
+    /**
+	*  The structure used for callback
+	*/
+	TSmsMsg iMsgReceive;
+    
+	/**
+	* The return error value of AT command executed 
+	*/	
+	TInt iError; 
+	
+	}; // class CAtSmsReceive: 
+#endif // ATSMSRECEIVE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmssend.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,201 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmssend.h
+// This contains CAtSmsSend which is used to send sms message
+// 
+
+#ifndef ATSMSSEND_H
+#define ATSMSSEND_H
+
+ //system include
+#include <e32std.h>
+#include <e32base.h>
+#include <callbacktimer.h>
+
+// user include
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+/**
+ *  TSmsSendParam
+ */
+class TSmsSendParam
+   	{
+public:
+	RMobilePhone::TMobileAddress iDestination;
+   	TBuf8<KGsmTpduSize> iSmsTpdu;
+    RMobileSmsMessaging::TMobileSmsDataFormat iDataFormat;
+    RMobilePhone::TMobileAddress  iGsmServiceCentre;
+    TBool iMoreMessages;
+   	};
+/**
+ *  TSmsSendResponse 
+ */
+class TSmsSendResponse
+	{
+public:
+    TInt iValRef;
+    TBuf8<KGsmTpduSize>	 iSubmitReport;
+	};
+/**
+ * CAtSmsSend
+ *
+ */
+class CAtSmsSend : public CAtCommandBase,
+                   public MTimerObserver
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsSend();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsSend* NewL(CGlobalPhonemanager& aGloblePhone, 
+                            CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsSend* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	/**
+	* set send message parameter
+	* 
+	* @param  aMsgParam
+	*/
+	void SetMessageParam(TSmsSendParam aMsgParam);
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsSend(CGlobalPhonemanager& aGloblePhone, 
+               CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	* confirm if there is a sca address 
+	*  
+	*  @return  KErrNone......
+	*/
+	TInt ConfirmSca();
+		
+    /**
+     * start a timer
+     */
+    void BeginTimer();	
+    
+	/**
+	* From MTimerObserver 
+	*/
+	virtual void TimerRun(TInt aError);
+	
+	/**
+	* Issue writing AT Command to baseband
+	* not using base class because the buffer length is KMaxAsciiPduLength
+	*/
+	void StartWritingPduLength();
+	
+	/**
+	* Issue writing AT Command to baseband
+	* not using base class because the buffer length is KMaxAsciiPduLength
+	*/
+	void StartWritingPdu();
+private:
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetPDULengthComplete,
+		ESendPDUComplete,
+		}iState;
+		
+	/**
+	*  A pointer for Timer
+	*/
+	CCallbackTimer* iCallbackTimer;	
+	
+	/**
+	* The buffer contains the "AT" String which should be sent to BaseBand Modem
+	*/
+	TBuf8<KMaxAsciiPduLength> iTxBuffer;	
+	
+	/**
+	* The structure contains sending message parameter
+	*/
+	TSmsSendParam iSmsSendParam;
+	
+	/**
+	* PDU in ascii format
+	*/
+	TBuf8<KMaxAsciiPduLength> iMsgDataAscii; 
+	
+	/**
+	* The response structure which read from modem
+	*/
+	TSmsSendResponse iSmsSendResponse;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;	
+	
+	/**
+	* The error value before Execute write()
+	*/
+	TInt iCallbackVal;
+	}; // class CAtSmsSend
+#endif // ATSMSSEND_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstoredelete.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,199 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstoredelete.h
+// This contains CAtSmsStoreDelete and CAtSmsStoreDeleteAll which is used to delete message(s)
+// 
+
+#ifndef ATSMSSTOREDELETE_H
+#define ATSMSSTOREDELETE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+/**
+ * CAtSmsStoreDelete
+ *
+ */
+class CAtSmsStoreDelete : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsStoreDelete();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreDelete* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreDelete* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* Set the message index to be deleted
+	* 
+	*/
+	void SetDelIndex(TInt aIndex);
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsStoreDelete(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	*  message's index 
+	* 
+	*/	
+	TInt iIndex;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;
+	
+	}; // class CAtSmsStoreDelete
+
+
+/**
+ * CAtSmsStoreDeleteAll
+ *
+ */
+class CAtSmsStoreDeleteAll : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsStoreDeleteAll();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreDeleteAll* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreDeleteAll* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsStoreDeleteAll(CGlobalPhonemanager& aGloblePhone, 
+                         CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+private:
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;	
+	
+	}; // class CAtSmsStoreDeleteAll	
+#endif // ATSMSDELETE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstoreinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,117 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstoreinfo.h
+// This contains CAtSmsStoreInfo which is used to get sms store information
+// 
+
+#ifndef ATSMSSTOREINFO_H
+#define ATSMSSTOREINFO_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+/**
+ * CAtSmsStoreInfo
+ *
+ */
+class CAtSmsStoreInfo : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsStoreInfo();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreInfo* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreInfo* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsStoreInfo(CGlobalPhonemanager& aGloblePhone, 
+                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	* indicate how many items message stored
+	*/
+	TInt iUsed;
+	
+	/**
+	* total items for storeing message
+	*/
+	TInt iTotal;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+    TInt iError;	
+	
+	}; // class CAtSmsStoreInfo
+
+#endif // ATSMSSTOREINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstoreread.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,131 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstoreread.h
+// This contains CAtSmsStoreRead which is used to Read PDU Message
+// via aIndex 
+// 
+
+#ifndef ATSMSSTOREREAD_H
+#define ATSMSSTOREREAD_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include 
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+/**
+ * CAtSmsStoreRead
+ *
+ */
+class CAtSmsStoreRead : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsStoreRead();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreRead* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreRead* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	* set message index should be read
+	* 
+	* @param aIndex
+	*/
+	void SetMsgIndex(TInt aIndex);
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsStoreRead(CGlobalPhonemanager& aGloblePhone, 
+                    CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+	/**
+	*  Executer AT command for reading message via aIndex
+	*/
+	void ReadMessage();
+private:
+	/**
+	* readmessage callback struct
+	*/
+	DispatcherPhonebook::TSmsData iSmsData;  
+	
+	/**
+	*  The message index want to be read
+	*/
+	TInt iIndex;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError; 
+	
+	}; // class CAtSmsStoreRead
+
+#endif // ATSMSSTOREREAD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstorereadall.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,125 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstorereadall.h
+// This contains CAtSmsStoreReadAll which is used to read all messages
+// 
+
+#ifndef ATSMSSTOREREADALL_H
+#define ATSMSSTOREREADALL_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+#include <ctsy/ltsy/mltsydispatchphonebookinterface.h>
+
+//user include
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+/**
+ * CAtSmsStoreReadAll
+ *
+ */
+
+class CAtSmsStoreReadAll : public CAtCommandBase
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/	
+	~CAtSmsStoreReadAll();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreReadAll* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreReadAll* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                      CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	CAtSmsStoreReadAll(CGlobalPhonemanager& aGloblePhone, 
+                        CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/	
+	void ConstructL();
+	
+	/**
+	*  Executer AT command for reading message via aIndex
+	*/
+	void ReadMessage();
+private:
+	/*
+	*  The index message should be read
+	*/	
+    TInt iIndex;
+    
+    /**
+	* readmessage callback struct
+	*/
+	DispatcherPhonebook::TSmsData iSmsData;
+	
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError; 
+	
+	}; // class CAtSmsStoreReadAll
+
+#endif // ATSMSSTOREREADALL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/atsmsstorewrite.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,184 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstorewrite.h
+// This contains CAtSmsStoreWrite which is used to write sms message
+// 
+
+#ifndef ATSMSSTOREWRITE_H
+#define ATSMSSTOREWRITE_H
+
+// system include 
+#include <e32std.h>
+#include <e32base.h>
+#include <ctsy/ltsy/mltsydispatchphonebookinterface.h>
+#include <callbacktimer.h>
+
+// user include
+#include "atcommandbase.h"
+
+// CLASS DECLARATION
+
+/**
+ * CAtSmsStoreWrite
+ *
+ */
+
+class CAtSmsStoreWrite : public CAtCommandBase,
+                         public MTimerObserver
+	{
+public:
+	/**
+	* Destructor
+	*
+	*/
+	~CAtSmsStoreWrite();
+	
+	/**
+	*  static NewL  
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/	
+	static CAtSmsStoreWrite* NewL(CGlobalPhonemanager& aGloblePhone, 
+                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	*  static NewLC 
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	static CAtSmsStoreWrite* NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	*  Start Execute AT Command
+	*/
+	virtual void ExecuteCommand();
+	
+	
+	/**
+	* Will be called by AT Manager whenever a event was triggered
+	* 
+	* @param aEventSource
+	* @param aStatus
+	*/
+	virtual void EventSignal(TAtEventSource aEventSource, TInt aStatus);
+	
+	/**
+	* Virtual function. Inherited from CAtCommandBase
+	* 
+	* @param aResponseBuf Line buf reading from baseband 
+	*/
+	virtual void ParseResponseL(const TDesC8& aResponseBuf);
+	
+	/**
+	* Start this request
+	* 
+	*/
+	void StartRequest();
+	
+	/**
+	*  set GsmSmsEntry which is passed by handler
+	*/
+	void SeGsmSmsEntry(RMobileSmsStore::TMobileGsmSmsEntryV1 aMobileGsmEntry);
+private:
+	/**
+	* Constructor
+	*
+	* @param aGloblePhone
+	* @param aCtsyDispatcherCallback
+	*/
+	CAtSmsStoreWrite(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	
+	/**
+	* 2nd Constructor
+	*/
+	void ConstructL();
+	
+    /**
+	* start a timer
+	*/
+    void BeginTimer();	
+    
+	/**
+	* From MTimerObserver 
+	*/
+	virtual void TimerRun(TInt aError);
+	
+	/**
+	* Issue writing AT Command to baseband
+	* not using base class because the buffer length is KMaxAsciiPduLength
+	*/
+	void StartWritingPduLength();
+	
+	/**
+	* Issue writing AT Command to baseband
+	* not using base class because the buffer length is KMaxAsciiPduLength
+	*/
+	void StartWritingPdu();
+	
+	/**
+	*  Executer AT command for writing a message
+	*/
+	void WriteMessage();
+private:
+	/**
+	*  state machine for EventSignal 
+	*/
+	enum 
+		{
+		ESetPDULengthComplete,
+		EWritePDUComplete,
+		}iState;
+	
+	/**
+	*  A pointer for Timer
+	*/
+	CCallbackTimer* iCallbackTimer;	
+	
+	/**
+	* The buffer contains the "AT" String which should be sent to BaseBand Modem
+	*/	
+	TBuf8<KMaxAsciiPduLength> iTxBuffer;	
+	
+	/**
+	*  writemessage index should be used by callback
+	*/
+	TInt iLocation;   
+
+	/**
+	* PDU in ascii format
+	*/
+	TBuf8<KMaxAsciiPduLength> iMsgDataAscii;  
+	
+	/**
+	* get the GsmSmsEntry value passed by handler
+    */
+	RMobileSmsStore::TMobileGsmSmsEntryV1 iMobileGsmEntry;
+
+	/**
+	* The return error value of AT command executed 
+	*/
+	TInt iError;
+	
+	/**
+	* The error value before Execute write()
+	*/
+	TInt iCallbackVal;
+	}; // class CAtSmsStoreWrite
+	
+#endif // ATSMSSTOREWRITE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/inc/smsatutil.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,140 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file smsatutil.h
+// This contains SmsAtUtil which is util for Sms At command
+// 
+
+#ifndef SMSATUTIL_H
+#define SMSATUTIL_H
+// system include
+#include <e32std.h>
+#include <e32base.h>
+#include <etelmm.h>
+
+
+/**
+*  SmsAtUtil
+* 
+*/
+class SmsAtUtil : public CBase
+	{
+public:
+	
+	 /**
+	 * Converts aAscii ASCII chars to Semi Octets in aData.
+	 * One ASCII char (8bits in aAscii) is translated to one Semi-Octet (4bits in aData).
+	 * 
+	 * @param aAscii input ascii string
+	 * @param aData  output binary data 
+	 * @return Standard KErr... values 
+	 */	
+	static TInt ConvertAsciiToBinary(const TDesC8& aAscii,TDes8& aData);
+	
+	 /**
+	 * Default operation is to code Address-Length according to=
+	 * 04.11 spec (ie. Address-Length=number of digits in Address-Value).
+	 * Append this sca adress to the ascii string  
+	 *
+	 * @param aAscii an ascii string 
+	 * @param aAddress  a SCA adress 
+	 * @return Standard KErr... values
+	 */
+	static TInt AppendAddressToAscii(TDes8& aAscii,const RMobilePhone::TMobileAddress& aAddress);
+	
+	 /**
+	 * Appends the binary data (aData) onto the end of an ASCII string (aAscii) in ASCII format.
+	 * 
+	 * @param aAscii  an ascii string 
+	 * @param aData   a  binary string 
+	 */
+	static void AppendDataToAscii(TDes8& aAscii,const TDesC8& aData);
+	
+	 /**
+	 * Reads an address from the front of the ASCII string (aAscii) and fills up Address structure (aAddress).
+	 * The address read from the ASCII string is removed from the ASCII string.
+	 * 
+	 * @param aAscii an ascii string 
+	 * @param aAddress  a SCA address
+	 * @return Standard KErr... values
+	 */
+	static TInt ReadAndRemoveAddressFromAscii(TDes8& aAscii,RMobilePhone::TMobileAddress& aAddress);
+	
+	/**
+	 * Default operation assumes has prefixed SCA which uses 04.11 format
+	 * (ie. Address-Length=number of digits in Address-Value).
+	 *
+	 * @param aAscii an ascii string 
+	 * @param aAddress  a SCA address
+	 * @return Standard KErr... values
+	 */
+	static TInt ReadAddressFromAscii(const TDesC8& aAscii,RMobilePhone::TMobileAddress& aAddress);
+	
+	 /**
+	 *  get the SCA field in the aAscii structure from the SCA prepended in the PDU sring .
+	 *  
+	 *  @param aPdu  a PDU string 
+	 *  @param aAddress a SCA address
+	 */
+	static void ReadAndRemoveAddressFromPdu(TPtrC8& aPdu, RMobilePhone::TMobileAddress& aGsmServiceCentre);
+	 /**
+	 * Judge whether a char is an address char
+	 * 
+	 * @param  aChar  
+	 * @return ETrue if, and only if, the given ASCII charcater 
+	 *  is valid as an ASCII address character.
+	 */
+	static TBool IsAddressChar(TChar aChar);
+
+private:
+	
+	 /**
+	 * @param aValue should be an ETSI Numbering-Plan-Identification field
+	 * @return The equivalent RMobilePhone::TMobileNPI value for aValue
+	 */
+	static RMobilePhone::TMobileNPI ConvertNumberingPlan(TInt aValue);
+	
+	 /**
+	 * @param aValue should be an ETSI Type-Of-Number field
+	 * @return The equivalent RMobilePhone::TMobileTON value for aValue
+	 */
+	static RMobilePhone::TMobileTON ConvertTypeOfNumber(TInt aValue); 
+	
+	 /**
+	 * Converts a TInt octet value into ASCII representation and then appends that
+	 * ASCII representation to the end of the given ASCII string.
+	 *
+	 * @param aOctet the octet value to append
+	 * @param aAscii the ASCII string to which aOctet value should be appended
+	 */	
+	static void AppendOctet(TInt aOctet,TDes8& aAscii);
+	
+	 /**
+	 * Returns the equivalent numeric value for a given ASCII address character.
+	 *
+	 * @param aChar the address character to be converted
+	 * @return The numeric value equivalent of the given address character.
+	 */
+	static TInt ConvertAddressChar(TChar aChar);
+	
+	 /**
+	 * Returns the equivalent ASCII address character for a given address value.
+	 *
+	 * @param aBinary the numerix value of the address character to be returned
+	 * @return The ASCII charcater which represents the given address numeric value.
+	 */
+	static TChar ConvertAddressChar(TInt aBinary);
+	
+	};
+
+#endif // SMSATUTIL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atmessagestoreinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,192 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atmessagestoreinfo.cpp
+// This contains CAtMessageStoreInfo which is used to get message store information
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "atmessagestoreinfo.h"
+#include "mslogger.h"
+
+//constant defination
+_LIT8(KGetPrefMemCommand,"AT+CPMS?\r");
+_LIT8(KCPMSResponseString,"+CPMS:");
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::CAtMessageStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtMessageStoreInfo::CAtMessageStoreInfo(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                         :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtMessageStoreInfo::CAtMessageStoreInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::~CAtMessageStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtMessageStoreInfo::~CAtMessageStoreInfo()
+	{
+	LOGTEXT(_L8("CAtMessageStoreInfo::~CAtMessageStoreInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtMessageStoreInfo* CAtMessageStoreInfo::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                                CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtMessageStoreInfo* self = new (ELeave)CAtMessageStoreInfo(aGloblePhone, 
+			                                                    aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtMessageStoreInfo* CAtMessageStoreInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtMessageStoreInfo* self=CAtMessageStoreInfo::NewLC(aGloblePhone, 
+                                                         aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtMessageStoreInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtMessageStoreInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtMessageStoreInfo::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtMessageStoreInfo::ExecuteCommand called"));
+	
+	iTxBuffer.Zero();
+	iTxBuffer.Copy(KGetPrefMemCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtMessageStoreInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtMessageStoreInfo::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtMessageStoreInfo::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackSmsGetSmsStoreInfoComp(aStatus,iTotal,iUsed);
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtMessageStoreInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtMessageStoreInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	/**
+	* Parse result of AT+CPMS? 
+	* Response:+CPMS:<mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>
+	* Here only the first mem is used. mem1 is SM
+	*/
+	iError = KErrNone;
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,Buffer());
+	if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+		{
+		array.Remove(0);
+		}
+	TInt Count = array.Count();
+	if (Count <= 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if(array[0].MatchF(KCPMSResponseString) == KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	//parse name 
+	TPtrC8 name(array[1]);
+	
+	//parse used
+	TLex8 lex(array[2]);
+	TUint16 val;
+	TInt ret = lex.Val(val,EDecimal);
+	if(ret != KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	iUsed = val;
+	
+	//parse total
+	TLex8 lex1(array[3]);
+	ret = lex1.Val(val,EDecimal);
+	if(ret != KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	iTotal = val;
+	
+	LOGTEXT2(_L8("CAtMessageStoreInfo::ParseResponseL\tPreferred store name=%S"),&name);
+ 	LOGTEXT3(_L8("CAtMessageStoreInfo::ParseResponseL\tPreferred store used=%d, total=%d"), 
+ 			                                           iUsed,iTotal);
+	CleanupStack::PopAndDestroy(&array);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsack.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,280 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsack.cpp
+// This contains CAtSmsAck and CAtSmsNack which is used to send 
+// positive(negative) acknowledgment
+// 
+
+//system include 
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "atsmsack.h"
+#include "mslogger.h"
+#include "smsatutil.h"
+
+//constant defination
+_LIT8(KSendCNMACommand,"AT+CNMA\r\n");
+_LIT8(KCNMAForNack,"AT+CNMA=2,%d\r\n");
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::CAtSmsAck
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsAck::CAtSmsAck(CGlobalPhonemanager& aGloblePhone, 
+                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                     :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsAck::CAtSmsAck called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::~CAtSmsAck
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsAck::~CAtSmsAck()
+	{
+	LOGTEXT(_L8("CAtSmsAck::~CAtSmsAck called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsAck* CAtSmsAck::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                            CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsAck* self = new (ELeave)CAtSmsAck(aGloblePhone, 
+                                            aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsAck* CAtSmsAck::NewL(CGlobalPhonemanager& aGloblePhone, 
+                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsAck* self=CAtSmsAck::NewLC(aGloblePhone, 
+                                     aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsAck::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsAck::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsAck::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsAck::ExecuteCommand called"));
+	iTxBuffer.Zero();
+	iTxBuffer.Copy( KSendCNMACommand );
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsAck::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsAck::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsNack::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackSmsAckSmsStoredComp(aStatus);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsAck::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsAck::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::CAtSmsNack
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsNack::CAtSmsNack(CGlobalPhonemanager& aGloblePhone, 
+                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                       :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsNack::CAtSmsNack called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::~CAtSmsNack
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsNack::~CAtSmsNack()
+	{
+	LOGTEXT(_L8("CAtSmsNack::~CAtSmsNack called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsNack* CAtSmsNack::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsNack* self = new (ELeave)CAtSmsNack(aGloblePhone, 
+                                              aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsNack* CAtSmsNack::NewL(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsNack* self=CAtSmsNack::NewLC(aGloblePhone, 
+                                       aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsNack::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::SetNackTpdu
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsNack::SetNackTpdu(TPtrC8 aRpError)
+	{
+	iRpError = aRpError;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsNack::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsNack::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsNack::ExecuteCommand called"));
+	iTxBuffer.Zero();
+	TInt pduLen = iRpError.Length();
+	TBuf8<KLtsyGenericBufferSize> nackAsciiData;
+	nackAsciiData.Zero();
+	SmsAtUtil::AppendDataToAscii(nackAsciiData,iRpError);
+	iTxBuffer.Format(KCNMAForNack,pduLen);
+	iTxBuffer.Append(nackAsciiData);
+	iTxBuffer.Append(KLtsyCtrlZChar);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsNack::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+/**
+ * Handle the events from the comm port
+ *ValidateExpectString
+ * @param aSource denotes if event is due to read, write or timeout
+ */
+	{
+	LOGTEXT3(_L8("CAtSmsNack::EventSignal iStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsNack::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackSmsAckSmsStoredComp(aStatus);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsNack::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsNack::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsreceive.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,317 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsreceive.cpp
+// This contains CAtSmsReceive which received incoming messages
+// 
+
+//system include
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "atsmsreceive.h"
+#include "atsmsstoreread.h"
+#include "atsmsack.h"
+#include "atmanager.h"
+#include "activecommandstore.h"
+#include "mslogger.h"
+#include "smsatutil.h"
+
+//constant defination
+_LIT8(KCMTMatchString,"+CMT:*");
+_LIT8(KCMTResponseString,"+CMT:");
+_LIT8(KAsterisk,"*");
+
+#ifdef _DEBUG
+const TInt KLogMaxCharNumPerLine = 160;
+#endif
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::CAtSmsReceive
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsReceive::CAtSmsReceive(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                             :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsReceive::CAtSmsReceive called"));
+	iAtType = ELtsyAT_Sms_ReceiveMessage;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::~CAtSmsReceive
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsReceive::~CAtSmsReceive()
+	{
+	LOGTEXT(_L8("CAtSmsReceive::~CAtSmsReceive called"));
+	RemoveAllExpectString();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsReceive* CAtSmsReceive::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                    CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsReceive* self = new (ELeave)CAtSmsReceive(aGloblePhone, 
+                                                    aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsReceive* CAtSmsReceive::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsReceive* self=CAtSmsReceive::NewLC(aGloblePhone, 
+                                             aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsReceive::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	//Add expecting string
+	RemoveAllExpectString();
+	AddExpectStringL(KCMTMatchString);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsReceive::StartRequest()
+	{
+	iState = EReceiveReady;
+	iPhoneGlobals.iAtManager->GetActiveCommandStore()->AddUnsolicitedAtCommand(this);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsReceive::ExecuteCommand()
+	{
+	
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsReceive::EventSignal(TAtEventSource /*aEventSource*/, TInt aStatus)
+/**
+ * Handle the events from the comm port
+ *ValidateExpectString
+ * @param aSource denotes if event is due to read, write or timeout
+ */
+	{
+	if(aStatus != KErrNone)
+		{
+		iCtsyDispatcherCallback.CallbackSmsNotifyReceiveSmsMessageInd(iError,EFalse,iMsgReceive);
+		return;
+		}
+	
+	if( iState == EReceiveReady )
+		{
+		LOGTEXT(_L8("CAtSmsReceive::EventSigna,EReadCompletion"));
+		//Handle CMT response
+		if (iError == KErrNone)
+			{
+             //want to read the second line
+			TRAPD(err,AddExpectStringL(KAsterisk));
+			if( err==KErrNone )
+				{
+				// Wait for the reception of the second line
+				iState=EWaitForCmtSecondLine;
+				return;
+				}
+			else
+				{
+				iError = err;
+				}
+			}
+		iCtsyDispatcherCallback.CallbackSmsNotifyReceiveSmsMessageInd(iError,EFalse,iMsgReceive);
+		}
+	else if( iState == EWaitForCmtSecondLine )
+		{
+		LOGTEXT(_L8("CAtSmsReceiveMessage::EventSignal EWaitForCmtSecondLine"));
+        RemoveExpectString(KAsterisk);
+		iCtsyDispatcherCallback.CallbackSmsNotifyReceiveSmsMessageInd(iError,EFalse,iMsgReceive);
+		// We've got the PDU, and will delete the buffer when the line is parsed
+		if(iPhoneGlobals.iEventSignalActive == EFalse)
+			{
+		    ClearBuffer();
+			}
+		iState = EReceiveReady;
+		}
+     
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::CMTResponseFirstLineL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void  CAtSmsReceive::CMTResponseFirstLineL()
+	{
+	LOGTEXT(_L8("CAtSmsReceive::CMTResponseFirstLineL Enter funciton"));
+	iError = KErrNone;
+	TPtrC8 firstLineBuf;
+	firstLineBuf.Set(Buffer());
+	TInt pos = firstLineBuf.FindF(KCMTResponseString);
+	if (pos == KErrNotFound)
+		{
+		LOGTEXT(_L8("CAtSmsReceive::CMTResponseFirstLineL()\tError - Cannot find '+CMT:' string"));
+		iError = KErrNotFound;
+		return;
+		}
+	//skip the string of +CMT:
+	pos += KCMTResponseString().Length();
+	//skip a  "," character
+	while(!(TChar(firstLineBuf[pos]).IsDigit()))
+		{
+		++pos;
+		}
+	TInt lenPos = firstLineBuf.Length()-pos;
+	TPtrC8 pduLenBuf;
+	pduLenBuf.Set(firstLineBuf.Right(lenPos));
+	
+	
+	TLex8 lex(pduLenBuf);
+	TUint16 val;
+	TInt ret = lex.Val(val,EDecimal);
+	if(ret != KErrNone)
+		{
+		iError = ret;
+		return;
+		}
+	iPduLen = val;
+    LOGTEXT2(_L8("New SMS detected of length %d"),iPduLen);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::CMTResponseSecondLineL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void  CAtSmsReceive::CMTResponseSecondLineL() 
+	{
+	LOGTEXT(_L8("CAtSmsReceive::CMTResponseSecondLineL Enter funciton"));
+	iError = KErrNone;
+	iAttr.iFlags=0;
+	TPtrC8 secondLineBuf;
+	secondLineBuf.Set(CurrentLine());
+	
+#ifdef _DEBUG
+	TInt totalLen = secondLineBuf.Length();
+	if(totalLen <= KLogMaxCharNumPerLine)
+		{
+		LOGTEXT2(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL\tSecondLine=%S"),&secondLineBuf);
+		}
+	else
+		{
+		TInt lines = (totalLen/KLogMaxCharNumPerLine);
+		TInt remainingStrNum = (totalLen%KLogMaxCharNumPerLine);
+		for(TInt i = 0; i < lines; i++)
+			{
+			TPtrC8 line(secondLineBuf.Mid(i*KLogMaxCharNumPerLine,KLogMaxCharNumPerLine));
+			LOGTEXT2(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL \tSecondLine line=%S"),&line);
+			}
+		
+		TPtrC8 remaining(secondLineBuf.Right(remainingStrNum));
+		
+		LOGTEXT2(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL \tSecondLine line=%S"),&remaining);
+		}
+#endif  
+	// Buffer size calculated as follows;
+	//   (max pdu size + max prefixed SCA size) * number of ASCII chars used to code an octet
+	TBuf8<(RMobileSmsMessaging::KGsmTpduSize+12)*2> localPdu;	
+	localPdu.Copy(secondLineBuf);
+	//  The CMT frame sometimes contains odd number of nibbles which
+	// causes panic in ConvertAsciiToBinary() method. This type of
+	// frames will simply be discarded.
+	if(localPdu.Length() < (iPduLen*2))
+		{
+		iError = KErrUnderflow;
+		User::Leave(KErrUnderflow);
+		}
+		
+	//
+	// Check if we have a prefixed SCA on our pdu.
+	// If we do then remove it.
+	
+	if(localPdu.Length() > (iPduLen*2))
+		{
+		TInt ret = SmsAtUtil::ReadAndRemoveAddressFromAscii(localPdu,iAttr.iGsmServiceCentre);
+		if(ret !=KErrNone)
+			{
+			LOGTEXT(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL Failed to read and remove SCA from PDU"));
+			iError = ret;
+			return;
+			}
+		else
+			{
+			iMsgReceive.iServiceCentre = iAttr.iGsmServiceCentre.iTelNumber;    //for iServiceCentre
+			iMsgReceive.iMobileScNPI = iAttr.iGsmServiceCentre.iNumberPlan;
+			iMsgReceive.iMobileScTON = iAttr.iGsmServiceCentre.iTypeOfNumber;
+			iAttr.iFlags|= RMobileSmsMessaging::KGsmServiceCentre;
+			}
+		}
+	//
+	// Convert received pdu from ASCII into binary
+	TInt ret = SmsAtUtil::ConvertAsciiToBinary(localPdu,iPdu);
+	if (ret!=KErrNone)
+		{
+		LOGTEXT(_L8("CAtSmsReceiveMessage::CMTResponseSecondLineL Failed to code PDU into binary"));
+		iError = ret;
+		return;
+		}
+	else
+		{
+		iAttr.iDataFormat=RMobileSmsMessaging::EFormatGsmTpdu;
+		iAttr.iFlags|=RMobileSmsMessaging::KSmsDataFormat;
+		iAttr.iStatus = RMobileSmsMessaging::EMtMessageUnstoredClientAck;
+		iAttr.iFlags|=RMobileSmsMessaging::KIncomingStatus;
+		}
+
+	LOGTEXT2(_L8("Received PDU String is %S"),&iPdu);
+	iMsgReceive.iSmsMsg = iPdu;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsReceive::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsReceive::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if(iState == EReceiveReady)
+		{
+		CMTResponseFirstLineL();
+		}
+	else if(iState == EWaitForCmtSecondLine)
+		{
+		CMTResponseSecondLineL();
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmssend.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,335 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmssend.cpp
+// This contains CAtSmsSend which is used to send sms message
+// 
+
+//system include
+#include <etelmm.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+// user include
+#include "atsmssend.h"
+#include "mslogger.h"
+#include "ltsycommondefine.h"
+#include "atmanager.h"
+#include "commengine.h"
+#include "smsatutil.h"
+
+//Constants
+_LIT8(KSmsSendCommandPdu,"AT+CMGS=%d\r");
+_LIT8(KCMGSResponseString,"+CMGS:");
+_LIT8(KDefaultSCA,"00");
+_LIT8(KSmsEnterPduResponse,">");
+_LIT8(KSendExpectedString,"+CMGS:*");
+const TInt KLtsyOnePause = 100000;
+const TInt KLtsySendSmsWriteTimeOut = 20;
+const TInt KLtsySendSmsReadTimeOut = 30;
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::CAtSmsSend
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsSend::CAtSmsSend(CGlobalPhonemanager& aGloblePhone, 
+                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                       :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)                  
+ 	{
+	LOGTEXT(_L8("CAtSmsSend::CAtSmsSend called"));
+	iWriteTimeOut = KLtsySendSmsWriteTimeOut;
+	iReadTimeOut = KLtsySendSmsReadTimeOut;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::~CAtSmsSend
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsSend::~CAtSmsSend()
+	{
+	LOGTEXT(_L8("CAtSmsSend::~CAtSmsSend called"));
+	delete iCallbackTimer;
+	iCallbackTimer = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsSend* CAtSmsSend::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                              CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsSend* self = new (ELeave)CAtSmsSend(aGloblePhone,
+			                                  aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsSend* CAtSmsSend::NewL(CGlobalPhonemanager& aGloblePhone, 
+                             CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsSend* self=CAtSmsSend::NewLC(aGloblePhone,aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	//Create Timer
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	//set writing timeout
+	iWriteTimeOut = KLtsyDefaultWriteTimeOut;
+	AddExpectStringL(KSmsEnterPduResponse);
+	AddExpectStringL(KSendExpectedString);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsSend::ExecuteCommand called"));
+	LOGTEXT(_L8("SendPDUMessage..."));
+	
+	iMsgDataAscii.Zero();
+	TInt ret = ConfirmSca();
+	if(ret == KErrNone)
+		{
+		//Here is a SCA
+		ret = SmsAtUtil::AppendAddressToAscii(iMsgDataAscii,iSmsSendParam.iGsmServiceCentre);
+		if( ret!=KErrNone )
+			{
+			BeginTimer();
+			iCallbackVal = ret;
+			return;
+			}
+		}
+	else 
+		{
+		//Here is no SCA,usign default SCA
+		iMsgDataAscii.Append(KDefaultSCA);
+		}
+	const TInt msgDataAsciiLen(iMsgDataAscii.Length());
+	// Convert PDU to ASCII
+	SmsAtUtil::AppendDataToAscii(iMsgDataAscii,iSmsSendParam.iSmsTpdu);
+	iState = ESetPDULengthComplete;
+	StartWritingPduLength();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::StartWritingPduLength
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::StartWritingPduLength()
+	{
+	LOGTEXT(_L8("CAtSmsSend::StartWritingPduLength called"));
+	TInt pduLen = iSmsSendParam.iSmsTpdu.Length();
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KSmsSendCommandPdu,pduLen);
+	ClearBuffer();
+	iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
+	iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);	
+	StartTimer(iWriteTimeOut);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::StartWritingPdu
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::StartWritingPdu()
+	{
+	LOGTEXT(_L8("CAtSmsSend::StartWritingPdu called"));
+	iTxBuffer.Zero();
+	iTxBuffer.Append(iMsgDataAscii);
+	iTxBuffer.Append(KLtsyCtrlZChar);
+	ClearBuffer();
+	iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
+	iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);	
+	StartTimer(iWriteTimeOut);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::SetMessageParam
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::SetMessageParam(TSmsSendParam aMsgParam)
+	{
+	iSmsSendParam = aMsgParam;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsSend::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+    if(aStatus == KErrNone)
+		{
+		if(aEventSource == EWriteCompletion)
+			{
+			LOGTEXT(_L8("CAtSmsSend::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		else
+			{
+			if( iState == ESetPDULengthComplete )
+				{
+	            if(iError==KErrNone)
+	            	{
+			    	iState = ESendPDUComplete;
+			    	Complete();
+			       	StartWritingPdu();
+			    	return;     
+	            	}
+				}
+			}
+		aStatus = iError;
+		}
+    Complete();
+   	iPhoneGlobals.iEventSignalActive = EFalse;
+    iCtsyDispatcherCallback.CallbackSmsSendSmsMessageComp(aStatus,iSmsSendResponse.iValRef,
+    		                                              iSmsSendResponse.iSubmitReport);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+    {
+    LOGTEXT(_L8("CAtSmsSend::ParseResponseL called!"));
+    if(iState == ESetPDULengthComplete) 
+	    {
+   	    if(CurrentLine().MatchF(KSmsEnterPduResponse) != KErrNotFound)
+	    	{
+	    	iError = KErrNone;
+	    	}
+	    else
+	    	{
+	    	iError = KErrNotFound;
+	    	}
+	    }
+    else
+		{
+		iError = KErrNone;
+		TPtrC8 responseBuf;
+		responseBuf.Set(Buffer());
+		TInt pos = responseBuf.FindF(KCMGSResponseString);
+		if (pos == KErrNotFound)
+			{
+			LOGTEXT(_L8("CAtSmsSend::ParseCMGSResponse \"+CMGS:\" not found"));
+			iError = KErrNotFound;
+			return;
+			}
+	
+		// Locate the message reference number
+		// (ie. read in all digits form the first found to the end of the string)
+		const TInt bufLength=responseBuf.Length();
+		pos += KCMGSResponseString().Length();
+		while(pos<bufLength && !(TChar(responseBuf[pos]).IsDigit()))
+				++pos;
+		if(pos == bufLength)
+			{
+			LOGTEXT(_L8("CAtSmsSend::ParseCMGSResponse cannot find any digits after \"+CMS:\" "));
+			iError = KErrNotFound;
+			return;
+			}
+	
+		// Read message number and store in clients data structure
+		TPtrC8 ptr = responseBuf.Mid(pos);	
+		TLex8 lex(ptr);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			LOGTEXT(_L8("CAtSmsSend::ParseCMGSResponse cannot read Message Reference Number"));
+			iError = ret;
+			return;
+			}
+		iSmsSendResponse.iValRef = val;
+		LOGTEXT2(_L8("CAtSmsSend  Message reference number %d"),val);
+	    }
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::ConfirmSca
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CAtSmsSend::ConfirmSca()
+	{
+	if(iSmsSendParam.iGsmServiceCentre.iTelNumber.Length() == 0)
+		{
+		return KErrNotFound;
+		}
+	if(!(iSmsSendParam.iGsmServiceCentre.iNumberPlan == RMobilePhone::EIsdnNumberPlan &&
+		(iSmsSendParam.iGsmServiceCentre.iTypeOfNumber == RMobilePhone::EInternationalNumber ||
+		iSmsSendParam.iGsmServiceCentre.iTypeOfNumber == RMobilePhone::EUnknownNumber)))
+		{
+		return KErrCorrupt;
+		}
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::BeginTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::BeginTimer()
+	{
+	LOGTEXT(_L8("CAtSmsSend::BeginTimer() called"));	
+	
+    if (iCallbackTimer->IsActive())
+    	{
+    	iCallbackTimer->Cancel();
+    	}
+	iCallbackTimer->After(KLtsyOnePause);	
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsSend::TimerRun
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsSend::TimerRun(TInt aError)
+	{
+	LOGTEXT(_L8("CAtSmsSend::TimerRun() called"));
+	if(aError == KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackSmsSendSmsMessageComp(iCallbackVal,iSmsSendResponse.iValRef,
+				                                              iSmsSendResponse.iSubmitReport);
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstoredelete.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,272 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstoredelete.cpp
+// This contains CAtSmsStoreDelete and CAtSmsStoreDeleteAll which is used to delete message(s)
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include
+#include "atsmsstoredelete.h"
+#include "mslogger.h"
+
+//constant defination
+const TUint KSmsDeleteAllTimeOut = 200;
+_LIT8(KSmsDeleteCommand,"AT+CMGD=%d\r");
+_LIT8(KSmsDeleteAllCommand,"AT+CMGD=1,4\r");
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::CAtSmsStoreDelete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDelete::CAtSmsStoreDelete(CGlobalPhonemanager& aGloblePhone, 
+                                     CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                     :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsStoreDelete::CAtSmsStoreDelete called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::~CAtSmsStoreDelete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDelete::~CAtSmsStoreDelete()
+	{
+	LOGTEXT(_L8("CAtSmsStoreDelete::~CAtSmsStoreDelete called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::NewLC(
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDelete* CAtSmsStoreDelete::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                            CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreDelete* self = new (ELeave)CAtSmsStoreDelete(aGloblePhone, 
+                                                            aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDelete* CAtSmsStoreDelete::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                           CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreDelete* self=CAtSmsStoreDelete::NewLC(aGloblePhone, 
+                                                     aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDelete::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::SetDelIndex
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDelete::SetDelIndex(TInt aIndex)
+	{
+	LOGTEXT(_L8("CAtSmsStoreDelete::SetReadMessageParam callded"));
+	iIndex = aIndex;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDelete::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDelete::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsStoreDelete::ExecuteCommand callded"));
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KSmsDeleteCommand,iIndex); // Delete Command through aIndex
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDelete::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsStoreDelete::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsStoreDelete::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhonebookSmsStoreDeleteEntryComp(aStatus);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDelete::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDelete::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+// End of CAtSmsStoreDelete 
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::CAtSmsStoreDeleteAll
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDeleteAll::CAtSmsStoreDeleteAll(CGlobalPhonemanager& aGloblePhone, 
+										   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+										   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsStoreDeleteAll::CAtSmsStoreDeleteAll called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::~CAtSmsStoreDeleteAll
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDeleteAll::~CAtSmsStoreDeleteAll()
+	{
+	LOGTEXT(_L8("CAtSmsStoreDeleteAll::~CAtSmsStoreDeleteAll called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDeleteAll* CAtSmsStoreDeleteAll::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                                  CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreDeleteAll* self = new (ELeave)CAtSmsStoreDeleteAll(aGloblePhone, 
+                                                                  aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreDeleteAll* CAtSmsStoreDeleteAll::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreDeleteAll* self=CAtSmsStoreDeleteAll::NewLC(aGloblePhone, 
+                                                           aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDeleteAll::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	//Set read and write timeout
+	SetTimeOut(KLtsyDefaultWriteTimeOut, KSmsDeleteAllTimeOut);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDeleteAll::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDeleteAll::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsStoreDeleteAll::ExecuteCommand callded"));
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KSmsDeleteAllCommand); // Delete Command through aIndex
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDeleteAll::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsStoreDeleteAll::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsStoreDeleteAll::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhonebookSmsStoreDeleteAllComp(aStatus);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreDeleteAll::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreDeleteAll::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	if (CurrentLine().Match(KLtsyOkString) == 0)
+		{
+		iError = KErrNone;
+		}
+	else
+		{
+		iError = KErrGeneral;
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstoreinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,193 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstoreinfo.cpp
+// This contains CAtSmsStoreInfo which is used to get sms store information
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "atsmsstoreinfo.h"
+#include "mslogger.h"
+#include "ltsycommondefine.h"
+#include "globalphonemanager.h"
+
+//constant defination
+_LIT8(KGetPrefMemCommand,"AT+CPMS?\r");
+_LIT8(KCPMSResponseString,"+CPMS:");
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::CAtSmsStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreInfo::CAtSmsStoreInfo(CGlobalPhonemanager& aGloblePhone, 
+                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                 :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsStoreInfo::CAtSmsStoreInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::~CAtSmsStoreInfo
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreInfo::~CAtSmsStoreInfo()
+	{
+	LOGTEXT(_L8("CAtSmsStoreInfo::~CAtSmsStoreInfo called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreInfo* CAtSmsStoreInfo::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                        CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtSmsStoreInfo* self = new (ELeave)CAtSmsStoreInfo(aGloblePhone, 
+			                                            aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreInfo* CAtSmsStoreInfo::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+    {
+	CAtSmsStoreInfo* self=CAtSmsStoreInfo::NewLC(aGloblePhone, 
+                                                 aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreInfo::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreInfo::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreInfo::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsStoreInfo::ExecuteCommand called"));
+	iTxBuffer.Zero();
+	iTxBuffer.Copy(KGetPrefMemCommand);
+	Write();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreInfo::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsStoreInfo::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsStoreInfo::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;	
+	iCtsyDispatcherCallback.CallbackPhonebookSmsStoreGetInfoComp(aStatus,iTotal,iUsed);
+	}	
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreInfo::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreInfo::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	/**
+	* Parse result of AT+CPMS? 
+	* Response:+CPMS:<mem1>,<used1>,<total1>,<mem2>,<used2>,<total2>
+	* Here only the first mem is used. mem1 is SM
+	*/
+	iError = KErrNone;
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,Buffer());
+	if(array[0].MatchF(KAnyATCommand) != KErrNotFound)
+		{
+		array.Remove(0);
+		}
+	TInt Count = array.Count();
+	if (Count <= 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if(array[0].MatchF(KCPMSResponseString) == KErrNotFound)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	//parse name 
+	TPtrC8 name(array[1]);
+	
+	//parse used
+	TLex8 lex(array[2]);
+	TUint16 val;
+	TInt ret = lex.Val(val,EDecimal);
+	if(ret != KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	iUsed = val;
+	
+	//parse total
+	TLex8 lex1(array[3]);
+	ret = lex1.Val(val,EDecimal);
+	if(ret != KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	iTotal = val;
+	iPhoneGlobals.iStoreTotal = iTotal;
+	LOGTEXT2(_L8("CAtSmsStoreInfo::CPMSResponseL\tPreferred store name=%S"),&name);
+ 	LOGTEXT3(_L8("CAtSmsStoreInfo::CPMSResponseL\tPreferred store used=%d, total=%d"), 
+ 			                                     iUsed,iTotal);
+	CleanupStack::PopAndDestroy(&array);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstoreread.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,232 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstoreread.cpp
+// This contains CAtSmsStoreRead which is used to Read PDU Message
+// via aIndex 
+// 
+
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "atsmsstoreread.h"
+#include "mslogger.h"
+#include "smsatutil.h"
+
+//constant defination
+_LIT8(KSmsReadCommand,"AT+CMGR=%d\r");
+_LIT8(KCMGRResponseString,"+CMGR:");
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::CAtSmsStoreRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreRead::CAtSmsStoreRead(CGlobalPhonemanager& aGloblePhone, 
+                                 CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                 :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsStoreRead::CAtSmsStoreRead called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::~CAtSmsStoreRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreRead::~CAtSmsStoreRead()
+	{
+	LOGTEXT(_L8("CAtSmsStoreRead::~CAtSmsStoreRead called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreRead* CAtSmsStoreRead::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                        CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreRead* self = new (ELeave)CAtSmsStoreRead(aGloblePhone, 
+                                                        aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreRead* CAtSmsStoreRead::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreRead* self=CAtSmsStoreRead::NewLC(aGloblePhone, 
+                                                 aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsStoreRead::ExecuteCommand callded"));
+	ReadMessage();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsStoreRead::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+		
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsStoreRead::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhonebookSmsStoreReadEntryComp(aStatus,iSmsData);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::SetMsgIndex
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::SetMsgIndex(TInt aIndex)
+	{
+	LOGTEXT(_L8("CAtSmsStoreRead::SetReadMessageParam callded"));
+	iIndex = aIndex;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::ReadMessage
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::ReadMessage()
+	{
+	LOGTEXT(_L8("CAtSmsStoreRead::ReadMessage callded"));
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KSmsReadCommand,iIndex);
+	Write();   
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreRead::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	/**
+	* Response:+CMGR:<stat>,[<alpha>],<length><CR><LF><pdu>
+	*/
+	iError = KErrNone;	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,Buffer());
+	if(array[0].MatchF(KAnyATCommand)!=KErrNotFound)
+		{
+		array.Remove(0);
+		}
+	TInt count = array.Count();
+#ifdef _DEBUG
+	for( TInt i=0;i<count;i++ )
+		{
+        LOGTEXT3(_L8("CAtSmsStoreRead::ParseResponseL\tarray[%d]=%S"),i,&array[i]);  
+		}
+#endif   
+	if (count <= 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if(array[0].MatchF(KCMGRResponseString)==KErrNotFound)
+		{
+		LOGTEXT(_L8("CAtSmsStoreRead::ParseResponseL\tFound +CMGR String!"));
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	// parse the message status
+	TLex8 lex(array[1]);
+	TUint16 val;
+	TInt ret=lex.Val(val,EDecimal);
+	if(ret!=KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	iSmsData.iMessageStatus = val;
+	
+	//parse the message length
+	TLex8 lex1(array[3]);
+	TUint msgLength;
+	ret=lex1.Val(msgLength,EDecimal);
+	if(ret!=KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	LOGTEXT2(_L8("CAtSmsStoreRead::ParseResponseL\tMessage Length=%d"),msgLength);
+	TBuf8<KMaxAsciiPduLength>  pdu;	   //Binary Message pdu
+	SmsAtUtil::ConvertAsciiToBinary(array[4],pdu);
+	TPtrC8 pduPtr(pdu);
+	
+	RMobilePhone::TMobileAddress gsmServiceCentre;   //messages's SCA
+	if (msgLength*2 < array[4].Length())
+		{
+		// There is an SCA prepended so remove this and store it in iGsmServiceCentre
+		SmsAtUtil::ReadAndRemoveAddressFromPdu(pduPtr,gsmServiceCentre);
+		}
+	iSmsData.iSmsMsg = pduPtr;
+	iSmsData.iServiceCentre = gsmServiceCentre.iTelNumber;
+	iSmsData.iMobileScNPI = gsmServiceCentre.iNumberPlan;
+	iSmsData.iMobileScTON = gsmServiceCentre.iTypeOfNumber;
+	LOGTEXT2(_L8("CAtSmsStoreRead::ParseResponseL\tMessage Status=%d"),
+			                       iSmsData.iMessageStatus);
+	LOGTEXT3(_L8("CAtSmsStoreRead::ParseResponseL\tSmsMsg=%S, ServiceCentre=%S"), 
+			                       &iSmsData.iSmsMsg, &iSmsData.iServiceCentre);
+	CleanupStack::PopAndDestroy(&array);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstorereadall.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,230 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstorereadall.cpp
+// This contains CAtSmsStoreReadAll which is used to read all messages
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include 
+#include "mslogger.h"
+#include "atsmsstorereadall.h"
+#include "smsatutil.h"
+
+//constant defination
+_LIT8(KSmsReadCommand,"AT+CMGR=%d\r");
+_LIT8(KCMGRResponseString,"+CMGR:");
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::CAtSmsStoreReadAll
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreReadAll::CAtSmsStoreReadAll(CGlobalPhonemanager& aGloblePhone, 
+                                       CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                       :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsStoreReadAll::CAtSmsStoreReadAll called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::~CAtSmsStoreReadAll
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreReadAll::~CAtSmsStoreReadAll()
+	{
+	LOGTEXT(_L8("CAtSmsStoreReadAll::~CAtSmsStoreReadAll called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreReadAll* CAtSmsStoreReadAll::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                                CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreReadAll* self = new (ELeave)CAtSmsStoreReadAll( aGloblePhone,aCtsyDispatcherCallback );
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreReadAll* CAtSmsStoreReadAll::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                               CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreReadAll* self=CAtSmsStoreReadAll::NewLC( aGloblePhone,aCtsyDispatcherCallback );
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreReadAll::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreRead::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreReadAll::StartRequest()
+	{
+	iIndex = 1;
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreReadAll::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsStoreReadAll::ExecuteCommand callded"));
+	ReadMessage();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::ReadMessage
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreReadAll::ReadMessage()
+	{
+	LOGTEXT(_L8("CAtSmsStoreReadAll::ReadMessage callded"));
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KSmsReadCommand,iIndex);
+	Write();   
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreReadAll::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsStoreReadAll::EventSignal aStatus=%D iSource=%D"),
+			                          aStatus,aEventSource);
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsStoreRead::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		aStatus = iError;
+		}		
+		
+	if(iIndex < iPhoneGlobals.iStoreTotal)
+		{
+		iCtsyDispatcherCallback.CallbackPhonebookSmsStoreReadAllComp(aStatus,iSmsData,iIndex,ETrue,EFalse);
+		iIndex++;
+		ReadMessage();
+		}
+	else 
+		{
+		//Handle last message 
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookSmsStoreReadAllComp(aStatus,iSmsData,iIndex,EFalse,EFalse);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreReadAll::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreReadAll::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+	/**
+	* Response:+CMGR:<stat>,[<alpha>],<length><CR><LF><pdu>
+	*/
+	iError = KErrNone;	
+	RArray<TPtrC8> array;
+	CleanupClosePushL(array);
+	iParser->ParseRespondedBuffer(array,Buffer());
+	if(array[0].MatchF(KAnyATCommand)!=KErrNotFound)
+		{
+		array.Remove(0);
+		}
+	TInt count = array.Count();
+#ifdef _DEBUG
+	for( TInt i=0;i<count;i++ )
+		{
+        LOGTEXT3(_L8("CAtSmsStoreReadAll::ParseResponseL\tarray[%d]=%S"),i,&array[i]);  
+		}
+#endif   
+	if (count <= 1)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	if(array[0].MatchF(KCMGRResponseString)==KErrNotFound)
+		{
+		LOGTEXT(_L8("CAtSmsStoreReadAll::ParseResponseL\tFound +CMGR String!"));
+		CleanupStack::PopAndDestroy();
+		iError = KErrNotFound;
+		return;
+		}
+	// parse the message status
+	TLex8 lex(array[1]);
+	TUint16 val;
+	TInt ret=lex.Val(val,EDecimal);
+	if(ret!=KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	iSmsData.iMessageStatus = val;
+	
+	//parse the message length
+	TLex8 lex1(array[3]);
+	TUint msgLength;
+	ret=lex1.Val(msgLength,EDecimal);
+	if(ret!=KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		iError = ret;
+		return;
+		}
+	LOGTEXT2(_L8("CAtSmsStoreReadAll::ParseResponseL\tMessage Length=%d"),msgLength);
+	TBuf8<KMaxAsciiPduLength>  pdu;	   //Binary Message pdu
+	SmsAtUtil::ConvertAsciiToBinary(array[4],pdu);
+	TPtrC8 pduPtr(pdu);
+	
+	RMobilePhone::TMobileAddress gsmServiceCentre;   //messages's SCA
+	if (msgLength*2 < array[4].Length())
+		{
+		// There is an SCA prepended so remove this and store it in iGsmServiceCentre
+		SmsAtUtil::ReadAndRemoveAddressFromPdu(pduPtr,gsmServiceCentre);
+		}
+	iSmsData.iSmsMsg = pduPtr;
+	iSmsData.iServiceCentre = gsmServiceCentre.iTelNumber;
+	iSmsData.iMobileScNPI = gsmServiceCentre.iNumberPlan;
+	iSmsData.iMobileScTON = gsmServiceCentre.iTypeOfNumber;
+	LOGTEXT2(_L8("CAtSmsStoreReadAll::ParseResponseL\tMessage Status=%d"),
+			                          iSmsData.iMessageStatus);
+	LOGTEXT3(_L8("CAtSmsStoreReadAll::ParseResponseL\tSmsMsg=%S, ServiceCentre=%S"), 
+			                          &iSmsData.iSmsMsg, &iSmsData.iServiceCentre);
+	CleanupStack::PopAndDestroy(&array);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/atsmsstorewrite.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,316 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file atsmsstorewrite.cpp
+// This contains CAtSmsStoreWrite which is used to write sms message
+// 
+
+//system include 
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+//user include
+#include "atsmsstorewrite.h"
+#include "mslogger.h"
+#include "atmanager.h"
+#include "commengine.h"
+#include "smsatutil.h"
+
+//constant defination
+_LIT8(KCMGWResponseString,"+CMGW:");
+_LIT8(KSmsWriteLengthCommand,"AT+CMGW = %d\r");
+_LIT8(KDefaultSCA,"00");
+_LIT8(KSmsEnterPduResponse,">");
+const TInt KLtsyOnePause = 100000;   //0.1s
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::CAtSmsStoreWrite
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreWrite::CAtSmsStoreWrite(CGlobalPhonemanager& aGloblePhone, 
+                                   CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+                                   :CAtCommandBase(aGloblePhone,aCtsyDispatcherCallback)
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::CAtSmsStoreWrite called"));
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::~CAtSmsStoreWrite
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreWrite::~CAtSmsStoreWrite()
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::~CAtSmsStoreWrite called"));
+	delete iCallbackTimer;
+	iCallbackTimer = NULL;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreWrite* CAtSmsStoreWrite::NewLC(CGlobalPhonemanager& aGloblePhone, 
+                                          CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreWrite* self = new (ELeave)CAtSmsStoreWrite(aGloblePhone, 
+                                                          aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CAtSmsStoreWrite* CAtSmsStoreWrite::NewL(CGlobalPhonemanager& aGloblePhone, 
+                                         CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	CAtSmsStoreWrite* self=CAtSmsStoreWrite::NewLC(aGloblePhone, 
+                                                   aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::ConstructL()
+	{
+	CAtCommandBase::ConstructL();
+	//Create Timer
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	//set writing timeout
+	iWriteTimeOut = KLtsyDefaultWriteTimeOut;
+	AddExpectStringL(KSmsEnterPduResponse);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::SeGsmSmsEntry
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::SeGsmSmsEntry(RMobileSmsStore::TMobileGsmSmsEntryV1 aMobileGsmEntry)
+	{
+	iMobileGsmEntry = aMobileGsmEntry;
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::StartRequest
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::StartRequest()
+	{
+	ExecuteCommand();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::ExecuteCommand
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::ExecuteCommand()
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::ExecuteCommand callded"));
+	WriteMessage();
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::WriteMessage
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::WriteMessage()
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::WriteMessage callded"));
+	iTxBuffer.Zero();
+	
+	RMobilePhone::TMobileAddress  msgSca = iMobileGsmEntry.iServiceCentre;
+	if( msgSca.iTelNumber.Length()!=0 )
+		{
+		//Here is a SCA
+		TInt ret = SmsAtUtil::AppendAddressToAscii(iMsgDataAscii,msgSca);
+		if( ret!=KErrNone )
+			{
+			BeginTimer();
+			iCallbackVal = ret;
+			return;
+			}
+		}
+	else 
+		{
+		//Here is no SCA,usign default SCA
+		iMsgDataAscii.Append(KDefaultSCA);
+		}
+	
+	const TInt msgDataAsciiLen(iMsgDataAscii.Length());
+	// Convert PDU to ASCII
+	SmsAtUtil::AppendDataToAscii(iMsgDataAscii,iMobileGsmEntry.iMsgData);
+	iState = ESetPDULengthComplete;
+	StartWritingPduLength();	
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::StartWritingPduLength
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::StartWritingPduLength()
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::StartWritingPduLength called"));
+	TInt pduLen = iMobileGsmEntry.iMsgData.Length();
+	iTxBuffer.Zero();
+	iTxBuffer.Format(KSmsWriteLengthCommand,pduLen);
+	ClearBuffer();
+	iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
+	iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);	
+	StartTimer(iWriteTimeOut);
+	}
+
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::StartWritingPdu
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::StartWritingPdu()
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::StartWritingPdu called"));
+	iTxBuffer.Zero();
+	iTxBuffer.Append(iMsgDataAscii);
+	iTxBuffer.Append(KLtsyCtrlZChar);
+	ClearBuffer();
+	iPhoneGlobals.iAtManager->SetSolicitedAtCommand(this);
+	iPhoneGlobals.iCommEngine->CommWrite(iTxBuffer);	
+	StartTimer(iWriteTimeOut);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::EventSignal
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::EventSignal(TAtEventSource aEventSource, TInt aStatus)
+	{
+	LOGTEXT3(_L8("CAtSmsStoreWrite::EventSignal aStatus=%D iSource=%D"),aStatus,aEventSource);
+		
+	if(aStatus == KErrNone)
+		{
+		if((aEventSource == EWriteCompletion))
+			{
+			LOGTEXT(_L8("CAtSmsStoreWrite::EventSignal,EWriteCompletion!"));
+			return;
+			}
+		else
+			{
+			if( iState == ESetPDULengthComplete )
+				{
+	            if(iError==KErrNone)
+	            	{
+			    	iState = EWritePDUComplete;
+			    	Complete();
+			    	StartWritingPdu();
+			    	return;     
+	            	}
+				}
+			}
+		aStatus = iError;
+		}
+	Complete();
+	iPhoneGlobals.iEventSignalActive = EFalse;
+	iCtsyDispatcherCallback.CallbackPhonebookSmsStoreWriteEntryComp(aStatus,iLocation,EFalse);
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::ParseResponseL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::ParseResponseL(const TDesC8& /*aResponseBuf*/)
+	{
+    LOGTEXT(_L8("CAtSmsStoreWrite::ParseResponseL called!"));
+    if(iState == ESetPDULengthComplete) 
+	    {
+   	    if(CurrentLine().MatchF(KSmsEnterPduResponse) != KErrNotFound)
+	    	{
+	    	iError = KErrNone;
+	    	}
+	    else
+	    	{
+	    	iError = KErrNotFound;
+	    	}
+	    }
+    else
+    	{
+	    iError = KErrNone;	
+	    TPtrC8 responseBuf;
+	    responseBuf.Set(Buffer());
+		TInt pos = responseBuf.FindF(KCMGWResponseString);
+		if (pos == KErrNotFound)
+			{
+			LOGTEXT(_L8("CAtSmsStoreWrite::ParseResponseL\tError - Cannot find '+CMGW:' string"));
+			iError = KErrNotFound;
+			return;
+			}
+		pos += KCMGWResponseString().Length();
+		//skip a "space" start
+		while(!(TChar(responseBuf[pos]).IsDigit()))
+			{
+			++pos;
+			}
+		// Place the message reference number into buffer 
+		//(ie: everything after +CMGW: string)
+		TInt refPos = responseBuf.Length()-pos;
+		responseBuf.Set(responseBuf.Right(refPos));
+		
+		
+		TLex8 lex(responseBuf);
+		TUint16 val;
+		TInt ret = lex.Val(val,EDecimal);
+		if(ret != KErrNone)
+			{
+			iError = ret;
+			return;
+			}
+		iLocation = val;
+		LOGTEXT2(_L8("CAtSmsStoreWrite::ParseResponseL write index =%d"),iLocation);
+    	}
+	}
+
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::BeginTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::BeginTimer()
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::BeginTimer() called"));	
+	
+    if (iCallbackTimer->IsActive())
+    	{
+    	iCallbackTimer->Cancel();
+    	}
+	iCallbackTimer->After(KLtsyOnePause);	
+	}
+
+// ---------------------------------------------------------------------------
+// CAtSmsStoreWrite::TimerRun
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CAtSmsStoreWrite::TimerRun(TInt aError)
+	{
+	LOGTEXT(_L8("CAtSmsStoreWrite::TimerRun() called"));
+	if(aError == KErrNone)
+		{
+		Complete();
+		iPhoneGlobals.iEventSignalActive = EFalse;
+		iCtsyDispatcherCallback.CallbackPhonebookSmsStoreWriteEntryComp(
+				                iCallbackVal,iLocation,EFalse);
+		
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/atcommand/sms/src/smsatutil.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,447 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file smsatutil.cpp
+// This contains SmsAtUtil which is util for Sms At command
+// 
+
+// user include
+#include "smsatutil.h"
+#include "ltsycommondefine.h"
+#include "panic.h"
+
+/**
+ * Receive PDU example 
+ * 0891683108200805F0040D91683188902848F4000850208151754500108FD9662F4E0067616D4B8BD577ED4FE1
+ * 08 ocet length including 91
+ * 91 Identify Address Type
+ * 683108200805F0 SCA address
+ * 04
+ * 0D91683188902848F4
+ * 00
+ * 08
+ * 50208151754500
+ * 10   
+ * 8FD9662F4E0067616D4B8BD577ED4FE1
+ */
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertAsciiToBinary
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt SmsAtUtil::ConvertAsciiToBinary(const TDesC8& aAscii,TDes8& aData)
+	{
+	aData.Zero();
+	TLex8 lex;
+	TUint8 val;
+	TInt ret;
+	const TInt count(aAscii.Length());
+	for(TInt i = 0;i < count;i = i + 2)
+		{
+		lex = aAscii.Mid(i,2);
+		ret = lex.Val(val,EHex);
+		if(ret != KErrNone)
+			{
+			return ret;
+			}
+		aData.Append(val);
+		}
+	return KErrNone;
+	}
+
+// -------------------------------------------------------------------------------
+// SmsAtUtil::AppendAddressToAscii
+// other items were commented in a header
+// -------------------------------------------------------------------------------
+TInt SmsAtUtil::AppendAddressToAscii(TDes8& aAscii,
+		                             const RMobilePhone::TMobileAddress& aAddress)
+	{
+	// Duplicate tel number, removing all the weird chars
+	TBuf<RMobilePhone::KMaxMobileTelNumberSize> telNumber;
+	const TInt count(aAddress.iTelNumber.Length());
+	// Validate the size of the supplied SCA
+    if(count >= RMobilePhone::KMaxMobileTelNumberSize)
+    	{
+    	return KErrOverflow;
+    	}
+	TInt i;
+	for(i = 0;i < count;++i)
+		{
+		if(IsAddressChar(TChar(aAddress.iTelNumber[i])))
+			telNumber.Append(aAddress.iTelNumber[i]);
+		}
+
+	const TInt telNumberLength(telNumber.Length());
+	
+	// Code Address-Length
+	AppendOctet(1 + (telNumberLength/2) + (telNumberLength%2),aAscii);
+
+	// Code Type-Of-Address
+	TInt typeOfNumber = ConvertTypeOfNumber(aAddress.iTypeOfNumber);
+	TInt numberingPlan = ConvertNumberingPlan(aAddress.iNumberPlan);
+	AppendOctet(0x80+(typeOfNumber<<4) + (numberingPlan),aAscii);
+
+	// Code Address-Value
+	TInt highSemiOctet;
+	TInt lowSemiOctet;
+	const TInt octets(telNumberLength/2);	// This division will be rounded down
+	for(i = 0; i < octets; ++i)
+		{
+		// See ETSI 03.40 section 9.1.2.3
+		// Address digits are coded into octets as pairs.
+		lowSemiOctet = ConvertAddressChar(TChar(telNumber[i*2]));
+		highSemiOctet = ConvertAddressChar(TChar(telNumber[(i*2)+1]));
+		AppendOctet((highSemiOctet<<4)+lowSemiOctet,aAscii);
+		}
+				
+	// If number of semi octects is odd then process the final octet
+	if(telNumberLength%2 == 1)		
+		{
+		lowSemiOctet = ConvertAddressChar(TChar(telNumber[telNumberLength-1]));
+		AppendOctet(0xf0+lowSemiOctet,aAscii);
+		}
+				
+	__ASSERT_DEBUG(aAscii.Length()%2 == 0,Panic(EATSmsUtilsOddNumberOfSemiOctets));
+	return KErrNone;
+	}
+
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::AppendDataToAscii
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void SmsAtUtil::AppendDataToAscii(TDes8& aAscii,const TDesC8& aData)
+ 	{
+	const TInt count(aData.Length());
+	__ASSERT_DEBUG((aAscii.MaxLength()-aAscii.MaxLength())<=(count*2),Panic(EATSmsUtilsDescriptorOverflow));
+
+	for(TInt i = 0; i < count; ++i)
+		{
+		AppendOctet(aData[i],aAscii);
+		}
+		
+	__ASSERT_DEBUG(aAscii.Length()%2==0,Panic(EATSmsUtilsOddNumberOfSemiOctets));
+	}
+
+// ----------------------------------------------------------------------------------
+// SmsAtUtil::ReadAndRemoveAddressFromAscii
+// other items were commented in a header
+// ----------------------------------------------------------------------------------
+TInt SmsAtUtil::ReadAndRemoveAddressFromAscii(TDes8& aAscii,
+		                                      RMobilePhone::TMobileAddress& aAddress)
+	{
+	__ASSERT_DEBUG(aAscii.Length()%2==0,Panic(EATSmsUtilsOddNumberOfSemiOctets));
+	TInt ret(KErrNone);
+
+	ret = ReadAddressFromAscii(aAscii,aAddress);
+	
+	if(ret==KErrNone)
+		{
+		// Delete address from aAscii (using Address-length at start of string)
+		TLex8 lex(aAscii.Mid(0,2));
+		TUint val;
+		ret=lex.Val(val,EHex);
+		if(ret == KErrNone)
+			{
+			// +1 to include 1 octect of Address-Length 
+			val = val+1;		
+			
+			// double value to change from 'octets used' to 'ASCII chars used'
+			val = val*2;
+			
+			aAscii.Delete(0,val);		
+			__ASSERT_DEBUG(aAscii.Length()%2==0,Panic(EATSmsUtilsOddNumberOfSemiOctets));
+			}
+		}
+	return ret;
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ReadAddressFromAscii
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt SmsAtUtil::ReadAddressFromAscii(const TDesC8& aAscii,
+		                             RMobilePhone::TMobileAddress& aAddress)
+	{
+	TLex8 lex;
+	TInt ret;
+	TUint8 val;
+	
+	// get address length + 1 octet Address Type(91)
+	lex = aAscii.Mid(0,2);
+	ret = lex.Val(val,EHex);
+	if(ret != KErrNone)
+		{
+		return ret;
+		}
+		
+	// we exclude the Address Type as address should not include this 
+	TInt addrLen = val-1;
+
+	// Type-Of-Number (see example above as 9)
+	lex = aAscii.Mid(2,1);
+	ret = lex.Val(val,EHex);
+	if(ret != KErrNone)
+		{
+		return ret;
+		}
+	
+	// Highest bit is not part of Type-Of-Number
+	aAddress.iTypeOfNumber = ConvertTypeOfNumber(val&0x07);	
+
+	// Number-Plan
+	lex = aAscii.Mid(3,1);
+	ret = lex.Val(val,EHex);
+	if(ret != KErrNone)
+		{
+		return ret;
+		}
+	
+	// we got Number-Plan which should be compatiable with Symbian defination
+	aAddress.iNumberPlan = ConvertNumberingPlan(val);
+	
+	// Address (loop for each octet ie. two hex chars from aAscii)
+	aAddress.iTelNumber.Zero();
+	for(TInt i = 0; i < addrLen; ++i)		
+		{
+		// Process semi-octet
+		lex = aAscii.Mid((i*2)+5,1);
+		ret = lex.Val(val,EHex);
+		if(ret != KErrNone)
+			{
+			return ret;
+			}
+		// 0xF is consider a pedding when the address length is odd number, so we do not need to append it to address field
+		if(val < 0xF)
+			aAddress.iTelNumber.Append(ConvertAddressChar(val));
+
+		// Process semi-octet
+		lex = aAscii.Mid((i*2)+4,1);
+		ret = lex.Val(val,EHex);
+		if(ret != KErrNone)
+			{
+			return ret;
+			}
+		
+		// 0xF is consider a pedding when the address length is odd number, so we do not need to append it to address field
+		if(val < 0xF)
+			aAddress.iTelNumber.Append(ConvertAddressChar(val));
+		}
+	return KErrNone;
+	}
+
+// ----------------------------------------------------------------------------------------
+// SmsAtUtil::ReadAndRemoveAddressFromPdu
+// other items were commented in a header
+// ----------------------------------------------------------------------------------------
+void SmsAtUtil::ReadAndRemoveAddressFromPdu(TPtrC8& aPdu, 
+		                                    RMobilePhone::TMobileAddress& aGsmServiceCentre)
+	{
+	const TUint8 KTONBitMask = 0x70;
+	const TUint8 KNPIBitMask = 0x0f;
+	const TUint8 KTONBitShift = 4;
+	const TUint8 KNPIBitShift = 0;
+	_LIT(KInternationalPrefix,"+");
+
+	aGsmServiceCentre.iTypeOfNumber = (RMobilePhone::TMobileTON)0;
+	aGsmServiceCentre.iNumberPlan = (RMobilePhone::TMobileNPI)0;
+	aGsmServiceCentre.iTelNumber.Zero();
+	
+	TUint8 len = aPdu[0];
+	
+	if(len == 0)
+		{
+		// A zero length SCA has been prepended - just strip this first byte off
+		aPdu.Set(aPdu.Mid(len+1));
+		return;
+		}
+
+	TUint8 numDes = aPdu[1];
+	aGsmServiceCentre.iTypeOfNumber = (RMobilePhone::TMobileTON)((numDes&KTONBitMask)>>KTONBitShift);
+	aGsmServiceCentre.iNumberPlan = (RMobilePhone::TMobileNPI)((numDes&KNPIBitMask)>>KNPIBitShift);
+
+	if(aGsmServiceCentre.iTypeOfNumber == RMobilePhone::EInternationalNumber)
+		aGsmServiceCentre.iTelNumber.Append(KInternationalPrefix);
+
+	TInt i;
+	TUint16 digit;
+	for(i = 2;i<(len+1);i++)
+		{
+		digit = (TUint16)((aPdu[i]&0x0f) + 0x30);
+		aGsmServiceCentre.iTelNumber.Append(digit);
+		digit = (TUint16)(((aPdu[i]&0xf0)>>4) + 0x30);
+		if(digit == 0x003f)		// 'F' is the padding digit at the end of a number
+			break;
+		aGsmServiceCentre.iTelNumber.Append(digit);
+		}
+	aPdu.Set(aPdu.Mid(len + 1));
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::IsAddressChar
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TBool SmsAtUtil::IsAddressChar(TChar aChar)
+ 	{
+	if(aChar.IsDigit())
+		{
+		return ETrue;
+		}
+	if(aChar == TChar('*') ||
+	   aChar == TChar('#') ||
+	   aChar == TChar('a') ||
+	   aChar == TChar('b') ||
+	   aChar == TChar('c'))
+		{
+		return ETrue;
+		}
+	return EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertNumberingPlan
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobileNPI SmsAtUtil::ConvertNumberingPlan(TInt aValue)
+	{
+	switch(aValue)
+		{
+		// The below 'magic numbers' come from the ETSI 03.40
+		// specification for Address Fields (section 9.1.2.5)
+	case 1:
+		return RMobilePhone::EIsdnNumberPlan;
+	case 3:
+		return RMobilePhone::EDataNumberPlan;
+	case 4:
+		return RMobilePhone::ETelexNumberPlan;
+	case 8:
+		return RMobilePhone::ENationalNumberPlan;
+	case 9:
+		return RMobilePhone::EPrivateNumberPlan;
+	default:
+		return RMobilePhone::EUnknownNumberingPlan;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertTypeOfNumber
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobileTON SmsAtUtil::ConvertTypeOfNumber(TInt aValue) 
+	{
+	switch(aValue)
+		{
+		// The below 'magic numbers' come from the ETSI 03.40
+		// specification for Address Fields (section 9.1.2.5)
+	case 0:		
+		return RMobilePhone::EUnknownNumber;
+	case 1:		
+		return RMobilePhone::EInternationalNumber;
+	case 2:
+		return RMobilePhone::ENationalNumber;
+	case 3:
+		return RMobilePhone::ENetworkSpecificNumber;
+	case 4:
+		return RMobilePhone::ESubscriberNumber;
+	default:
+		return RMobilePhone::EUnknownNumber;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::AppendOctet
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void SmsAtUtil::AppendOctet(TInt aOctet,TDes8& aAscii)
+	{
+	// Ensure client has only passed us a octet (ie. low 8 bits only)
+	aOctet = aOctet&0xff;
+	// Append octet 
+	// (prefix '0' if the octets value only uses one digit as final 
+    //  octet coding must use two digits)
+	if(aOctet <= 0x0f)
+		{
+		aAscii.Append(TChar('0'));
+		}
+	
+	aAscii.AppendNum(aOctet,EHex);
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertAddressChar
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt SmsAtUtil::ConvertAddressChar(TChar aChar)
+ 	{
+	aChar.LowerCase();
+	if(aChar-TChar('0') <= 9)
+		{
+		// it should be digital number from 0~9
+		return aChar-TChar('0');
+		}
+	else if(aChar == TChar('*'))
+		{
+		return 10;
+		}
+	else if(aChar == TChar('#'))
+		{
+		return 11;
+		}
+	else if(aChar == TChar('a'))
+		{
+		return 12;
+		}
+	else if(aChar == TChar('b'))
+		{
+		return 13;
+		}
+	else if(aChar == TChar('c'))
+		{
+		return 14;
+		}
+	return 15;
+	}	
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertAddressChar
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TChar SmsAtUtil::ConvertAddressChar(TInt aBinary)
+	{
+	if(aBinary >= 0 && aBinary <= 9)
+		{
+		return aBinary + TChar('0');  	// Assumes digit characters are one after each other
+		}
+	else if(aBinary == 10)
+		{
+		return TChar('*');
+		}
+	else if(aBinary == 11)
+		{
+		return TChar('#');
+		}
+	else if(aBinary == 12)
+		{
+		return TChar('a');
+		}
+	else if(aBinary == 13)
+		{
+		return TChar('b');
+		}
+	else if(aBinary == 14)
+		{
+		return TChar('c');
+		}
+	return TChar(0);		// This is the cloest I can find to a NULL char 
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/bwins/licenseeskeletontsyu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LTsyFactoryL@@YAPAVMLtsyFactoryBase@@XZ @ 1 NONAME ; class MLtsyFactoryBase * LTsyFactoryL(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/bwins/stltsyu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LTsyFactoryL@@YAPAVMLtsyFactoryBase@@XZ @ 1 NONAME ; class MLtsyFactoryBase * LTsyFactoryL(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/inc/commengine.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,305 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file commengine.h
+// This contains CCommEngine which manage access to serial port.
+// 
+
+#ifndef __CCOMMENGINE_H__
+#define __CCOMMENGINE_H__
+
+// system include
+#include <c32comm.h>
+#include <callbacktimer.h>
+
+// use include
+#include "mcommobserver.h"
+#include "globalphonemanager.h"
+
+// const defination
+const TInt KCommRxBufSize = 200;
+
+//Class forward
+class CCommWriter;
+class CCommReader;
+class CStringParser;
+
+/**
+ * The class provide the functionalities to access the serials port, write and read to or from
+ * serial port. It also provide the function to find one line of string and notify its observer. 
+ * 
+ */
+class CCommEngine : public CBase,
+					public MTimerObserver
+
+	{
+	friend class CCommWriter;
+	friend class CCommReader;
+public:
+	/**
+	 * Factory function
+	 * 
+	 * @param aBufferSize
+	 * @param aReadPriority
+	 * @param aWritePriority
+	 * @param aPortAccess
+	 */
+	static CCommEngine* NewL(TInt aBufferSize, 
+						TInt aReadPriority, 
+						TInt aWritePriority, 
+						TPortAccess& aPortAccess);
+	
+	/**
+	 * Factory function
+	 * 
+	 * @param aBufferSize
+	 * @param aReadPriority
+	 * @param aWritePriority
+	 * @param aPortAccess
+	 */
+	static CCommEngine* NewLC(TInt aBufferSize, 
+						TInt aReadPriority, 
+						TInt aWritePriority, 
+						TPortAccess& aPortAccess);
+	
+	/**
+	 * Destructor
+	 * 
+	 */
+	virtual ~CCommEngine();
+	
+public:
+	/**
+	 * Configure the serial port
+	 * 
+	 */
+	TInt ConfigurePort(TCommConfig aConfiguration);
+	
+	/**
+	 * Open the serial port
+	 * 
+	 * @param aDll
+	 * @param aName
+	 * @param aAccess
+	 */
+	TInt CommOpen(const TDesC& aDll, const TDesC& aName, TCommAccess aAccess);
+	
+	/**
+	 * Close the serial port
+	 * 
+	 */
+	void CommClose();
+	
+	/**
+	 * Cancel comm serail IO opeation
+	 * 
+	 */
+	void CommCancel();
+	
+	/**
+	 * Start serail IO writing
+	 * 
+	 */
+	void CommWrite(const TDesC8& aDes);
+	
+	/**
+	 * Serial port writing is ready
+	 * 
+	 */
+	void CommWriteReady();
+	
+	/**
+	 * Cancel serial writing
+	 * 
+	 */
+	void CommWriteCancel();
+	
+	/**
+	 * Start serail IO reading
+	 * 
+	 */
+	void CommRead();
+	
+	/**
+	 * Start to read
+	 * 
+	 */
+	void Read();
+	
+	/**
+	 * The read will return whatever the data have been received
+	 * 
+	 */
+	void CommReadOneOrMore();
+	
+	/**
+	 * Cancel reading
+	 */
+	void CommReadCancel();
+	
+	/**
+	 * Disconnect it from modem
+	 */
+	void Disconnect();
+	
+	/**
+	 * Drop the DTR
+	 */
+	void DropDtr();
+	
+	/**
+	 * Raise the DTR-- Data Terminal Ready
+	 */
+	void RaiseDTR();
+	
+	/**
+	 * Drop the RTS signal-- Request to send
+	 */
+	void DropRTS();
+	
+	/**
+	 * Raise the RTS signal
+	 */
+	void RaiseRTS();
+	
+	/**
+	 * Clean all the buffers
+	 */
+	void ResetBuffers();
+	
+	/**
+	 * Get the singnals
+	 */
+	TUint Signals();
+	
+	/**
+	 * Start the timer
+	 */
+	void StartTimer(TInt aSecond);
+	
+	/**
+	 * Stop the timer
+	 */
+	void StopTimer();
+	
+	/**
+	 * Reset all the buffers
+	 */
+	void ResetReadAndWriteBuffers();
+	
+	/**
+	 * Get the port shutdown timeout
+	 */
+	TInt GetPortShutdownTimeout();
+	
+	/**
+	 * Set the port shut down timeout
+	 */
+	TInt SetPortShutdownTimeout(TInt aTimeout);
+	
+	/**
+	 * Get the string parser
+	 */
+	CStringParser* GetStringParse() const;
+public:
+    /**
+     * Set the notifier for get the notificaiton when one line of string was found
+     */
+	void SetCommReadLineNotify(MCommReadLineNotifier *aReadLineNotify);
+	
+	/**
+	 * Set the comm engine observer
+	 */
+	void SetCommEngineObserver(MCommEngineObserver *aEngineObserver);
+public:
+ 	/**
+ 	 * Handle read complete event
+ 	 */
+	virtual void CommReadComplete(TInt aStatus);
+	
+	/**
+	 * Handle write complete event
+	 */
+	virtual void CommWriteComplete(TInt aStatus);
+protected:
+    /**
+     * Constructor
+     */
+	CCommEngine(TPortAccess& aPortAccess);
+	
+	/**
+	 * 2nd constructor
+	 */
+	void ConstructL(TInt aBufferSize, TInt aReadPriority, TInt aWritePriority);	
+private:
+	/**
+	 * From MTimerObserver
+	 */
+    virtual void TimerRun(TInt aError);  
+    
+    /**
+     * Get the size of received buffer
+     */
+    TInt GetSizeOfRxBuffer();
+private:
+	/**
+	 * The comm server reference
+	 */
+	RCommServ iCommServer;
+	
+	/**
+	 * The comm port object
+	 */
+	RComm iCommPort;	
+	
+	/**
+	 * The active object for reading data from Baseband
+	 */
+	CCommReader *iCommReader;
+	
+	/**
+	 * The active object for writing AT command
+	 */
+	CCommWriter *iCommWriter;
+	
+	/**
+	 * The string parser
+	 */
+	CStringParser *iStringParse;
+	
+	/**
+	 * The engine observer
+	 */
+	MCommEngineObserver *iEngineObserver;
+	
+	/**
+	 * The received data
+	 */
+	TBuf8<KCommRxBufSize> iRxBuf;
+	
+	/**
+	 * The port specification
+	 */
+	TPortAccess& iPortAccess;
+    
+	/**
+	 * The timer active object. Used to record the time after a writing request is triggered.
+	 */
+	CCallbackTimer* iCallbackTimer;	
+	
+	/**
+	 * Check if the comm has been canceled.
+	 */	
+	TBool iCommCancel;
+	};
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/inc/commreader.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,41 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CCommReader.
+// 
+
+#ifndef __COMMREADER_H__
+#define __COMMREADER_H__
+
+#include <e32base.h>
+
+class MCommObserver;
+class CCommEngine;
+
+class CCommReader : public CActive
+	{
+public:
+	CCommReader(CCommEngine* aComm, TInt aPriority);
+	virtual ~CCommReader();
+	void Activate();
+	TRequestStatus& StatusRef();
+protected:
+	virtual void RunL();
+	virtual void DoCancel();
+private:
+	CCommEngine* iComm; //Not owned
+	};
+
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/inc/commwriter.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,38 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CCommWriter.
+// 
+
+#ifndef __COMMWRITER_H__
+#define __COMMWRITER_H__
+
+#include<e32base.h>
+class MCommObserver;
+class CCommEngine;
+
+class CCommWriter : public CActive
+	{
+public:
+	CCommWriter(CCommEngine* aComm, TInt aPriority);
+	virtual ~CCommWriter();
+	void Activate();
+	TRequestStatus& StatusRef();
+protected:
+	virtual void RunL();
+	virtual void DoCancel();
+private:
+	CCommEngine* iComm; //Not owned
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/inc/mcommobserver.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// MCommEngineObserve & MCommReadLineNotifier
+// 
+
+#ifndef __MCOMMOBSERVER_H__
+#define __MCOMMOBSERVER_H__
+
+//symtem include
+
+//user include 
+#include "ltsycommondefine.h"
+
+/**
+ * Define the engine's observer
+ * 
+ */
+class MCommEngineObserver
+	{
+public:
+	/**
+	 * Notify the observer if any event happens
+	 * 
+	 */
+	virtual void ReadOrWriteComplete(TAtEventSource aEvent, TInt aStatus) = 0;
+	};
+
+/**
+ * Define the notifer of one line string which has been found
+ * 
+ */
+class MCommReadLineNotifier
+	{
+public:
+	/**
+	 * Notify one line of string was found
+	 */
+	virtual TBool NotifyOneLineFoundL(TInt aStatus, const TDesC8& aLineBuf)=0;
+	};	
+
+#endif
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/inc/stringparser.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,81 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CStringParser
+
+#ifndef STRINGPARSER_H_
+#define STRINGPARSER_H_
+
+//system include
+#include <e32base.h>
+
+//user include
+#include "mcommobserver.h"
+
+
+class CStringParser : public CBase
+	{
+public:
+	static CStringParser* NewL(TInt aBufferSize);
+	
+	static CStringParser* NewLC(TInt aBufferSize);
+	
+	virtual ~CStringParser();
+	
+public:
+	void ProcessReadString(const TDesC8& aReadString);
+	
+	TPtrC8 Buffer() const;
+	
+	TPtrC8 CurrentLine() const;
+	
+	void ClearBuffer();
+	
+	void ClearCurrentLine();
+	
+	//Must be call this function
+	void SetReadLineNotify(MCommReadLineNotifier* aNofity);
+	
+protected:
+	
+	CStringParser();
+	
+	void ConstructL(TInt aBufferSize);
+	
+	void CreateL(TInt aBufferSize);
+	
+private:
+	TText8 *iBuffer;
+	TText8 *iBufferEnd;
+	/**
+	* The last char added in the current line
+	*/
+	TText8 *iLastChar;
+	
+	/**
+	* The start of \r\n delimited line
+	*/
+	TText8 *iLineStart;
+	
+	/**
+	* Means if current char is a delimiter
+	*/
+	TBool iInDelimiter;
+	
+	/**
+	*
+	*/
+	MCommReadLineNotifier *iReadLineNotify; //Not owned
+	};
+
+#endif /*STRINGPARSER_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/src/commengine.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,581 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file commengine.cpp
+// This contains CCommEngine which manage access to serial port.
+// 
+
+// user include
+#include "globalphonemanager.h"
+#include "commengine.h"
+#include "mslogger.h"
+#include "commreader.h"
+#include "commwriter.h"
+#include "mcommobserver.h"
+#include "stringparser.h"
+
+// const define
+const TInt KLtsyOneSecondPause = 1000000;
+
+// ---------------------------------------------------------------------------
+// CCommEngine::NewL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CCommEngine* CCommEngine::NewL(TInt aBufferSize, 
+					           TInt aReadPriority, 
+					           TInt aWritePriority, 
+					           TPortAccess& aPortAccess)
+	{
+	CCommEngine *self = CCommEngine::NewLC(aBufferSize, 
+										   aReadPriority, 
+										   aWritePriority, 
+										   aPortAccess);
+	CleanupStack::Pop(self);
+	
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::NewLC
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CCommEngine* CCommEngine::NewLC(TInt aBufferSize, 
+							    TInt aReadPriority, 
+							    TInt aWritePriority, 
+							    TPortAccess& aPortAccess)
+	{
+	CCommEngine* self = new (ELeave) CCommEngine(aPortAccess);
+	CleanupStack::PushL(self);
+	
+	self->ConstructL(aBufferSize, aReadPriority, aWritePriority);
+	
+	return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::~CCommEngine
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CCommEngine::~CCommEngine()
+	{
+    delete iCommReader;
+	delete iCommWriter;
+	delete iStringParse;
+	delete iCallbackTimer;
+	iCommPort.Close();
+	iCommServer.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CCommEngine
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CCommEngine::CCommEngine(TPortAccess& aPortAccess) 
+						:iPortAccess(aPortAccess)
+	{
+	iCommReader = NULL;
+	iCommWriter = NULL;
+	iEngineObserver = NULL;
+	iStringParse = NULL;
+	iCommCancel = EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::ConstructL
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::ConstructL(TInt aBufferSize, TInt aReadPriority, TInt aWritePriority)
+	{
+	iCommReader = new (ELeave) CCommReader(this, aReadPriority);
+	iCommWriter = new (ELeave) CCommWriter(this, aWritePriority);	
+	iStringParse = CStringParser::NewL(aBufferSize);
+	iCallbackTimer = CCallbackTimer::NewL(*this);
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::ConfigurePort
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CCommEngine::ConfigurePort(TCommConfig aConfiguration)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::ConfigurePort()"));
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		TInt ret;
+		TCommConfig cbuf;
+		TCommConfigV01 &cfg = cbuf();
+		
+		// Get the Configuration from current serial com port
+		iCommPort.Config(cbuf);
+	    
+		// set the configuration according to passed config data
+		TCommConfigV01 &newCfg = aConfiguration();
+		cfg.iRate = newCfg.iRate;
+		cfg.iDataBits = newCfg.iDataBits;
+		cfg.iStopBits = newCfg.iStopBits;
+		cfg.iParity = newCfg.iParity;
+		cfg.iHandshake = newCfg.iHandshake;
+		
+		// Set the Configuration
+		ret = iCommPort.SetConfig(cbuf);
+		if(ret != KErrNone)
+			{
+			LOGTEXT2(_L8("[Ltsy] CCommEngine:\tError %d configuring port"),ret);
+			return ret;
+			}
+		}
+	return KErrNone;	
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::Disconnect
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::Disconnect()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Disconnect()"));
+	
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		TCommConfig cbuf;
+		TCommConfigV01 &cfg = cbuf();
+		iCommPort.Config(cbuf);
+		cfg.iHandshake = KConfigFreeRTS	| KConfigFreeDTR;
+		TInt ret = iCommPort.SetConfig(cbuf);
+		if (ret == KErrNone)
+			{
+			iCommPort.SetSignalsToSpace(KSignalRTS | KSignalDTR);
+			}
+		}
+	
+	CommClose();
+	
+	iPortAccess = EPortAccessDenied;	
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::Read
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::Read()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Read()"));
+	iCommCancel = EFalse;
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		CommReadOneOrMore();
+		}
+	else
+		{
+		LOGTEXT(_L8("[Ltsy] Port Not Allow Access"));
+		}	
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::DropDtr
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::DropDtr()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::DropDtr()"));
+	
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		LOGTEXT(_L8("[Ltsy] CCommEngine::DropDtr Dropping DTR"));
+		
+		iCommPort.SetSignals(0,KSignalDTR);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::RaiseDTR
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::RaiseDTR()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::RaiseDTR()"));
+	
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		LOGTEXT(_L8("[Ltsy] CCommEngine::RaiseDTR Raising DTR"));
+		
+		iCommPort.SetSignals(KSignalDTR,0);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::DropRTS
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::DropRTS()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::DropRTS()"));
+	
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		LOGTEXT(_L8("[Ltsy] Dropping RTS"));
+		
+		iCommPort.SetSignals(0,KSignalRTS);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::RaiseRTS
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::RaiseRTS()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::RaiseRTS()"));
+	
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		LOGTEXT(_L8("[Ltsy] Raising RTS"));
+		
+		iCommPort.SetSignals(KSignalRTS,0);
+		}
+	}
+// ---------------------------------------------------------------------------
+// CCommEngine::ResetBuffers
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::ResetBuffers()
+	{
+	iCommPort.ResetBuffers();
+	}
+// ---------------------------------------------------------------------------
+// CCommEngine::Signals
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TUint CCommEngine::Signals()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::Signals()"));
+	
+	return iCommPort.Signals();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::ResetReadAndWriteBuffers
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::ResetReadAndWriteBuffers()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::ResetReadAndWriteBuffers()"));
+	
+	iCommPort.ResetBuffers();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::GetSizeOfRxBuffer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CCommEngine::GetSizeOfRxBuffer()
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::GetSizeOfRxBuffer()"));
+	
+	return iCommPort.QueryReceiveBuffer();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::GetPortShutdownTimeout
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CCommEngine::GetPortShutdownTimeout()
+	{
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		TCommConfig2 cbuf;
+		TCommConfigV02& cfg = cbuf();
+		// Get the Configuration
+		iCommPort.Config(cbuf);				
+
+		return (cfg.iTxShutdownTimeout);
+		}
+	else
+		{
+		return (0);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::SetPortShutdownTimeout
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CCommEngine::SetPortShutdownTimeout(TInt aTimeout)
+	{
+	if (iPortAccess == EPortAccessAllowed)
+		{
+		TCommConfig2 cbuf;
+		TCommConfigV02 &cfg = cbuf();
+		
+		//Get the Configuration
+		iCommPort.Config(cbuf);
+	
+		//Set the Configuration
+		cfg.iTxShutdownTimeout = aTimeout;
+		return (iCommPort.SetConfig(cbuf));
+		}
+	else
+		{
+		return KErrAccessDenied;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommOpen
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt CCommEngine::CommOpen(const TDesC& aDll, const TDesC& aName, TCommAccess aMode)
+	{
+	TInt err;
+	if (err = iCommServer.Connect(), err!=KErrNone)
+		return err;
+		
+	// load serial comm module
+	if (aDll.Length()>0)
+		{
+		if (err = iCommServer.LoadCommModule(aDll), err!=KErrNone)
+			{
+			iCommServer.Close();
+			return err;
+			}
+		}
+	
+	// start to open the serial com with ECommShared model
+	if (aMode==ECommShared)
+		{
+		if (err = iCommPort.Open(iCommServer, aName, aMode), err!=KErrNone)
+			{
+			iCommServer.Close();
+			return err;
+			}
+		}
+		
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommClose
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommClose()
+	{
+	iCommReader->Cancel();
+	iCommWriter->Cancel();
+	iCommPort.Close();
+	iCommServer.Close();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommWrite
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommWrite(const TDesC8& aDes)
+	{
+    LOGTEXT(_L8("[Ltsy] Starting CCommEngine::CommWrite()"));
+    LOGTEXTREL2(_L8("Tx:\t%S"),&aDes);
+    
+	iCommPort.Write(iCommWriter->StatusRef(), aDes);
+	iCommWriter->Activate();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommRead
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommRead()
+	{
+	iCommPort.Read(iCommReader->StatusRef(), iRxBuf, iRxBuf.Length());
+	iCommReader->Activate();
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommReadOneOrMore
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommReadOneOrMore()
+	{
+	if(!iCommCancel)
+		{
+		iCommPort.ReadOneOrMore(iCommReader->StatusRef(), iRxBuf);
+		iCommReader->Activate();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommCancel
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommCancel()
+	{
+	iCommCancel = ETrue;
+	if(iCallbackTimer->IsActive())
+	    {
+		iCallbackTimer->Cancel();
+		}
+		
+	if (NULL != iCommWriter)
+		{
+		iCommWriter->Cancel();
+		}
+	
+	if (NULL != iCommReader)
+		{
+		iCommReader->Cancel();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommWriteCancel
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommWriteCancel()
+	{
+	if(iCallbackTimer->IsActive())
+	    {
+		iCallbackTimer->Cancel();
+		}
+		
+	if (NULL != iCommWriter)
+		{
+		iCommWriter->Cancel();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommReadCancel
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommReadCancel()
+	{
+	if(iCallbackTimer->IsActive())
+	    {
+		iCallbackTimer->Cancel();
+		}
+		
+	if (NULL != iCommReader)
+		{
+		iCommReader->Cancel();
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommReadComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommReadComplete(TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::CommReadComplete()"));
+	LOGTEXT2(_L8("[Ltsy] aStatus = %d"), aStatus);
+	LOGTEXT2(_L8("Received %d"),iRxBuf.Length());
+	LOGTEXTREL2(_L8("Rx:\t%S"),&iRxBuf);
+		
+	if (KErrNone == aStatus)
+		{
+		if (NULL != iStringParse)
+			{
+			iStringParse->ProcessReadString(iRxBuf);
+			}
+			
+		CommReadOneOrMore();	
+		}
+	else
+		{
+		if (NULL != iEngineObserver)
+			{
+			iEngineObserver->ReadOrWriteComplete(EReadCompletion, aStatus);
+			}
+		}
+	LOGTEXT(_L8("[Ltsy] End CCommEngine::CommReadComplete()"));
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::CommWriteComplete
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::CommWriteComplete(TInt aStatus)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CCommEngine::CommWriteComplete()"));
+	LOGTEXT2(_L8("[Ltsy] aStatus = %d"), aStatus);
+	if(iCallbackTimer->IsActive())
+	    {
+		iCallbackTimer->Cancel();
+		}
+		
+	if (NULL != iEngineObserver)
+		{
+		iEngineObserver->ReadOrWriteComplete(EWriteCompletion, aStatus);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::GetStringParse
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+CStringParser* CCommEngine::GetStringParse() const
+	{
+	return iStringParse;
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::SetCommReadLineNotify
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::SetCommReadLineNotify(MCommReadLineNotifier *aReadLineNotify)
+	{
+	iStringParse->SetReadLineNotify(aReadLineNotify);
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::SetCommEngineObserver
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::SetCommEngineObserver(MCommEngineObserver *aEngineObserver)
+	{
+	iEngineObserver = aEngineObserver;
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::TimerRun
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::TimerRun(TInt aError)
+    {
+	if(aError == KErrNone)
+	    {
+		iEngineObserver->ReadOrWriteComplete(ETimeoutCompletion, KErrTimedOut);
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::StartTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::StartTimer(TInt aSeconds)
+    {
+    if (iCallbackTimer->IsActive())
+    	{
+    	iCallbackTimer->Cancel();
+    	}
+	iCallbackTimer->After(aSeconds*KLtsyOneSecondPause);
+	}
+
+// ---------------------------------------------------------------------------
+// CCommEngine::StopTimer
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void CCommEngine::StopTimer()	
+    {
+	iCallbackTimer->Cancel();
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/src/commreader.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,55 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CCommReader.
+// 
+
+//user include
+#include "commreader.h"
+#include "mcommobserver.h"
+#include "commengine.h"
+
+//Class CCommReader
+
+CCommReader::CCommReader(CCommEngine* aComm, TInt aPriority)
+	: CActive(aPriority), iComm(aComm)
+	{
+	CActiveScheduler::Add(this);
+	}
+	
+CCommReader::~CCommReader()
+	{
+	Cancel();
+	}
+
+void CCommReader::RunL()
+	{
+	iComm->CommReadComplete(iStatus.Int());
+	}
+
+void CCommReader::DoCancel()
+	{
+	iComm->iCommPort.ReadCancel();
+	}
+
+void CCommReader::Activate()
+	{
+	SetActive();
+	}
+
+TRequestStatus& CCommReader::StatusRef()
+	{ 
+	return iStatus; 
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/src/commwriter.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,55 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CCommWriter.
+// 
+
+//user include
+#include "commwriter.h"
+#include "mcommobserver.h"
+#include "commengine.h"
+
+// CCommWriter
+
+CCommWriter::CCommWriter(CCommEngine* aComm, TInt aPriority)
+	: CActive(aPriority), iComm(aComm)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CCommWriter::~CCommWriter()
+	{
+	Cancel();
+	}
+
+void CCommWriter::RunL()
+	{
+	iComm->CommWriteComplete(iStatus.Int());
+	}
+
+void CCommWriter::DoCancel()
+	{
+	iComm->iCommPort.WriteCancel();
+	}
+
+void CCommWriter::Activate() 
+	{ 
+	SetActive(); 
+	}
+
+TRequestStatus& CCommWriter::StatusRef() 
+	{ 
+	return iStatus; 
+	}
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/comms/src/stringparser.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,152 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CStringParser.
+// 
+
+//user include
+#include "stringparser.h"
+#include "mslogger.h"
+
+CStringParser* CStringParser::NewL(TInt aBufferSize)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CStringParser::NewL()"));
+	
+	CStringParser* self = CStringParser::NewLC(aBufferSize);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+CStringParser* CStringParser::NewLC(TInt aBufferSize)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CStringParser::NewLC()"));
+	
+	CStringParser* self = new (ELeave) CStringParser;
+	CleanupStack::PushL(self);
+	self->ConstructL(aBufferSize);
+	return self;
+	}
+
+CStringParser::~CStringParser()
+	{
+	User::Free(iBuffer);
+	}
+
+CStringParser::CStringParser()
+	{
+	}
+
+void CStringParser::ConstructL(TInt aBufferSize)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CStringParser::ConstructL()"));
+	CreateL(aBufferSize);
+	}
+
+TPtrC8 CStringParser::Buffer() const
+	{
+	return TPtrC8(iBuffer, iLastChar-iBuffer);
+	}
+
+TPtrC8 CStringParser::CurrentLine() const
+	{
+	TInt len=iLastChar-iLineStart;
+	if (len>0 && iInDelimiter)
+		len-=1;
+	return TPtrC8(iLineStart, len);	
+	}
+
+void CStringParser::ClearBuffer()
+	{
+	iLastChar = iBuffer;
+	iLineStart = iBuffer;
+	iInDelimiter = ETrue;	
+	}
+
+//
+// Remove current line, which is always at the end of the buffer
+//
+void CStringParser::ClearCurrentLine()
+	{
+	iLastChar = iLineStart;
+	iInDelimiter = ETrue;	
+	}
+
+void CStringParser::CreateL(TInt aBufSize)
+	{
+	iBuffer = (TText8*)User::AllocL(aBufSize);
+	iBufferEnd = (iBuffer+aBufSize)-1;
+	ClearBuffer();
+	}
+
+
+void CStringParser::SetReadLineNotify(MCommReadLineNotifier* aNofity)
+	{
+	iReadLineNotify = aNofity;
+	}
+
+
+void CStringParser::ProcessReadString(const TDesC8& aReadString)
+	{
+	LOGTEXT(_L8("[Ltsy] Starting CStringParse::ProcessReadString()"));
+	LOGTEXT2(_L8("[Ltsy] Read String = %S"), &aReadString);
+	for (TInt nBufferOffset = 0; nBufferOffset < aReadString.Length(); nBufferOffset++)
+		{
+		TText8 tChar = aReadString[nBufferOffset];
+		
+		// we have already found a char which is a delimiter of the Line
+        // so would dismiss any of delimiter following this one already found		
+		if (iInDelimiter && (tChar == '\r' || tChar == '\n'))
+			{
+			continue;
+			}
+		
+		// move on lastchar
+		*iLastChar++ = tChar;
+		// Diacarding characters if our buffer was overflowed
+		if (iLastChar >= iBufferEnd)
+			{
+			iLastChar = iBufferEnd;
+			}
+        // we anyway to find out the delimiter and notify the obser the line was found 		
+		if (tChar == '\r' || tChar == '\n')
+			{
+			iInDelimiter = ETrue;
+			TPtrC8 tLine(CurrentLine());
+			LOGTEXT2(_L8("[Ltsy] Line Content = %S"), &tLine);
+			TRAPD(err, iReadLineNotify->NotifyOneLineFoundL(KErrNone, tLine));
+			if (err != KErrNone)
+				{
+				ClearCurrentLine();
+				}
+			}
+		else
+			{
+			if(iInDelimiter) // the last char is a delimiter
+			    {
+				iInDelimiter=EFalse;
+			    iLineStart=iLastChar-1;	
+			    if(tChar == '>')
+			    	{
+			    	TPtrC8 tLine(CurrentLine());
+			    	TRAPD(err, iReadLineNotify->NotifyOneLineFoundL(KErrNone, tLine));
+					if (err != KErrNone)
+						{
+						ClearCurrentLine();
+						}			    	
+			    	}
+				}   
+			}
+		}
+	LOGTEXT(_L8("[Ltsy] End CStringParse::ProcessReadString()"));
+	}
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/AT-LTSY(default).cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,2756 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Intranet
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=mRouter
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Vodafone
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=TMobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Airtel
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Hutch
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Name=Default Modem
+	IfName=PPP
+	PortName=COMM::9
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=57600
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	IspInitString=*99***1#
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	CommRole=0
+	ControlChannelPortName=COMM::0
+	SIRSettings=0
+	Agent=psd.agt
+	FIELD_COUNT=71
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=GsmPhone1
+	Rate=150
+	Handshaking=4
+	XonChar=17
+	XoffChar=19
+	MessageCentreNumber=+447973100973
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NTRAS (Com0) Null Modem 115200bps
+	Rate=600
+	PortName=COMM::7
+	TSYName=NTRAS
+	Handshaking=4
+	MessageDeliveryReport=TRUE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NTRAS (Com1) Null Modem 115200bps
+	Rate=2400
+	TSYName=NTRAS
+	Handshaking=4
+	MessageDeliveryReport=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=CommModem
+	IfName=PPP
+	PortName=COMM::0
+	Rate=115200
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	ControlChannelPortName=COMM::0
+	Agent=PSD.agt
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=SimulatorPhone
+	Rate=4800
+	PortName=COMM::9
+	TSYName=SIM
+	Handshaking=196
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=GsmPhone3
+	Rate=7200
+	PortName=COMM::9
+	Handshaking=4
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	MessageCentreNumber=+447973100973
+	Agent=PSD.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=GsmPhone4
+	PortName=COMM::9
+	TSYName=DMM
+	Rate=19200
+	Handshaking=196
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=mRouterWinsBearer
+	Rate=38400
+	PortName=WINS::0
+	CSYName=WINSCSY
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	Handshaking=4
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=mRouterUsbBearer
+	Rate=150
+	PortName=ACM::0
+	CSYName=ECACM
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	Handshaking=4
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=trpat_psd
+	Rate=600
+	IfName=rawip
+	PortName=not used
+	TSYName=TRPAT
+	CSYName=CSY27010
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	BCAStack=C32Bca
+	Agent=trp.agt
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=CommModem
+	PortName=COMM::0
+	Rate=115200
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	Agent=csd.agt
+	FIELD_COUNT=11
+END_ADD
+
+# AndyS Modem on PC COM 3 [COMM::2]
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=CommModem
+	PortName=COMM::0
+	TSYName=phonetsy
+	Rate=115200
+	ModemInitString=ATZ
+	Agent=csd.agt
+	FIELD_COUNT=6
+END_ADD
+
+############################################################
+## LANBearer
+## 
+[LANBearer]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Ethernet 001
+	IfName=ethint
+	LDDFilename=enet
+	LDDName=Ethernet
+	PDDFilename=ethernet
+	PDDName=ethernet.wins
+	PacketDriverName=EtherPkt.drv
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet 002
+	IfName=ethint
+	LDDName=EtherCard
+	PDDName=EtherWins
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=44
+	DialOutCode=44
+	DisableCallWaitingCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Office
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=9,
+	DisableCallWaitingCode=9,
+	Mobile=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Office Direct Dial
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=171
+	DisableCallWaitingCode=171
+	Mobile=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Mobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Home
+	IntlPrefixCode=00
+	AreaCode=181
+	DialOutCode=181
+	DisableCallWaitingCode=181
+	Mobile=FALSE
+	UsePulseDial=TRUE
+	WaitForDialTone=TRUE
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Chargecard
+## 
+[Chargecard]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy BT Chargecard
+	AccountNumber=144,12345678
+	Pin=0000
+	LocalRule=HG
+	NatRule=HFG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dummy Mercury Chargecard
+	AccountNumber=0500800800,,12345678
+	Pin=****
+	LocalRule=HG
+	NatRule=J,K,0FG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## DialOutISP
+## 
+[DialOutISP]
+ADD_TEMPLATE
+	Name=Default Dial Out ISP
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=TRUE
+	DisplayPCT=FALSE
+	IfPromptForAuth=TRUE
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=28
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Pipex CSD
+	Description=Pipex Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=08450885336
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=solabf75
+	IfAuthPass=oodifama
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS
+	Description=Test
+	Type=INTERNETONLY
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=19
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=WSP Test CSD
+	Description=Symbian WSP Test Server
+	Type=INTERNETANDWAP
+	DefaultTelNum=02071541211
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wapusr
+	IfAuthPass=train2
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Auth CSD
+	Description=Authentication Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+358331520777
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=mailtst1
+	LoginPass=mailtest1
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=mailtst1
+	IfAuthPass=mailtest1
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	UseEdge=TRUE
+	FIELD_COUNT=22
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=IP6 Dial Test
+	Description=4th Floor Test Lab
+	Type=INTERNETONLY
+	DefaultTelNum=02071541455
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=USIM Test NT RAS
+	Type=INTERNETONLY
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=CityOnlines CSD India
+	Description=CityOnlines Indian Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+9180172388
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=ktl1@blr.cityonlines.com
+	LoginPass=1234
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=ktl1
+	IfAuthPass=1234
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	UseEdge=TRUE
+	FIELD_COUNT=22
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Vodafone WAP GSM
+	Description=Vodafone WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447836900808
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=user@vodafone.net
+	IfAuthPass=user
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=Orange WAP GSM
+	Description=Orange WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447973100500
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Orange
+	IfAuthPass=Multimedia
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=O2 WAP GSM
+	Description=O2 WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447712927927
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=O2wap
+	IfAuthPass=password
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=Test Network CSD
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02071541259
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Systemtest09
+	IfAuthPass=l33ds
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=18
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=IP6 Dial Test
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02077248525
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=mRouterDialOutIsp
+	Description=mRouterDialOutIsp
+	Type=INTERNETONLY
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=IfAuthPass=
+	IfAuthPass=AuthRetries=0
+	AuthRetries=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DialInISP
+## 
+[DialInISP]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dial In ISP01
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Vodafone GPRS
+	APN=internet
+	PDPType=IPV4
+	ReqPrecedence=0
+	ReqDelay=0
+	ReqReliability=0
+	ReqPeakThroughput=0
+	ReqMeanThroughput=0
+	MinPrecedence=0
+	MinDelay=0
+	MinReliability=0
+	MinPeakThroughput=0
+	MinMeanThroughput=0
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=web
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	APN=wap.vodafone.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wap
+	IfAuthPass=wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange GPRS
+	APN=orangeinternet
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange WAP GPRS
+	APN=orangewap
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2 GPRS
+	APN=mobile.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=password
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=O2 WAP GPRS
+	APN=wap.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=o2wap
+	IfAuthPass=o2wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Hutch GPRS
+	APN=portalnmms
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpGateway=10.10.1.100
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=28
+END_ADD
+
+
+############################################################
+## IncomingGPRS
+## 
+[IncomingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Incoming GPRS Settings PlaceHolder
+	APN=Test
+	PDPType=IPV4
+	PDPAddress=0.0.0.0
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	FIELD_COUNT=29
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=150
+	Reliability=1
+	PeakThroughput=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## LANService
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=IP4 DHCP Ethernet
+	IfNetworks=ip
+	IpNetMask=255.255.252.0
+	IpGateway=10.192.203.254
+	IpAddrFromServer=TRUE
+	IpAddr=10.192.200.59
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=10.192.59.6
+	IpNameServer2=10.192.58.49
+	ConfigDaemonManagerName=NetCfgExtnDhcp
+	ConfigDaemonName=!DhcpServ
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=IP6 Ethernet
+	IfNetworks=ip,ip6
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.0.100
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=20000
+	Name=APSelPolNetworkDefault
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	Name=Tier1
+	TierImplUid=271064536
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	Name=Tier2
+	TierImplUid=271064560
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	Name=Tier3
+	TierImplUid=271064565
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536887799
+	Name=Tier4
+	TierImplUid=536887799
+	TierThreadName=ESock_SIP
+	TierManagerName=SIPTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10002
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=sipcpr
+	CprUid=271010872
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=tunnelagentcpr
+	CprUid=271080968
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=qosipscpr
+	SCprUid=270549768
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=panether
+	ProtocolUid=271070627
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=rawip2
+	ProtocolUid=271084280
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## VirtualBearer
+## 
+[VirtualBearer]
+ADD_TEMPLATE
+	Name=Default VPN Bearer
+	IfName=VPN.nif
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	Agent=VPN.agt
+	FIELD_COUNT=6
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN Bearer1
+	IfName=ppp.nif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=ntras.agt
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=VPN Bearer2
+	IfName=tunnelnif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=vpnconnagt.agt
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=NetworkDefaultTemplate
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=spud-rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 193
+	Id=29
+	Name=pppMappedFromIAP29
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 195
+	Id=28
+	Name=pppMappedFromIAP28
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 197
+	Id=27
+	Name=pppMappedFromIAP27
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 199
+	Id=26
+	Name=tunnelnifMappedFromIAP26
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 201
+	Id=25
+	Name=pppMappedFromIAP25
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 203
+	Id=24
+	Name=pppMappedFromIAP24
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 205
+	Id=23
+	Name=pppMappedFromIAP23
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 207
+	Id=22
+	Name=pppMappedFromIAP22
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 209
+	Id=21
+	Name=pppMappedFromIAP21
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 211
+	Id=20
+	Name=pppMappedFromIAP20
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 213
+	Id=19
+	Name=pppMappedFromIAP19
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 215
+	Id=18
+	Name=pppMappedFromIAP18
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 217
+	Id=17
+	Name=pppMappedFromIAP17
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 219
+	Id=16
+	Name=pppMappedFromIAP16
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 221
+	Id=15
+	Name=pppMappedFromIAP15
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 223
+	Id=14
+	Name=pppMappedFromIAP14
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 225
+	Id=13
+	Name=pppMappedFromIAP13
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 227
+	Id=12
+	Name=pppMappedFromIAP12
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 229
+	Id=11
+	Name=pppMappedFromIAP11
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 231
+	Id=10
+	Name=pppMappedFromIAP10
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 233
+	Id=9
+	Name=ethintMappedFromIAP9
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 235
+	Id=8
+	Name=pppMappedFromIAP8
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 237
+	Id=7
+	Name=pppMappedFromIAP7
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 239
+	Id=6
+	Name=pppMappedFromIAP6
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 241
+	Id=5
+	Name=pppMappedFromIAP5
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=4
+	Name=pppMappedFromIAP4
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=3
+	Name=pppMappedFromIAP3
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=2
+	Name=ethintMappedFromIAP2
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=1
+	Name=pppMappedFromIAP1
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 252
+	Id=10002
+	Name=SIPDefault
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.536887799
+	MCpr=MCprTable.11
+	Cpr=CprTable.5
+	SCpr=SCprTable.8
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProto_generated_10001
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=13
+	CustomSelectionPolicy=13
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=1
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	WAPAccessPoint=1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsBearer=12
+	SmsReceiveMode=2
+	GPRSAttachMode=0
+	AcceptIncomingGprs=0
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=12
+	ModemForPhoneServicesAndSMS=12
+	BearerAvailabilityCheckTSY=phonetsy
+	LocationForDataAndFax=2
+	LocationForPhoneServicesAndSMS=5
+	MaxMBufHeap=2
+	DefaultNetwork=1
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Pipex CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet IP4
+	IAPServiceType=LANService
+	IAPService=1
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS Com 0
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NT RAS Com 1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=WSP Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Msg Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Msg Test Auth CSD
+	IAPServiceType=DialOutISP
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=WinTunnel on Epoc Com1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Ethernet IP6
+	IAPServiceType=LANService
+	IAPService=2
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IP6 Dial
+	IAPServiceType=DialOutISP
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=GSMPhone1
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=USIM Test
+	IAPServiceType=DialOutISP
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=6
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=Vodafone GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=Vodafone WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 15
+	Name=Orange GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 16
+	Name=Orange WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 17
+	Name=O2 GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 18
+	Name=O2 WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 19
+	Name=CityOnlines CSD India
+	IAPServiceType=DialOutISP
+	IAPService=8
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 20
+	Name=Hutch GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=6
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 21
+	Name=Vodafone WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=9
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 22
+	Name=Orange WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=10
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 23
+	Name=O2 WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=11
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 24
+	Name=Test Network CSD
+	IAPServiceType=DialOutISP
+	IAPService=12
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 25
+	Name=Test Network CSD IP6
+	IAPServiceType=DialOutISP
+	IAPService=13
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 26
+	Name=Cisco VPN IAP
+	IAPServiceType=VpnService
+	IAPService=3
+	IAPBearerType=VirtualBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 27
+	Name=DUMMY TSY
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=8
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 28
+	Name=mRouter USB
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=10
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 29
+	Name=mRouter Wins
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=9
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=13
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## Proxies
+## 
+[Proxies]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ISP=4
+	ProxyServiceType=DialOutISP
+	UseProxyServer=TRUE
+	ProxyServerName=www.dummyproxy.com
+	ProtocolName=http
+	PortNumber=80
+	Exceptions=www.dummyproxy.com/exception
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPAccessPoint
+## 
+[WAPAccessPoint]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	CurrentBearer=WAPIPBearer
+	FIELD_COUNT=2
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	StartPage=wap:1999/vodafone.wml
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange WAP GPRS
+	StartPage=orange.multimedia
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=O2 WAP GPRS
+	StartPage=wap.o2.co.uk
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## WAPIPBearer
+## 
+[WAPIPBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	GatewayAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	ProxyPortNumber=0
+	ProxyLogin=0
+	ProxyPassword=0
+	FIELD_COUNT=7
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=wap.closedtest.intra
+	IAP=24
+	WSPOption=CONNECTIONORIENTED
+	ProxyPortNumber=1
+	ProxyLogin=1
+	ProxyPassword=1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPSMSBearer
+## 
+[WAPSMSBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	GatewayAddress=0
+	ServiceCentreAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	FIELD_COUNT=5
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=+4412345678901
+	ServiceCentreAddress=+442071234567
+	WSPOption=CONNECTIONORIENTED
+	FIELD_COUNT=5
+END_ADD
+
+
+############################################################
+## SecureSocketTable
+## 
+[SecureSocketTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ProtocolName=ssl3.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	ProtocolName=tls1.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## VpnService
+## 
+[VpnService]
+ADD_TEMPLATE
+	Name=Default VPN
+	Policy=DefaultVPNpolicy
+	HomeIAP=1
+	FIELD_COUNT=3
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN1
+	Policy=VPNpolicy1
+	HomeIAP=2
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=cisco tunnel
+	Policy=cisco_all
+	HomeIAP=8
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/AT-LTSY(wavcom).cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,2756 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Intranet
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=mRouter
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Vodafone
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=TMobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Airtel
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Hutch
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Name=Default Modem
+	IfName=PPP
+	PortName=COMM::9
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=57600
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	IspInitString=*99***1#
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	CommRole=0
+	ControlChannelPortName=COMM::0
+	SIRSettings=0
+	Agent=psd.agt
+	FIELD_COUNT=71
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=GsmPhone1
+	Rate=150
+	Handshaking=4
+	XonChar=17
+	XoffChar=19
+	MessageCentreNumber=+447973100973
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NTRAS (Com0) Null Modem 115200bps
+	Rate=600
+	PortName=COMM::7
+	TSYName=NTRAS
+	Handshaking=4
+	MessageDeliveryReport=TRUE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NTRAS (Com1) Null Modem 115200bps
+	Rate=2400
+	TSYName=NTRAS
+	Handshaking=4
+	MessageDeliveryReport=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=CommModem
+	IfName=PPP
+	PortName=COMM::0
+	Rate=9600
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	ControlChannelPortName=COMM::0
+	Agent=PSD.agt
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=SimulatorPhone
+	Rate=4800
+	PortName=COMM::9
+	TSYName=SIM
+	Handshaking=196
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=GsmPhone3
+	Rate=7200
+	PortName=COMM::9
+	Handshaking=4
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	MessageCentreNumber=+447973100973
+	Agent=PSD.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=GsmPhone4
+	PortName=COMM::9
+	TSYName=DMM
+	Rate=19200
+	Handshaking=196
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=mRouterWinsBearer
+	Rate=38400
+	PortName=WINS::0
+	CSYName=WINSCSY
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	Handshaking=4
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=mRouterUsbBearer
+	Rate=150
+	PortName=ACM::0
+	CSYName=ECACM
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	Handshaking=4
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=trpat_psd
+	Rate=600
+	IfName=rawip
+	PortName=not used
+	TSYName=TRPAT
+	CSYName=CSY27010
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	BCAStack=C32Bca
+	Agent=trp.agt
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=CommModem
+	PortName=COMM::0
+	Rate=9600
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	Agent=csd.agt
+	FIELD_COUNT=11
+END_ADD
+
+# AndyS Modem on PC COM 3 [COMM::2]
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=CommModem
+	PortName=COMM::0
+	TSYName=phonetsy
+	Rate=9600
+	ModemInitString=ATZ
+	Agent=csd.agt
+	FIELD_COUNT=6
+END_ADD
+
+############################################################
+## LANBearer
+## 
+[LANBearer]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Ethernet 001
+	IfName=ethint
+	LDDFilename=enet
+	LDDName=Ethernet
+	PDDFilename=ethernet
+	PDDName=ethernet.wins
+	PacketDriverName=EtherPkt.drv
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet 002
+	IfName=ethint
+	LDDName=EtherCard
+	PDDName=EtherWins
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=44
+	DialOutCode=44
+	DisableCallWaitingCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Office
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=9,
+	DisableCallWaitingCode=9,
+	Mobile=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Office Direct Dial
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=171
+	DisableCallWaitingCode=171
+	Mobile=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Mobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Home
+	IntlPrefixCode=00
+	AreaCode=181
+	DialOutCode=181
+	DisableCallWaitingCode=181
+	Mobile=FALSE
+	UsePulseDial=TRUE
+	WaitForDialTone=TRUE
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Chargecard
+## 
+[Chargecard]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy BT Chargecard
+	AccountNumber=144,12345678
+	Pin=0000
+	LocalRule=HG
+	NatRule=HFG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dummy Mercury Chargecard
+	AccountNumber=0500800800,,12345678
+	Pin=****
+	LocalRule=HG
+	NatRule=J,K,0FG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## DialOutISP
+## 
+[DialOutISP]
+ADD_TEMPLATE
+	Name=Default Dial Out ISP
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=TRUE
+	DisplayPCT=FALSE
+	IfPromptForAuth=TRUE
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=28
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Pipex CSD
+	Description=Pipex Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=08450885336
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=solabf75
+	IfAuthPass=oodifama
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS
+	Description=Test
+	Type=INTERNETONLY
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=19
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=WSP Test CSD
+	Description=Symbian WSP Test Server
+	Type=INTERNETANDWAP
+	DefaultTelNum=02071541211
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wapusr
+	IfAuthPass=train2
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Auth CSD
+	Description=Authentication Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+358331520777
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=mailtst1
+	LoginPass=mailtest1
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=mailtst1
+	IfAuthPass=mailtest1
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	UseEdge=TRUE
+	FIELD_COUNT=22
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=IP6 Dial Test
+	Description=4th Floor Test Lab
+	Type=INTERNETONLY
+	DefaultTelNum=02071541455
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=USIM Test NT RAS
+	Type=INTERNETONLY
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=CityOnlines CSD India
+	Description=CityOnlines Indian Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+9180172388
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=ktl1@blr.cityonlines.com
+	LoginPass=1234
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=ktl1
+	IfAuthPass=1234
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	UseEdge=TRUE
+	FIELD_COUNT=22
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Vodafone WAP GSM
+	Description=Vodafone WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447836900808
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=user@vodafone.net
+	IfAuthPass=user
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=Orange WAP GSM
+	Description=Orange WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447973100500
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Orange
+	IfAuthPass=Multimedia
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=O2 WAP GSM
+	Description=O2 WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447712927927
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=O2wap
+	IfAuthPass=password
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=Test Network CSD
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02071541259
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Systemtest09
+	IfAuthPass=l33ds
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=18
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=IP6 Dial Test
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02077248525
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=mRouterDialOutIsp
+	Description=mRouterDialOutIsp
+	Type=INTERNETONLY
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=IfAuthPass=
+	IfAuthPass=AuthRetries=0
+	AuthRetries=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DialInISP
+## 
+[DialInISP]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dial In ISP01
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Vodafone GPRS
+	APN=internet
+	PDPType=IPV4
+	ReqPrecedence=0
+	ReqDelay=0
+	ReqReliability=0
+	ReqPeakThroughput=0
+	ReqMeanThroughput=0
+	MinPrecedence=0
+	MinDelay=0
+	MinReliability=0
+	MinPeakThroughput=0
+	MinMeanThroughput=0
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=web
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	APN=wap.vodafone.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wap
+	IfAuthPass=wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange GPRS
+	APN=orangeinternet
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange WAP GPRS
+	APN=orangewap
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2 GPRS
+	APN=mobile.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=password
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=O2 WAP GPRS
+	APN=wap.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=o2wap
+	IfAuthPass=o2wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Hutch GPRS
+	APN=portalnmms
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpGateway=10.10.1.100
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=28
+END_ADD
+
+
+############################################################
+## IncomingGPRS
+## 
+[IncomingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Incoming GPRS Settings PlaceHolder
+	APN=Test
+	PDPType=IPV4
+	PDPAddress=0.0.0.0
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	FIELD_COUNT=29
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=150
+	Reliability=1
+	PeakThroughput=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## LANService
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=IP4 DHCP Ethernet
+	IfNetworks=ip
+	IpNetMask=255.255.252.0
+	IpGateway=10.192.203.254
+	IpAddrFromServer=TRUE
+	IpAddr=10.192.200.59
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=10.192.59.6
+	IpNameServer2=10.192.58.49
+	ConfigDaemonManagerName=NetCfgExtnDhcp
+	ConfigDaemonName=!DhcpServ
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=IP6 Ethernet
+	IfNetworks=ip,ip6
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.0.100
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=20000
+	Name=APSelPolNetworkDefault
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	Name=Tier1
+	TierImplUid=271064536
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	Name=Tier2
+	TierImplUid=271064560
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	Name=Tier3
+	TierImplUid=271064565
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536887799
+	Name=Tier4
+	TierImplUid=536887799
+	TierThreadName=ESock_SIP
+	TierManagerName=SIPTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10002
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=sipcpr
+	CprUid=271010872
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=tunnelagentcpr
+	CprUid=271080968
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=qosipscpr
+	SCprUid=270549768
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=panether
+	ProtocolUid=271070627
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=rawip2
+	ProtocolUid=271084280
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## VirtualBearer
+## 
+[VirtualBearer]
+ADD_TEMPLATE
+	Name=Default VPN Bearer
+	IfName=VPN.nif
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	Agent=VPN.agt
+	FIELD_COUNT=6
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN Bearer1
+	IfName=ppp.nif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=ntras.agt
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=VPN Bearer2
+	IfName=tunnelnif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=vpnconnagt.agt
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=NetworkDefaultTemplate
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=spud-rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 193
+	Id=29
+	Name=pppMappedFromIAP29
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 195
+	Id=28
+	Name=pppMappedFromIAP28
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 197
+	Id=27
+	Name=pppMappedFromIAP27
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 199
+	Id=26
+	Name=tunnelnifMappedFromIAP26
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 201
+	Id=25
+	Name=pppMappedFromIAP25
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 203
+	Id=24
+	Name=pppMappedFromIAP24
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 205
+	Id=23
+	Name=pppMappedFromIAP23
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 207
+	Id=22
+	Name=pppMappedFromIAP22
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 209
+	Id=21
+	Name=pppMappedFromIAP21
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 211
+	Id=20
+	Name=pppMappedFromIAP20
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 213
+	Id=19
+	Name=pppMappedFromIAP19
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 215
+	Id=18
+	Name=pppMappedFromIAP18
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 217
+	Id=17
+	Name=pppMappedFromIAP17
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 219
+	Id=16
+	Name=pppMappedFromIAP16
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 221
+	Id=15
+	Name=pppMappedFromIAP15
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 223
+	Id=14
+	Name=pppMappedFromIAP14
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 225
+	Id=13
+	Name=pppMappedFromIAP13
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 227
+	Id=12
+	Name=pppMappedFromIAP12
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 229
+	Id=11
+	Name=pppMappedFromIAP11
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 231
+	Id=10
+	Name=pppMappedFromIAP10
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 233
+	Id=9
+	Name=ethintMappedFromIAP9
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 235
+	Id=8
+	Name=pppMappedFromIAP8
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 237
+	Id=7
+	Name=pppMappedFromIAP7
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 239
+	Id=6
+	Name=pppMappedFromIAP6
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 241
+	Id=5
+	Name=pppMappedFromIAP5
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=4
+	Name=pppMappedFromIAP4
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=3
+	Name=pppMappedFromIAP3
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=2
+	Name=ethintMappedFromIAP2
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=1
+	Name=pppMappedFromIAP1
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 252
+	Id=10002
+	Name=SIPDefault
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.536887799
+	MCpr=MCprTable.11
+	Cpr=CprTable.5
+	SCpr=SCprTable.8
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProto_generated_10001
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=13
+	CustomSelectionPolicy=13
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=1
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	WAPAccessPoint=1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsBearer=12
+	SmsReceiveMode=2
+	GPRSAttachMode=0
+	AcceptIncomingGprs=0
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=12
+	ModemForPhoneServicesAndSMS=12
+	BearerAvailabilityCheckTSY=phonetsy
+	LocationForDataAndFax=2
+	LocationForPhoneServicesAndSMS=5
+	MaxMBufHeap=2
+	DefaultNetwork=1
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Pipex CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet IP4
+	IAPServiceType=LANService
+	IAPService=1
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS Com 0
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NT RAS Com 1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=WSP Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Msg Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Msg Test Auth CSD
+	IAPServiceType=DialOutISP
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=WinTunnel on Epoc Com1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Ethernet IP6
+	IAPServiceType=LANService
+	IAPService=2
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IP6 Dial
+	IAPServiceType=DialOutISP
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=GSMPhone1
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=USIM Test
+	IAPServiceType=DialOutISP
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=6
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=Vodafone GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=Vodafone WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 15
+	Name=Orange GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 16
+	Name=Orange WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 17
+	Name=O2 GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 18
+	Name=O2 WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 19
+	Name=CityOnlines CSD India
+	IAPServiceType=DialOutISP
+	IAPService=8
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 20
+	Name=Hutch GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=6
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 21
+	Name=Vodafone WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=9
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 22
+	Name=Orange WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=10
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 23
+	Name=O2 WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=11
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 24
+	Name=Test Network CSD
+	IAPServiceType=DialOutISP
+	IAPService=12
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 25
+	Name=Test Network CSD IP6
+	IAPServiceType=DialOutISP
+	IAPService=13
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 26
+	Name=Cisco VPN IAP
+	IAPServiceType=VpnService
+	IAPService=3
+	IAPBearerType=VirtualBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 27
+	Name=DUMMY TSY
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=8
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 28
+	Name=mRouter USB
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=10
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 29
+	Name=mRouter Wins
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=9
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=13
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## Proxies
+## 
+[Proxies]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ISP=4
+	ProxyServiceType=DialOutISP
+	UseProxyServer=TRUE
+	ProxyServerName=www.dummyproxy.com
+	ProtocolName=http
+	PortNumber=80
+	Exceptions=www.dummyproxy.com/exception
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPAccessPoint
+## 
+[WAPAccessPoint]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	CurrentBearer=WAPIPBearer
+	FIELD_COUNT=2
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	StartPage=wap:1999/vodafone.wml
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange WAP GPRS
+	StartPage=orange.multimedia
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=O2 WAP GPRS
+	StartPage=wap.o2.co.uk
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## WAPIPBearer
+## 
+[WAPIPBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	GatewayAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	ProxyPortNumber=0
+	ProxyLogin=0
+	ProxyPassword=0
+	FIELD_COUNT=7
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=wap.closedtest.intra
+	IAP=24
+	WSPOption=CONNECTIONORIENTED
+	ProxyPortNumber=1
+	ProxyLogin=1
+	ProxyPassword=1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPSMSBearer
+## 
+[WAPSMSBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	GatewayAddress=0
+	ServiceCentreAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	FIELD_COUNT=5
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=+4412345678901
+	ServiceCentreAddress=+442071234567
+	WSPOption=CONNECTIONORIENTED
+	FIELD_COUNT=5
+END_ADD
+
+
+############################################################
+## SecureSocketTable
+## 
+[SecureSocketTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ProtocolName=ssl3.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	ProtocolName=tls1.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## VpnService
+## 
+[VpnService]
+ADD_TEMPLATE
+	Name=Default VPN
+	Policy=DefaultVPNpolicy
+	HomeIAP=1
+	FIELD_COUNT=3
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN1
+	Policy=VPNpolicy1
+	HomeIAP=2
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=cisco tunnel
+	Policy=cisco_all
+	HomeIAP=8
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/AT-LTSY.cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,2756 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Intranet
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=mRouter
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Vodafone
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=TMobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Airtel
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Hutch
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Name=Default Modem
+	IfName=PPP
+	PortName=COMM::9
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=57600
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	IspInitString=*99***1#
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	CommRole=0
+	ControlChannelPortName=COMM::0
+	SIRSettings=0
+	Agent=psd.agt
+	FIELD_COUNT=71
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=GsmPhone1
+	Rate=150
+	Handshaking=4
+	XonChar=17
+	XoffChar=19
+	MessageCentreNumber=+447973100973
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NTRAS (Com0) Null Modem 115200bps
+	Rate=600
+	PortName=COMM::7
+	TSYName=NTRAS
+	Handshaking=4
+	MessageDeliveryReport=TRUE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NTRAS (Com1) Null Modem 115200bps
+	Rate=2400
+	TSYName=NTRAS
+	Handshaking=4
+	MessageDeliveryReport=TRUE
+	FIELD_COUNT=5
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=CommModem
+	IfName=PPP
+	PortName=COMM::89798
+	Rate=7654765
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	ControlChannelPortName=COMM::0
+	Agent=PSD.agt
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=SimulatorPhone
+	Rate=4800
+	PortName=COMM::9
+	TSYName=SIM
+	Handshaking=196
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=GsmPhone3
+	Rate=7200
+	PortName=COMM::9
+	Handshaking=4
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	MessageCentreNumber=+447973100973
+	Agent=PSD.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=GsmPhone4
+	PortName=COMM::9
+	TSYName=DMM
+	Rate=19200
+	Handshaking=196
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=mRouterWinsBearer
+	Rate=38400
+	PortName=WINS::0
+	CSYName=WINSCSY
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	Handshaking=4
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=mRouterUsbBearer
+	Rate=150
+	PortName=ACM::0
+	CSYName=ECACM
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	Handshaking=4
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=trpat_psd
+	Rate=600
+	IfName=rawip
+	PortName=not used
+	TSYName=TRPAT
+	CSYName=CSY27010
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	BCAStack=C32Bca
+	Agent=trp.agt
+	FIELD_COUNT=13
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=CommModem
+	PortName=COMM::89798
+	Rate=7654765
+	TSYName=phonetsy
+	CSYName=ECUART
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	Handshaking=4
+	MessageCentreNumber=+447785016005
+	Agent=csd.agt
+	FIELD_COUNT=11
+END_ADD
+
+# AndyS Modem on PC COM 3 [COMM::2]
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=CommModem
+	PortName=COMM::89798
+	TSYName=phonetsy
+	Rate=7654765
+	ModemInitString=ATZ
+	Agent=csd.agt
+	FIELD_COUNT=6
+END_ADD
+
+############################################################
+## LANBearer
+## 
+[LANBearer]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Ethernet 001
+	IfName=ethint
+	LDDFilename=enet
+	LDDName=Ethernet
+	PDDFilename=ethernet
+	PDDName=ethernet.wins
+	PacketDriverName=EtherPkt.drv
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet 002
+	IfName=ethint
+	LDDName=EtherCard
+	PDDName=EtherWins
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=44
+	DialOutCode=44
+	DisableCallWaitingCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Office
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=9,
+	DisableCallWaitingCode=9,
+	Mobile=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Office Direct Dial
+	IntlPrefixCode=00
+	AreaCode=171
+	DialOutCode=171
+	DisableCallWaitingCode=171
+	Mobile=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Mobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Home
+	IntlPrefixCode=00
+	AreaCode=181
+	DialOutCode=181
+	DisableCallWaitingCode=181
+	Mobile=FALSE
+	UsePulseDial=TRUE
+	WaitForDialTone=TRUE
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Chargecard
+## 
+[Chargecard]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy BT Chargecard
+	AccountNumber=144,12345678
+	Pin=0000
+	LocalRule=HG
+	NatRule=HFG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dummy Mercury Chargecard
+	AccountNumber=0500800800,,12345678
+	Pin=****
+	LocalRule=HG
+	NatRule=J,K,0FG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## DialOutISP
+## 
+[DialOutISP]
+ADD_TEMPLATE
+	Name=Default Dial Out ISP
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=TRUE
+	DisplayPCT=FALSE
+	IfPromptForAuth=TRUE
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=28
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Pipex CSD
+	Description=Pipex Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=08450885336
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=solabf75
+	IfAuthPass=oodifama
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS
+	Description=Test
+	Type=INTERNETONLY
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=19
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=WSP Test CSD
+	Description=Symbian WSP Test Server
+	Type=INTERNETANDWAP
+	DefaultTelNum=02071541211
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wapusr
+	IfAuthPass=train2
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Auth CSD
+	Description=Authentication Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+358331520777
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=mailtst1
+	LoginPass=mailtest1
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=mailtst1
+	IfAuthPass=mailtest1
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	UseEdge=TRUE
+	FIELD_COUNT=22
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=IP6 Dial Test
+	Description=4th Floor Test Lab
+	Type=INTERNETONLY
+	DefaultTelNum=02071541455
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=USIM Test NT RAS
+	Type=INTERNETONLY
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=CityOnlines CSD India
+	Description=CityOnlines Indian Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+9180172388
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=ktl1@blr.cityonlines.com
+	LoginPass=1234
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=ktl1
+	IfAuthPass=1234
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	UseEdge=TRUE
+	FIELD_COUNT=22
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Vodafone WAP GSM
+	Description=Vodafone WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447836900808
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=user@vodafone.net
+	IfAuthPass=user
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=Orange WAP GSM
+	Description=Orange WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447973100500
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Orange
+	IfAuthPass=Multimedia
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=O2 WAP GSM
+	Description=O2 WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447712927927
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=O2wap
+	IfAuthPass=password
+	AuthRetries=0
+	BearerProtocol=V110
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=Test Network CSD
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02071541259
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Systemtest09
+	IfAuthPass=l33ds
+	AuthRetries=0
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=18
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=IP6 Dial Test
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02077248525
+	PromptForLogin=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	FIELD_COUNT=21
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=mRouterDialOutIsp
+	Description=mRouterDialOutIsp
+	Type=INTERNETONLY
+	PromptForLogin=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=IfAuthPass=
+	IfAuthPass=AuthRetries=0
+	AuthRetries=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## DialInISP
+## 
+[DialInISP]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dial In ISP01
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Vodafone GPRS
+	APN=internet
+	PDPType=IPV4
+	ReqPrecedence=0
+	ReqDelay=0
+	ReqReliability=0
+	ReqPeakThroughput=0
+	ReqMeanThroughput=0
+	MinPrecedence=0
+	MinDelay=0
+	MinReliability=0
+	MinPeakThroughput=0
+	MinMeanThroughput=0
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=web
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	APN=wap.vodafone.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wap
+	IfAuthPass=wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange GPRS
+	APN=orangeinternet
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange WAP GPRS
+	APN=orangewap
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2 GPRS
+	APN=mobile.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=password
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=O2 WAP GPRS
+	APN=wap.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=o2wap
+	IfAuthPass=o2wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Hutch GPRS
+	APN=portalnmms
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpGateway=10.10.1.100
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=28
+END_ADD
+
+
+############################################################
+## IncomingGPRS
+## 
+[IncomingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Incoming GPRS Settings PlaceHolder
+	APN=Test
+	PDPType=IPV4
+	PDPAddress=0.0.0.0
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	FIELD_COUNT=29
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=150
+	Reliability=1
+	PeakThroughput=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## LANService
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=IP4 DHCP Ethernet
+	IfNetworks=ip
+	IpNetMask=255.255.252.0
+	IpGateway=10.192.203.254
+	IpAddrFromServer=TRUE
+	IpAddr=10.192.200.59
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=10.192.59.6
+	IpNameServer2=10.192.58.49
+	ConfigDaemonManagerName=NetCfgExtnDhcp
+	ConfigDaemonName=!DhcpServ
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=IP6 Ethernet
+	IfNetworks=ip,ip6
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.0.100
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=20000
+	Name=APSelPolNetworkDefault
+	AP1=Link.AccessPointTable.10001
+	APCOUNT=1
+	FIELD_COUNT=4
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+	Name=Tier1
+	TierImplUid=271064536
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+	Name=Tier2
+	TierImplUid=271064560
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10001
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=271064565
+	Name=Tier3
+	TierImplUid=271064565
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10000
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536887799
+	Name=Tier4
+	TierImplUid=536887799
+	TierThreadName=ESock_SIP
+	TierManagerName=SIPTierManager
+	DefaultAccessPoint=Link.AccessPointTable.10002
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=sipmcpr
+	MCprUid=536887801
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=panethermcpr
+	MCprUid=271070626
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=sipcpr
+	CprUid=271010872
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=tunnelagentcpr
+	CprUid=271080968
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=qosipscpr
+	SCprUid=270549768
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=sipscpr
+	SCprUid=271010839
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=ethernet
+	ProtocolUid=271064539
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=rawip
+	ProtocolUid=271064562
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=tunnel
+	ProtocolUid=271064567
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=qosppp
+	ProtocolUid=271064148
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=dummynif
+	ProtocolUid=271064123
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=hungrynif
+	ProtocolUid=271064125
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=panether
+	ProtocolUid=271070627
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=rawip2
+	ProtocolUid=271084280
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## VirtualBearer
+## 
+[VirtualBearer]
+ADD_TEMPLATE
+	Name=Default VPN Bearer
+	IfName=VPN.nif
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	Agent=VPN.agt
+	FIELD_COUNT=6
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN Bearer1
+	IfName=ppp.nif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=ntras.agt
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=VPN Bearer2
+	IfName=tunnelnif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=vpnconnagt.agt
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## BearerTypeTable
+## 
+[BearerTypeTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=ethint
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.5
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=tunnelnif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=qosppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.7
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.7
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=dummynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.8
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.8
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=hungrynif
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.9
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.9
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=spud-ppp
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.3
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=spud-rawip
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.3
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.5
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IPProtoDefaultTemplate
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=NetworkDefaultTemplate
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=spud-rawip2
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.10
+	Cpr=CprTable.8
+	SCpr=SCprTable.4
+	Protocol=ProtocolTable.11
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 193
+	Id=29
+	Name=pppMappedFromIAP29
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 195
+	Id=28
+	Name=pppMappedFromIAP28
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 197
+	Id=27
+	Name=pppMappedFromIAP27
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 199
+	Id=26
+	Name=tunnelnifMappedFromIAP26
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.6
+	Cpr=CprTable.7
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.6
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 201
+	Id=25
+	Name=pppMappedFromIAP25
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 203
+	Id=24
+	Name=pppMappedFromIAP24
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 205
+	Id=23
+	Name=pppMappedFromIAP23
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 207
+	Id=22
+	Name=pppMappedFromIAP22
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 209
+	Id=21
+	Name=pppMappedFromIAP21
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 211
+	Id=20
+	Name=pppMappedFromIAP20
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 213
+	Id=19
+	Name=pppMappedFromIAP19
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 215
+	Id=18
+	Name=pppMappedFromIAP18
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 217
+	Id=17
+	Name=pppMappedFromIAP17
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 219
+	Id=16
+	Name=pppMappedFromIAP16
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 221
+	Id=15
+	Name=pppMappedFromIAP15
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 223
+	Id=14
+	Name=pppMappedFromIAP14
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 225
+	Id=13
+	Name=pppMappedFromIAP13
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 227
+	Id=12
+	Name=pppMappedFromIAP12
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 229
+	Id=11
+	Name=pppMappedFromIAP11
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 231
+	Id=10
+	Name=pppMappedFromIAP10
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 233
+	Id=9
+	Name=ethintMappedFromIAP9
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 235
+	Id=8
+	Name=pppMappedFromIAP8
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 237
+	Id=7
+	Name=pppMappedFromIAP7
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 239
+	Id=6
+	Name=pppMappedFromIAP6
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 241
+	Id=5
+	Name=pppMappedFromIAP5
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 243
+	Id=4
+	Name=pppMappedFromIAP4
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 245
+	Id=3
+	Name=pppMappedFromIAP3
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 247
+	Id=2
+	Name=ethintMappedFromIAP2
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.4
+	Cpr=CprTable.3
+	SCpr=SCprTable.3
+	Protocol=ProtocolTable.4
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 249
+	Id=1
+	Name=pppMappedFromIAP1
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064565
+	MCpr=MCprTable.3
+	Cpr=CprTable.3
+	SCpr=SCprTable.5
+	Protocol=ProtocolTable.3
+	CprConfig=0
+	AppSID=0
+	Priority=4294967295
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 252
+	Id=10002
+	Name=SIPDefault
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.536887799
+	MCpr=MCprTable.11
+	Cpr=CprTable.5
+	SCpr=SCprTable.8
+	Protocol=ProtocolTable.2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 253
+	Id=10001
+	Name=IPProto_generated_10001
+	AccessPointSelectionPolicy=0
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	Cpr=CprTable.2
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	CprConfig=13
+	CustomSelectionPolicy=13
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 254
+	Id=10000
+	Name=NetworkDefault
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_TEMPLATE
+	DefaultTier=1
+	FIELD_COUNT=1
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	WAPAccessPoint=1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsBearer=12
+	SmsReceiveMode=2
+	GPRSAttachMode=0
+	AcceptIncomingGprs=0
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=12
+	ModemForPhoneServicesAndSMS=12
+	BearerAvailabilityCheckTSY=phonetsy
+	LocationForDataAndFax=2
+	LocationForPhoneServicesAndSMS=5
+	MaxMBufHeap=2
+	DefaultNetwork=1
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Pipex CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet IP4
+	IAPServiceType=LANService
+	IAPService=1
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS Com 0
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NT RAS Com 1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=WSP Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Msg Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Msg Test Auth CSD
+	IAPServiceType=DialOutISP
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=WinTunnel on Epoc Com1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Ethernet IP6
+	IAPServiceType=LANService
+	IAPService=2
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IP6 Dial
+	IAPServiceType=DialOutISP
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=GSMPhone1
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=USIM Test
+	IAPServiceType=DialOutISP
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=6
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=Vodafone GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=Vodafone WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 15
+	Name=Orange GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 16
+	Name=Orange WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 17
+	Name=O2 GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 18
+	Name=O2 WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 19
+	Name=CityOnlines CSD India
+	IAPServiceType=DialOutISP
+	IAPService=8
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 20
+	Name=Hutch GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=6
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 21
+	Name=Vodafone WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=9
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 22
+	Name=Orange WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=10
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 23
+	Name=O2 WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=11
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 24
+	Name=Test Network CSD
+	IAPServiceType=DialOutISP
+	IAPService=12
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 25
+	Name=Test Network CSD IP6
+	IAPServiceType=DialOutISP
+	IAPService=13
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 26
+	Name=Cisco VPN IAP
+	IAPServiceType=VpnService
+	IAPService=3
+	IAPBearerType=VirtualBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 27
+	Name=DUMMY TSY
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=8
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 28
+	Name=mRouter USB
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=10
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 29
+	Name=mRouter Wins
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=9
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=13
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## Proxies
+## 
+[Proxies]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ISP=4
+	ProxyServiceType=DialOutISP
+	UseProxyServer=TRUE
+	ProxyServerName=www.dummyproxy.com
+	ProtocolName=http
+	PortNumber=80
+	Exceptions=www.dummyproxy.com/exception
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPAccessPoint
+## 
+[WAPAccessPoint]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	CurrentBearer=WAPIPBearer
+	FIELD_COUNT=2
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	StartPage=wap:1999/vodafone.wml
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange WAP GPRS
+	StartPage=orange.multimedia
+	FIELD_COUNT=2
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=O2 WAP GPRS
+	StartPage=wap.o2.co.uk
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## WAPIPBearer
+## 
+[WAPIPBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	GatewayAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	ProxyPortNumber=0
+	ProxyLogin=0
+	ProxyPassword=0
+	FIELD_COUNT=7
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=wap.closedtest.intra
+	IAP=24
+	WSPOption=CONNECTIONORIENTED
+	ProxyPortNumber=1
+	ProxyLogin=1
+	ProxyPassword=1
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPSMSBearer
+## 
+[WAPSMSBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	GatewayAddress=0
+	ServiceCentreAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	FIELD_COUNT=5
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=+4412345678901
+	ServiceCentreAddress=+442071234567
+	WSPOption=CONNECTIONORIENTED
+	FIELD_COUNT=5
+END_ADD
+
+
+############################################################
+## SecureSocketTable
+## 
+[SecureSocketTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ProtocolName=ssl3.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	ProtocolName=tls1.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## VpnService
+## 
+[VpnService]
+ADD_TEMPLATE
+	Name=Default VPN
+	Policy=DefaultVPNpolicy
+	HomeIAP=1
+	FIELD_COUNT=3
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN1
+	Policy=VPNpolicy1
+	HomeIAP=2
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=cisco tunnel
+	Policy=cisco_all
+	HomeIAP=8
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/configatmodem.bat	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,41 @@
+@echo off
+REM Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
+REM All rights reserved.
+REM This component and the accompanying materials are made available
+REM under the terms of Eclipse Public License v1.0
+REM which accompanies this distribution, and is available
+REM at the URL http://www.eclipse.org/legal/epl-v10.html.
+REM
+REM Initial Contributors:
+REM Symbian Foundation - initial contribution.
+REM
+REM Contributors:
+REM
+REM Description:
+REM
+
+echo Backup hctl_base.dll:
+move /-Y \epoc32\release\winscw\udeb\hctl_base.dll \epoc32\release\winscw\udeb\hctl_base.bak
+
+echo Copying UREL version of hctl_base.dll:
+copy /Y \epoc32\release\winscw\urel\hctl_base.dll \epoc32\release\winscw\udeb\hctl_base.dll
+
+echo Backup phonetsy.tsy:
+move /-Y \epoc32\release\winscw\udeb\phonetsy.tsy \epoc32\release\winscw\udeb\phonetsy.bak
+
+echo Copying phonetsywithdispatcher.tsy to phonetsy:
+copy /Y \epoc32\release\winscw\udeb\phonetsywithdispatcher.tsy \epoc32\release\winscw\udeb\phonetsy.tsy
+
+echo Setup the feature manager to include GSM and WCDMA features:
+@perl -S -I/epoc32/tools/featmgr ./modifyfeaturedb.pl
+
+echo Setup the Converged Call Engine plugin to use CS rather than VCC:
+@perl -S ./modifycenrep.pl
+
+echo Setup CommDB:
+REM copy /Y \sf\os\cellularsrv\telephonyserverplugins\attestltsy\config\AT-LTSY(default).cfg \epoc32\winscw\c\AT-LTSY(default).cfg
+cd \sf\os\cellularsrv\telephonyserverplugins\attestltsy\config
+@perl -S ./modifycommdb.pl
+\epoc32\release\winscw\udeb\ced.exe -Dtextshell -- c:\AT-LTSY.cfg
+
+REM M:\sf\os\devicesrv\sysstatemgmt\group>sbs -b bld.inf -c winscw_udeb RESOURCE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/modifycenrep.pl	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,48 @@
+#!perl -w
+# Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Symbian Foundation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# This script modifies the CCE plugin cenrep file to use the CS plugin rather than the VCC one.
+# 
+#
+
+use strict;
+
+# Open the cenrep files
+my $cenrep = "/epoc32/release/winscw/UDEB/z/private/10202be9/10282E7F.txt";
+my $newcenrep = "/epoc32/release/winscw/UDEB/z/private/10202be9/10282E7F.tmp";
+my $cenrepbak = "/epoc32/release/winscw/UDEB/z/private/10202be9/10282E7F.bak";
+my $file2string;
+
+# Open the file in UNICODE-16 and read the whole contents into a string
+open(my $CENREPREAD, "<:raw:encoding(UTF-16LE):crlf:utf8", $cenrep) or die "Couldn't open current cenrep file";
+{
+$/ =undef;
+$file2string = <$CENREPREAD>;
+}
+close($CENREPREAD);
+
+# Modify the crucial line to the new UID for CS calls rather than VCC
+$file2string =~ s/0x9001 string \"536924074\"/0x9001 string \"271067365\"/g;
+
+# Write out the contents into a new UNICODE-16 encoded file
+open(my $CENREPOUT, ">:raw:encoding(UTF-16LE):crlf:utf8", $newcenrep) or die "Couldn't open new cenrep file for output";
+print $CENREPOUT $file2string;
+close($CENREPOUT);
+
+
+# Now backup the old and copy the new files
+rename($cenrep, $cenrepbak) or die "Couldn't backup feature data file '$cenrep'\n" unless (-e $cenrepbak); # OK for this to fail as it probably just means there's already a backup
+rename($newcenrep, $cenrep) or die "Couldn't copy feature data file '$newcenrep'\n";
+
+print "\tCCE CenRep Setup\n";
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/modifycommdb.pl	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,105 @@
+#!perl -w
+# Copyright (c) 2010 Symbian Foundation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Symbian Foundation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# This modifies CommDB for the AT LTSY modem, asking the user for the comm port and baud rate to use.
+# 
+#
+
+use strict;
+
+
+# Ask for the COM port and Baud
+my $com;
+my $baud;
+print "What COMM port is the modem on?\n(Note: Symbian COMM ports are 1 less than windows)\n\tCOMM::";
+chomp ($com = <>);
+
+print "What is the baud rate of the modem?\n(Wavecomm default is 9600, Telit default is 152000)\n\tBaud=";
+chomp ($baud = <>);
+
+#print "\nComm::$com Baud=$baud\n";
+
+# Open the config files
+my $defaultcomdb = "<./AT-LTSY(default).cfg";
+my $commdb = ">/epoc32/winscw/c/AT-LTSY.cfg";
+
+open(COMMDBOUT, $commdb);
+open(COMMDBREAD, $defaultcomdb);
+
+# Read in the default commdb and write it out to the new file, changing the com port and baud where necessary
+my $modembearertable = 0;
+my $modementry = 0;
+
+while(<COMMDBREAD>)
+{
+my($line)=$_;
+
+# first wait till we've found the $modembearertable line.
+if ($line =~ m/^\[ModemBearer\]/) 
+	{
+	#print "Found the modem bearer table\n";
+	$modembearertable = 1;
+	}
+# Or if we've got the end of the table unset the boolean
+elsif ($modembearertable && $line =~ m/^\[/) 
+	{
+	#print "Found the end fo the modem bearer table\n";
+	$modembearertable = 0;	
+	}
+
+# If we're in the modem table then check for a few things
+if ($modembearertable)
+	{
+	# Now wait till we've got to an entry for our modem
+	if ($line =~ m/^\sName=CommModem/) 
+		{
+		#print "Found the modem entry\n";
+		$modementry = 1;
+		}
+
+	# Or if we've reached the end of the modem entry unset the boolean
+	if ($modementry && $line =~ m/^END_ADD/) 
+		{
+		#print "Found the end of the modem entry\n";
+		$modementry = 0;
+		}
+	}
+
+# If we're in the entry for our modem then potentially modify the line
+if ($modementry)
+	{
+	# If it's the comm port number set that up
+	if ($line =~ m/^\sPortName=COMM::/) 
+		{
+		print "\tSetting the COMM port\n";
+		$line = "\tPortName=COMM::$com\n"
+		}
+	
+	# If it's the rate then set that up
+	if ($line =~ m/^\sRate=/) 
+		{
+		print "\tSetting the Baud rate\n";
+		$line = "\tRate=$baud\n"
+		}
+	}
+
+# Write out the (modified) line to the new commdb
+print COMMDBOUT $line;
+}
+
+# Close the files
+close(COMMDBOUT);
+close(COMMDBREAD);
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/config/modifyfeaturedb.pl	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,95 @@
+#!perl -w
+# Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description:
+# This simple script shows how to modify the content of a feature manager
+# data file.
+# 
+#
+
+use strict;
+use FMCreate;
+
+#
+# Hardwire the datafile - this is only an example.
+# 
+my $datfile = "/epoc32/release/winscw/udeb/z/private/10205054/features.dat";
+my $datfile2 = "/epoc32/release/winscw/udeb/z/private/10205054/features2.dat";
+my $datfileback = "/epoc32/release/winscw/udeb/z/private/10205054/features.bak";
+
+#
+# Create an object that represents a feature data file.
+#
+my $fmc = FMCreate->new();
+
+#
+# Load the content of the data file into our FMCreate object.
+# Note that this will die if the content does not seem to be a feature set
+# file. This can happen if the first four bytes aren't 'feat' or if reading
+# the file fails at any point. This will also happen if the file is the wrong
+# size.
+#
+$fmc->LoadUp($datfile) or die "Failed to load up data from '$datfile'\n";
+
+# Setup an array of all the features we need to switch on.
+my $ffuid;
+my $ff;
+my @tomtab;
+
+$tomtab[0] = 81; 	# KFeatureIdProtocolGsm
+$tomtab[1] = 82; 	# KFeatureIdProtocolWcdma
+$tomtab[1] = 1696;	# KFeatureIdOnScreenDialer
+
+foreach $ffuid (@tomtab)
+#for ($ffuid = 1696; $ffuid <= 1696; $ffuid++)
+{
+	$ff = $fmc->GetFeatureFlagByUID($ffuid);
+	if(ref($ff) ne "FeatureFlag")
+	{
+		printf ("Feature flag uid 0x%0x was not already in $datfile, creating it.\n", $ffuid);
+		#
+		# Now add a new feature. The three arguments are UID, status flags (not defined
+		# here) and user data word.
+		#
+		$ff = FeatureFlag->new($ffuid, undef, 0x00000000);
+		die "Couldn't create new feature flag object.\n" unless(ref($ff));
+			
+		#
+		# Add it to our existing feature data.
+		#
+		$fmc->AddFeatureFlag($ff) or die "Couldn't add new feature flag..\n";
+
+		printf ("Feature flag uid 0x%0x created ok.\n", $ffuid);
+	} 
+
+	$ff->Supported(1);
+	$ff->Upgradable(0);
+	$ff->Modifiable(0);
+	$ff->BlackListed(0);
+	$ff->Uninitialized(0);
+	$ff->Persisted(0);
+}
+#
+# Now write out the file to a new location
+#
+$fmc->WriteToFile($datfile2) or die "Couldn't write feature data file '$datfile2'\n";
+
+rename($datfile, $datfileback) or die "Couldn't backup feature data file '$datfile'\n";
+rename($datfile2, $datfile) or die "Couldn't copy feature data file '$datfile2'\n";
+
+printf ("\tFeature Database setup\n");
+#
+# Example code to remove a feature flag.
+#
+#$fmc->RemoveFeatureFlagByUID($ffuid) or die "Couldn't remove feature flag\n";
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/data/snap.cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,721 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.1
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Intranet
+	FIELD_COUNT=2
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Modem
+	TSYName=phonetsywithdispatcher
+	CSYName=ECUART
+	LastSocketActivityTimeout=180
+	LastSessionClosedTimeout=6
+	LastSocketClosedTimeout=100
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageValidityPeriod=0
+	MessageDeliveryReport=FALSE
+	CommRole=0
+	Agent=NULLAGT
+	BCAStack=C32Bca
+	FIELD_COUNT=66
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Wavecom Modem
+	IfName=PPP
+	PortName=COMM::0
+	CSYName=ECUART
+	FIELD_COUNT=5
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=DefaultRecordName-1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=1
+	ModemForPhoneServicesAndSMS=1
+	LocationForDataAndFax=3
+	LocationForPhoneServicesAndSMS=3
+	MaxMBufHeap=3
+	DefaultNetwork=1
+	DefaultTier=2048
+	BearerAvailabilityCheckTSY=phonetsywithdispatcher
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_TEMPLATE
+	Id=0
+	Name=Default Outgoing GPRS
+	APN=cmnet
+	PDPType=IPV4
+	ReqPrecedence=2
+	ReqDelay=4
+	ReqReliability=3
+	ReqPeakThroughput=3
+	ReqMeanThroughput=31
+	MinPrecedence=2
+	MinDelay=4
+	MinReliability=3
+	MinPeakThroughput=3
+	MinMeanThroughput=31
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	UmtsR99QoSAndOn=1
+	FIELD_COUNT=30
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=SPUD_Echo_1
+	PDPType=IPV4
+	IfParams=lowernif=PPP
+	IfPromptForAuth=FALSE
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=cmnet
+	PDPType=IPV4
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=1
+	Reliability=1
+	PeakThroughput=1
+	MeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=TRUE
+	HeaderCompression=TRUE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=20
+END_ADD
+
+############################################################
+## APPrioritySelectionPolicyTable
+## 
+[APPrioritySelectionPolicyTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=SelectionPolicy1
+	AP1=Link.AccessPointTable.2
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## AccessPointTable
+## 
+[AccessPointTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=Network1
+	Tier=Link.TierTable.2048
+	MCpr=MCprTable.1
+	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
+	Cpr=CprTable.1
+	SCpr=SCprTable.7
+	Protocol=ProtocolTable.1
+	Priority=1
+	FIELD_COUNT=9
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=IPProto1
+	Tier=Link.TierTable.271064560
+	MCpr=MCprTable.2
+	CustomSelectionPolicy=3
+	Cpr=CprTable.2
+	CprConfig=3
+	SCpr=SCprTable.2
+	Protocol=ProtocolTable.2
+	Priority=1
+	FIELD_COUNT=10
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppMappedFromIAP3
+	Tier=Link.TierTable.536978267
+	MCpr=MCprTable.10  #pdpmcpr
+	Cpr=CprTable.4  #vallinacpr
+	SCpr=SCprTable.4  #pdpscpr
+	Protocol=ProtocolTable.3   #ppp
+	Priority=1
+	FIELD_COUNT=8
+END_ADD
+
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=Wavecom_GRPS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 110
+	Id=110
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=3
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## TierTable
+## 
+[TierTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=2048
+    TierImplUid=271064536
+	Name=Tier1
+	TierThreadName=ESock_IP
+	TierManagerName=NetworkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.1
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=271064560
+    TierImplUid=271064560
+	Name=Tier2
+	TierThreadName=ESock_IP
+	TierManagerName=ProtoTierManager
+	DefaultAccessPoint=Link.AccessPointTable.2
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=536978267
+    TierImplUid=536978267
+	Name=Tier4
+	TierThreadName=ESock_IP
+	TierManagerName=LinkTierManager
+	DefaultAccessPoint=Link.AccessPointTable.3
+	PromptUser=0
+	FIELD_COUNT=7
+END_ADD
+
+
+############################################################
+## MCprTable
+## 
+[MCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=netmcpr
+	MCprUid=271009095
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotomcpr
+	MCprUid=271064558
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=pppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=ethmcpr
+	MCprUid=271064572
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=rawipmcpr
+	MCprUid=271064576
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=tunnelmcpr
+	MCprUid=271064578
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qospppmcpr
+	MCprUid=271064556
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=dummynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Id=9
+	Name=hungrynifmcpr
+	MCprUid=271064580
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Id=10
+	Name=pdpmcpr
+	MCprUid=271065840
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## CprTable
+## 
+[CprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipcpr
+	CprUid=270561519
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotocpr
+	CprUid=271064531
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentcpr
+	CprUid=271064552
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=vanillacpr
+	CprUid=271065843
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pdpcpr
+	CprUid=271065826
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## SCprTable
+## 
+[SCprTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=ipscpr
+	SCprUid=270549768
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipprotoscpr
+	SCprUid=271064529
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=agentscpr
+	SCprUid=271064554
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Id=4
+	Name=pdpscpr
+	SCprUid=271065824
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Id=5
+	Name=pppscpr
+	SCprUid=271065852
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Id=6
+	Name=vanillascpr
+	SCprUid=271065844
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Id=7
+	Name=qosscpr
+	SCprUid=271065811
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Id=8
+	Name=ipqosprotoscpr
+	SCprUid=271065816
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## ProtocolTable
+## 
+[ProtocolTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Id=1
+	Name=sapshim
+	ProtocolUid=270496898
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Id=2
+	Name=ipshim4
+	ProtocolUid=271064118
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Id=3
+	Name=ppp
+	ProtocolUid=271064143
+	FIELD_COUNT=3
+END_ADD
+
+
+[UmtsR99QoSAndOn]
+ADD_SECTION
+# COMMDB_ID = 1
+  	Name=PRIMARY1
+        ReqTrafficClass=8
+        MinTrafficClass=8
+        ReqDeliveryOrder=1
+        MinDeliveryOrder=1
+        ReqDeliverErroneousSDU=8
+        MinDeliverErroneousSDU=8
+        ReqMaxSDUSize=0
+        MinAcceptableMaxSDUSize=0
+        ReqMaxUplinkRate=0
+        ReqMinUplinkRate=0
+        ReqMaxDownlinkRate=0
+        ReqMinDownlinkRate=0
+        ReqBER=1
+        MaxBER=1
+        ReqSDUErrorRatio=1
+        MaxSDUErrorRatio=1
+        ReqTrafficHandlingPriority=8
+        MinTrafficHandlingPriority=8
+        ReqTransferDelay=0
+        MaxTransferDelay=0
+        ReqGuaranteedUplinkRate=0
+        MinGuaranteedUplinkRat=0
+        ReqGuaranteedDownlinkRate=0
+        MinGuaranteedDownlinkRate=0
+        SignallingIndication=FALSE
+        IMCNSignallingIndication=FALSE
+        SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+  	Name=SECONDARY1
+        ReqTrafficClass=4
+        MinTrafficClass=4
+        ReqDeliveryOrder=1
+        MinDeliveryOrder=1
+        ReqDeliverErroneousSDU=8
+        MinDeliverErroneousSDU=8
+        ReqMaxSDUSize=768
+        MinAcceptableMaxSDUSize=512
+        ReqMaxUplinkRate=1024
+        ReqMinUplinkRate=1024
+        ReqMaxDownlinkRate=1024
+        ReqMinDownlinkRate=1024
+        ReqBER=0
+        MaxBER=0
+        ReqSDUErrorRatio=1
+        MaxSDUErrorRatio=1
+        ReqTrafficHandlingPriority=1
+        MinTrafficHandlingPriority=1
+        ReqTransferDelay=250
+        MaxTransferDelay=250
+        ReqGuaranteedUplinkRate=1024
+        MinGuaranteedUplinkRat=1024
+        ReqGuaranteedDownlinkRate=1024
+        MinGuaranteedDownlinkRate=1024
+        SignallingIndication=FALSE
+        IMCNSignallingIndication=FALSE
+        SourceStatisticsDescriptor=0
+	FIELD_COUNT=28
+END_ADD
+
+[PolicySelectorTable]
+ADD_SECTION
+# COMMDB_ID = 1
+  PolicyId=1
+  AppUid=0
+  SrcAddress=0.0.0.0
+  SrcMask=255.255.255.255
+  DstAddress=0.0.0.0
+  DstMask=255.255.255.255
+  SrcPort=0
+  SrcPortMax=1031
+  DstPort=3461
+  DstPortMax=3461
+  ProtocolId=17
+  IapId=2
+  Priority=1
+  FIELD_COUNT=13
+END_ADD  
+
+ADD_SECTION
+# COMMDB_ID = 2
+  PolicyId=2
+  AppUid=0
+  SrcPort=0
+  SrcPortMax=0
+  ProtocolId=1
+  IapId=2
+  Priority=1
+  FIELD_COUNT=7
+END_ADD  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/data/systemtest.cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,2400 @@
+############################################################
+## AUTO-GENERATED CONFIGURATION FILE
+## CommsDat Database Dump Utility
+## 1.0
+############################################################
+
+############################################################
+## Network
+## 
+[Network]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Intranet
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=mRouter
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Vodafone
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=TMobile
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Airtel
+	FIELD_COUNT=1
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=Hutch
+	FIELD_COUNT=1
+END_ADD
+
+
+############################################################
+## ModemBearer
+## 
+[ModemBearer]
+ADD_TEMPLATE
+	Name=Default Modem
+	IfName=PPP
+	PortName=COMM::1
+	TSYName=MM
+	CSYName=ECUART
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=0
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	IspInitString=*99***1#
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	CommRole=0
+	ControlChannelPortName=COMM::0
+	SIRSettings=0
+	Agent=CSD.agt
+	FIELD_COUNT=71
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=GsmPhone1
+	IfName=PPP
+	PortName=COMM::1
+	TSYName=MM
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=17
+	XoffChar=19
+	ModemInitString=AT
+	MessageCentreNumber=+447973100973
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=CSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NTRAS (Com0) Null Modem 115200bps
+	IfName=PPP
+	PortName=COMM::0
+	TSYName=NTRAS
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	ModemInitString=AT
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=TRUE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=CSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NTRAS (Com1) Null Modem 115200bps
+	IfName=PPP
+	PortName=COMM::1
+	TSYName=NTRAS
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	ModemInitString=AT
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=TRUE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=CSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=GsmPhone2
+	IfName=PPP
+	PortName=COMM::0
+	TSYName=phonetsywithdispatcher
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	ModemInitString=AT
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=TRUE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=PSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=SimulatorPhone
+	IfName=PPP
+	PortName=COMM::0
+	TSYName=SIM
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=19200
+	Handshaking=196
+	SpecialRate=0
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=CSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=GsmPhone3
+	IfName=PPP
+	PortName=COMM::0
+	TSYName=MM
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	MessageCentreNumber=+447973100973
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=PSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=GsmPhone4
+	IfName=PPP
+	PortName=COMM::0
+	TSYName=DMM
+	CSYName=ECUART
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=19200
+	Handshaking=196
+	SpecialRate=0
+	XonChar=17
+	XoffChar=19
+	ModemInitString=ATZ
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	ControlChannelPortName=COMM::0
+	Agent=CSD.agt
+	FIELD_COUNT=20
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=mRouterWinsBearer
+	IfName=PPP
+	PortName=WINS::0
+	TSYName=MM
+	CSYName=WINSCSY
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	CommRole=0
+	SIRSettings=0
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=69
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=mRouterUsbBearer
+	IfName=PPP
+	PortName=ACM::0
+	TSYName=MM
+	CSYName=ECACM
+	LastSocketActivityTimeout=9999
+	LastSessionClosedTimeout=180
+	LastSocketClosedTimeout=30
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOff=Q0
+	QuietOn=Q1
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+44123456789
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	CommRole=0
+	SIRSettings=0
+	Agent=mRouterAgent.agt
+	FIELD_COUNT=69
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=trpat_psd
+	Agent=trp.agt
+	IfName=rawip
+	PortName=not used
+	BCAStack=C32Bca
+	ControlChannelPortName=COMM::0
+	TSYName=TRPAT
+	CSYName=CSY27010
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOn=Q1
+	QuietOff=Q0
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+447973100973
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	SIRSettings=0
+	CommRole=0
+	FIELD_COUNT=71
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=trpat_csd
+	Agent=csd.agt
+	IfName=PPP
+	PortName=not used
+	ControlChannelPortName=COMM::0
+	TSYName=TRPAT
+	CSYName=CSY27010
+	DataBits=8
+	StopBits=1
+	Parity=NONE
+	Rate=115200
+	Handshaking=4
+	SpecialRate=0
+	XonChar=0
+	XoffChar=0
+	FaxClassPref=AUTO
+	SpeakerPref=NEVER
+	SpeakerVolPref=QUIET
+	ModemInitString=AT
+	DataInitString=AT
+	FaxInitString=AT
+	DialPauseLength=S8=
+	SpeakerVolContorlLow=L0
+	SpeakerVolControlMedium=L1
+	SpeakerVolControlHigh=L2
+	SpeakerAlwaysOff=M0
+	SpeakerOnUntilCarrier=M1
+	SpeakerAlwaysOn=M2
+	SpeakerOnAfterUntilCarrier=M3
+	DialToneWaitModifier=W
+	CallProgress1=X1
+	CallProgress2=X2
+	CallProgress3=X3
+	CallProgress4=X4
+	EchoOff=E0
+	VerboseText=V1
+	QuietOn=Q1
+	QuietOff=Q0
+	DialCommandStateModifier=;
+	OnLine=O
+	ResetConfiguration=Z
+	ReturnToFactoryDefs=&F
+	DCDOnDuringLink=&C1
+	DTRHangUp=&D2
+	DSRAlwaysOn=&S0
+	RTSCTSHandshake=&K3
+	XonXoffHandshake=&K4
+	EscapeCharacter=+
+	EscapeGuardPeriod=S12
+	NoDialTone=NO DIAL TONE
+	Busy=BUSY
+	NoAnswer=NO ANSWER
+	Carrier=CARRIER
+	Connect=CONNECT
+	CompressionClass5=COMPRESSION:CLASS 5
+	CompressionV42bis=COMPRESSION:V.42 bis
+	CompressionNone=COMPRESSION:NONE
+	ProtocolLAPD=PROTOCOL:LAPD
+	ProtocolALT=PROTOCOL:ALT
+	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
+	ProtocolNone=PROTOCOL:NONE
+	MessageCentreNumber=+447973100973
+	MessageValidityPeriod=1440
+	MessageDeliveryReport=FALSE
+	MinimumSignalLevel=9905
+	LastSocketActivityTimeout=300
+	LastSessionClosedTimeout=300
+	LastSocketClosedTimeout=300
+	SIRSettings=0
+	CommRole=0
+	FIELD_COUNT=70
+END_ADD
+
+
+############################################################
+## LANBearer
+## 
+[LANBearer]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Ethernet 001
+	IfName=ethint
+	LDDFilename=enet
+	LDDName=Ethernet
+	PDDFilename=ethernet
+	PDDName=ethernet.wins
+	PacketDriverName=EtherPkt.drv
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet 002
+	IfName=ethint
+	LDDName=EtherCard
+	PDDName=EtherWins
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=nullagt.agt
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## Location
+## 
+[Location]
+ADD_TEMPLATE
+	Name=Default Location
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=44
+	DialOutCode=44
+	DisableCallWaitingCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Office
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=9,
+	DisableCallWaitingCode=9,
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Office Direct Dial
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=171
+	DialOutCode=171
+	DisableCallWaitingCode=171
+	Mobile=FALSE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Mobile
+	IntlPrefixCode=+
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=44
+	DialOutCode=44
+	DisableCallWaitingCode=44
+	Mobile=TRUE
+	UsePulseDial=FALSE
+	WaitForDialTone=FALSE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Home
+	IntlPrefixCode=00
+	NatPrefixCode=0
+	NatCode=44
+	AreaCode=181
+	DialOutCode=181
+	DisableCallWaitingCode=181
+	Mobile=FALSE
+	UsePulseDial=TRUE
+	WaitForDialTone=TRUE
+	PauseAfterDialout=0
+	FIELD_COUNT=11
+END_ADD
+
+
+############################################################
+## Chargecard
+## 
+[Chargecard]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy BT Chargecard
+	AccountNumber=144,12345678
+	Pin=0000
+	LocalRule=HG
+	NatRule=HFG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dummy Mercury Chargecard
+	AccountNumber=0500800800,,12345678
+	Pin=****
+	LocalRule=HG
+	NatRule=J,K,0FG
+	IntlRule=HEFG
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## GlobalSettings
+## 
+[GlobalSettings]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	WAPAccessPoint=1
+	ConnectionAttempts=2
+	RedialAttempts=3
+	SmsBearer=1
+	SmsReceiveMode=2
+	GPRSAttachMode=1
+	AcceptIncomingGprs=1
+	GPRSClassCBearer=GSM
+	ModemForDataAndFax=2
+	ModemForPhoneServicesAndSMS=5
+	LocationForDataAndFax=2
+	LocationForPhoneServicesAndSMS=5
+	MaxMBufHeap=2
+	DefaultNetwork=1
+	BearerAvailabilityCheckTSY=phonetsywithdispatcher
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## DialOutISP
+## 
+[DialOutISP]
+ADD_TEMPLATE
+	Name=Default Dial Out ISP
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=TRUE
+	DisplayPCT=FALSE
+	IfPromptForAuth=TRUE
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=28
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Pipex CSD
+	Description=Pipex Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=08450885336
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=solabf75
+	IfAuthPass=oodifama
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=45
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS
+	Description=Test
+	Type=INTERNETONLY
+	DialResolution=TRUE
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=43
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=WSP Test CSD
+	Description=Symbian WSP Test Server
+	Type=INTERNETANDWAP
+	DefaultTelNum=02071541211
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wapusr
+	IfAuthPass=train2
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=158.43.128.1
+	IpNameServer2=158.43.192.1
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=45
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=Auth CSD
+	Description=Authentication Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+358331520777
+	DialResolution=TRUE
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=mailtst1
+	LoginPass=mailtest1
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=mailtst1
+	IfAuthPass=mailtest1
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=TRUE
+	FIELD_COUNT=45
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=IP6 Dial Test
+	Description=4th Floor Test Lab
+	Type=INTERNETONLY
+	DefaultTelNum=02071541455
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=45
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=USIM Test NT RAS
+	Type=INTERNETONLY
+	DialResolution=TRUE
+	UseLoginScript=TRUE
+	LoginScript=CHARMAP \[windows-1252\]\nLOOP 10\n{\nSEND "CLIENT"+<0x0d>\nWAIT 3\n{\n"SERVER" OK\n}\n}\nEXIT KErrNoAnswer$\n\nOK:\nEXIT\n
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=CityOnlines CSD India
+	Description=CityOnlines Indian Service Provider
+	Type=INTERNETONLY
+	DefaultTelNum=+9180172388
+	DialResolution=TRUE
+	UseLoginScript=TRUE
+	PromptForLogin=FALSE
+	LoginName=ktl1@blr.cityonlines.com
+	LoginPass=1234
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=ktl1
+	IfAuthPass=1234
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=TRUE
+	FIELD_COUNT=45
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Vodafone WAP GSM
+	Description=Vodafone WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447836900808
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=user@vodafone.net
+	IfAuthPass=user
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	BearerProtocol=V110
+	FIELD_COUNT=18
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=Orange WAP GSM
+	Description=Orange WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447973100500
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Orange
+	IfAuthPass=Multimedia
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	BearerProtocol=V110
+	FIELD_COUNT=18
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=O2 WAP GSM
+	Description=O2 WAP GSM
+	Type=INTERNETANDWAP
+	DefaultTelNum=+447712927927
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=O2wap
+	IfAuthPass=password
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	BearerProtocol=V110
+	FIELD_COUNT=18
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=Test Network CSD
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02071541259
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=Systemtest09
+	IfAuthPass=l33ds
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=43
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=IP6 Dial Test
+	Description=Symbian Test Network
+	Type=INTERNETONLY
+	DefaultTelNum=02077248525
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip,ip6
+	IfPromptForAuth=FALSE
+	IfAuthName=ipv6test
+	IfAuthPass=Symbian
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerName=ASYNCHRONOUS
+	BearerSpeed=UNSPECIFIED
+	BearerCE=UNSPECIFIED
+	BearerType=CSD
+	ChannelCoding=UNSPECIFIED
+	Aiur=0
+	RequestedTimeSlots=0
+	MaximumTimeSlots=0
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=45
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=mRouterDialOutIsp
+	Description=mRouterDialOutIsp
+	Type=INTERNETONLY
+	DialResolution=TRUE
+	UseLoginScript=FALSE
+	PromptForLogin=FALSE
+	DisplayPCT=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=IfAuthPass=
+	IfAuthPass=AuthRetries=0
+	AuthRetries=0
+	IfCallbackEnabled=FALSE
+	CallbackTimeout=0
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	BearerService=0
+	BearerProtocol=UNSPECIFIED
+	RlpVersion=0
+	IwfToMs=0
+	MsToIwf=0
+	AckTimer=0
+	RetransmissionAttempts=0
+	ResequencePeriod=0
+	V42Compression=0
+	V42Codewords=0
+	V42MaxLength=0
+	Asymmetry=0
+	UserInitUpgrade=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=34
+END_ADD
+
+
+
+############################################################
+## DialInISP
+## 
+[DialInISP]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Dial In ISP01
+	UseLoginScript=FALSE
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableIPHeaderComp=FALSE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	EnableSWComp=FALSE
+	UseEdge=FALSE
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## OutgoingGPRS
+## 
+[OutgoingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Vodafone GPRS
+	APN=internet
+	PDPType=IPV4
+	ReqPrecedence=0
+	ReqDelay=0
+	ReqReliability=0
+	ReqPeakThroughput=0
+	ReqMeanThroughput=0
+	MinPrecedence=0
+	MinDelay=0
+	MinReliability=0
+	MinPeakThroughput=0
+	MinMeanThroughput=0
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=web
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	APN=wap.vodafone.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=wap
+	IfAuthPass=wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpAddr=0.0.0.0
+	IpDNSAddrFromServer=TRUE
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=33
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange GPRS
+	APN=orangeinternet
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=Orange WAP GPRS
+	APN=orangewap
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=29
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=O2 GPRS
+	APN=mobile.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=web
+	IfAuthPass=password
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=O2 WAP GPRS
+	APN=wap.o2.co.uk
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=o2wap
+	IfAuthPass=o2wap
+	AuthRetries=1
+	IpNetMask=255.255.255.0
+	IpGateway=1.2.3.4
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	Ip6DNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=34
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Hutch GPRS
+	APN=portalnmms
+	PDPType=IPV4
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=8
+	MinDelay=16
+	MinReliability=32
+	MinPeakThroughput=2
+	MinMeanThroughput=2
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfParams=nullagt
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	AuthRetries=1
+	IpGateway=10.10.1.100
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	GprsAccessPointType=0
+	QosWarningTimeout=0
+	FIELD_COUNT=28
+END_ADD
+
+
+############################################################
+## IncomingGPRS
+## 
+[IncomingGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Incoming GPRS Settings PlaceHolder
+	APN=Test
+	PDPType=IPV4
+	PDPAddress=0.0.0.0
+	ReqPrecedence=1
+	ReqDelay=1
+	ReqReliability=1
+	ReqPeakThroughput=1
+	ReqMeanThroughput=1
+	MinPrecedence=1
+	MinDelay=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=0.0.0.0
+	IpNameServer2=0.0.0.0
+	EnableLCPExtension=FALSE
+	DisablePlainTextAuth=FALSE
+	FIELD_COUNT=29
+END_ADD
+
+
+############################################################
+## DefaultGPRS
+## 
+[DefaultGPRS]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Dummy Default GPRS Settings
+	Usage=1
+	APN=Access point name
+	PDPType=IPV6
+	PDPAddress=www.wid.com
+	Precedence=1
+	Delay=150
+	Reliability=1
+	PeakThroughput=1
+	MinReliability=1
+	MinPeakThroughput=1
+	MinMeanThroughput=1
+	DataCompression=FALSE
+	HeaderCompression=FALSE
+	GprsUseEdge=FALSE
+	AnonymousAccess=TRUE
+	FIELD_COUNT=16
+END_ADD
+
+
+############################################################
+## CDMA2000PacketServiceTable
+## 
+[CDMA2000PacketServiceTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=test name cdma2000
+	IwfName=Test2000
+	ServiceOption=HIGHSPEEDCDMA2000DATA
+	PDPType=IPV4
+	ReqFwdPriority=PRIORITY04
+	ReqRevPriority=PRIORITY04
+	ReqFwdBitrate=32KBPS
+	ReqRevBitrate=32KBPS
+	ReqFwdLoss=LOSS1
+	ReqRevLoss=LOSS1
+	ReqFwdMaxdelay=40MS
+	ReqRevMaxdelay=40MS
+	MinFwdBitrate=32KBPS
+	MinRevBitrate=32KBPS
+	AccptFwdLoss=LOSS2
+	AccptRevLoss=LOSS2
+	AccptFwdMaxdelay=120MS
+	AccptRevMaxdelay=120MS
+	AnonymousAccess=FALSE
+	IfNetworks=ip
+	IfPromptForAuth=FALSE
+	IfAuthName=RasUser
+	IfAuthPass=pass
+	AuthRetries=1
+	IpNetMask=0.255.255.255
+	IpGateway=10.0.0.1
+	IpAddrFromServer=TRUE
+	IpDNSAddrFromServer=TRUE
+	EnableLCPExtension=TRUE
+	DisablePlainTextAuth=TRUE
+	ApType=2
+	QosWarningTimeout=1000000
+	RlpMode=TRANSPARENT
+	CDMANaiType=0
+	EnableIPHeaderComp=FALSE
+	CDMAMobileIP=FALSE
+	CDMAMobileIPTimeout=10000000
+	FIELD_COUNT=37
+END_ADD
+
+
+############################################################
+## LANService
+## 
+[LANService]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=IP4 DHCP Ethernet
+	IfNetworks=ip
+	IpNetMask=255.255.252.0
+	IpGateway=10.192.203.254
+	IpAddrFromServer=TRUE
+	IpAddr=10.192.200.59
+	IpDNSAddrFromServer=TRUE
+	IpNameServer1=10.192.59.6
+	IpNameServer2=10.192.58.49
+	ConfigDaemonManagerName=NetCfgExtnDhcp
+	ConfigDaemonName=!DhcpServ
+	FIELD_COUNT=11
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=IP6 Ethernet
+	IfNetworks=ip,ip6
+	IpNetMask=255.255.255.0
+	IpGateway=194.72.6.1
+	IpAddrFromServer=TRUE
+	IpAddr=192.168.0.100
+	IpDNSAddrFromServer=FALSE
+	IpNameServer1=192.168.10.2
+	IpNameServer2=192.168.20.2
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## IAP
+## 
+[IAP]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=Pipex CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Ethernet IP4
+	IAPServiceType=LANService
+	IAPService=1
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=NT RAS Com 0
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=NT RAS Com 1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=4
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 5
+	Name=WSP Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 6
+	Name=Msg Test CSD
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 7
+	Name=Msg Test Auth CSD
+	IAPServiceType=DialOutISP
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 8
+	Name=WinTunnel on Epoc Com1
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=3
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 9
+	Name=Ethernet IP6
+	IAPServiceType=LANService
+	IAPService=2
+	IAPBearerType=LANBearer
+	IAPBearer=1
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 10
+	Name=IP6 Dial
+	IAPServiceType=DialOutISP
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 11
+	Name=GSMPhone1
+	IAPServiceType=DialOutISP
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 12
+	Name=USIM Test
+	IAPServiceType=DialOutISP
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=6
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 13
+	Name=Vodafone GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=1
+	IAPBearerType=ModemBearer
+	IAPBearer=5
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 14
+	Name=Vodafone WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=2
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 15
+	Name=Orange GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 16
+	Name=Orange WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=4
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 17
+	Name=O2 GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=5
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 18
+	Name=O2 WAP GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=6
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 19
+	Name=CityOnlines CSD India
+	IAPServiceType=DialOutISP
+	IAPService=8
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 20
+	Name=Hutch GPRS
+	IAPServiceType=OutgoingGPRS
+	IAPService=7
+	IAPBearerType=ModemBearer
+	IAPBearer=7
+	IAPNetwork=6
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 21
+	Name=Vodafone WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=9
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=3
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 22
+	Name=Orange WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=10
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=4
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 23
+	Name=O2 WAP GSM
+	IAPServiceType=DialOutISP
+	IAPService=11
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=5
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 24
+	Name=Test Network CSD
+	IAPServiceType=DialOutISP
+	IAPService=12
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 25
+	Name=Test Network CSD IP6
+	IAPServiceType=DialOutISP
+	IAPService=13
+	IAPBearerType=ModemBearer
+	IAPBearer=2
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 26
+	Name=Cisco VPN IAP
+	IAPServiceType=VpnService
+	IAPService=3
+	IAPBearerType=VirtualBearer
+	IAPBearer=3
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 27
+	Name=DUMMY TSY
+	IAPServiceType=DialOutISP
+	IAPService=3
+	IAPBearerType=ModemBearer
+	IAPBearer=8
+	IAPNetwork=1
+	IAPNetworkWeighting=0
+	Location=4
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 28
+	Name=mRouter USB
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=10
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 29
+	Name=mRouter Wins
+	IAPServiceType=DialOutISP
+	IAPService=14
+	IAPBearerType=ModemBearer
+	IAPBearer=9
+	IAPNetwork=2
+	IAPNetworkWeighting=0
+	Location=2
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## ConnectionPreferences
+## 
+[ConnectionPreferences]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	Ranking=1
+	Direction=OUTGOING
+	BearerSet=PSD
+	DialogPref=DONOTPROMPT
+	IAP=13
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## Proxies
+## 
+[Proxies]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ISP=4
+	ProxyServiceType=DialOutISP
+	UseProxyServer=TRUE
+	ProxyServerName=www.dummyproxy.com
+	ProtocolName=http
+	PortNumber=80
+	Exceptions=www.dummyproxy.com/exception
+	FIELD_COUNT=8
+END_ADD
+
+
+############################################################
+## WAPAccessPoint
+## 
+[WAPAccessPoint]
+ADD_TEMPLATE
+	Name=Default Dial In ISP
+	CurrentBearer=WAPIPBearer
+	FIELD_COUNT=2
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=Vodafone WAP GPRS
+	CurrentBearer=WAPIPBearer
+	StartPage=wap:1999/vodafone.wml
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=Orange WAP GPRS
+	CurrentBearer=WAPIPBearer
+	StartPage=orange.multimedia
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 4
+	Name=O2 WAP GPRS
+	CurrentBearer=WAPIPBearer
+	StartPage=wap.o2.co.uk
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## WAPIPBearer
+## 
+[WAPIPBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	AccessPointId=0
+	GatewayAddress=0
+	IAP=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	ProxyPortNumber=0
+	ProxyLogin=0
+	ProxyPassword=0
+	FIELD_COUNT=9
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=wap.closedtest.intra
+	IAP=24
+	WSPOption=CONNECTIONORIENTED
+	Security=FALSE
+	ProxyPortNumber=1
+	ProxyLogin=1
+	ProxyPassword=1
+	FIELD_COUNT=9
+END_ADD
+
+
+############################################################
+## WAPSMSBearer
+## 
+[WAPSMSBearer]
+ADD_TEMPLATE
+	Name=DefaultRecordName-1
+	AccessPointId=0
+	GatewayAddress=0
+	ServiceCentreAddress=0
+	WSPOption=CONNECTIONLESS
+	Security=FALSE
+	FIELD_COUNT=6
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	AccessPointId=2
+	GatewayAddress=+4412345678901
+	ServiceCentreAddress=+442071234567
+	WSPOption=CONNECTIONORIENTED
+	Security=FALSE
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## SecureSocketTable
+## 
+[SecureSocketTable]
+ADD_SECTION
+# COMMDB_ID = 1
+	Name=DefaultRecordName-1
+	ProtocolName=ssl3.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=DefaultRecordName-2
+	ProtocolName=tls1.0
+	ProtoLibrary=ssladaptor.dll
+	FIELD_COUNT=3
+END_ADD
+
+
+############################################################
+## VirtualBearer
+## 
+[VirtualBearer]
+ADD_TEMPLATE
+	Name=Default VPN Bearer
+	IfName=VPN.nif
+	LastSocketActivityTimeout=600
+	LastSessionClosedTimeout=600
+	LastSocketClosedTimeout=600
+	Agent=VPN.agt
+	FIELD_COUNT=6
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN Bearer1
+	IfName=ppp.nif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=ntras.agt
+	FIELD_COUNT=6
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=VPN Bearer2
+	IfName=tunnelnif
+	LastSocketActivityTimeout=-1
+	LastSessionClosedTimeout=-1
+	LastSocketClosedTimeout=-1
+	Agent=vpnconnagt.agt
+	FIELD_COUNT=6
+END_ADD
+
+
+############################################################
+## VpnService
+## 
+[VpnService]
+ADD_TEMPLATE
+	Name=Default VPN
+	Policy=DefaultVPNpolicy
+	HomeIAP=1
+	HomeNetwork=0
+	FIELD_COUNT=4
+END_TEMPLATE
+
+ADD_SECTION
+# COMMDB_ID = 2
+	Name=VPN1
+	Policy=VPNpolicy1
+	HomeIAP=2
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
+ADD_SECTION
+# COMMDB_ID = 3
+	Name=cisco tunnel
+	Policy=cisco_all
+	HomeIAP=8
+	HomeNetwork=1
+	FIELD_COUNT=4
+END_ADD
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/eabi/licenseeskeletontsyu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,206 @@
+EXPORTS
+	_Z12LTsyFactoryLv @ 1 NONAME
+	_ZTI10CATDtmfVts @ 2 NONAME
+	_ZTI10CATGetImei @ 3 NONAME
+	_ZTI10CATSIMCard @ 4 NONAME
+	_ZTI10CAtManager @ 5 NONAME
+	_ZTI10CAtSmsNack @ 6 NONAME
+	_ZTI10CAtSmsSend @ 7 NONAME
+	_ZTI10CTsyConfig @ 8 NONAME
+	_ZTI11CATGetModel @ 9 NONAME
+	_ZTI11CCommEngine @ 10 NONAME
+	_ZTI11CCommReader @ 11 NONAME
+	_ZTI11CCommWriter @ 12 NONAME
+	_ZTI11CGetPhoneID @ 13 NONAME
+	_ZTI12CATDialVoice @ 14 NONAME
+	_ZTI12CATGetSignal @ 15 NONAME
+	_ZTI12CRequestBase @ 16 NONAME
+	_ZTI13CATGetBattery @ 17 NONAME
+	_ZTI13CATGprsAttach @ 18 NONAME
+	_ZTI13CATGprsDetach @ 19 NONAME
+	_ZTI13CAtPhbkEnRead @ 20 NONAME
+	_ZTI13CAtSmsReceive @ 21 NONAME
+	_ZTI13CGetFdnStatus @ 22 NONAME
+	_ZTI13CStringParser @ 23 NONAME
+	_ZTI14CATGetCellInfo @ 24 NONAME
+	_ZTI14CATGetRevision @ 25 NONAME
+	_ZTI14CATNetworkInfo @ 26 NONAME
+	_ZTI14CATUnsolicited @ 27 NONAME
+	_ZTI14CAtCommandBase @ 28 NONAME
+	_ZTI14CLtsyFactoryV1 @ 29 NONAME
+	_ZTI15CATGetFdnStatus @ 30 NONAME
+	_ZTI15CAtSmsStoreInfo @ 31 NONAME
+	_ZTI15CAtSmsStoreRead @ 32 NONAME
+	_ZTI15CLtsySatHandler @ 33 NONAME
+	_ZTI15CLtsySimHandler @ 34 NONAME
+	_ZTI15CLtsySmsHandler @ 35 NONAME
+	_ZTI16CATDetectNetwork @ 36 NONAME
+	_ZTI16CATGPRSSetConfig @ 37 NONAME
+	_ZTI16CATGetFdnSupport @ 38 NONAME
+	_ZTI16CATHelperCommand @ 39 NONAME
+	_ZTI16CATSelectNetwork @ 40 NONAME
+	_ZTI16CAtPhbkEnGetInfo @ 41 NONAME
+	_ZTI16CAtPhbkEnReadAll @ 42 NONAME
+	_ZTI16CAtPhbkStoreRead @ 43 NONAME
+	_ZTI16CAtSmsStoreWrite @ 44 NONAME
+	_ZTI16CGetOperatorNmae @ 45 NONAME
+	_ZTI16CInitializePhone @ 46 NONAME
+	_ZTI17CATGetModemStatus @ 47 NONAME
+	_ZTI17CATNotifyCellInfo @ 48 NONAME
+	_ZTI17CAtPhbkStoreCache @ 49 NONAME
+	_ZTI17CAtPhbkStoreWrite @ 50 NONAME
+	_ZTI17CAtSmsStoreDelete @ 51 NONAME
+	_ZTI17CLtsyPhoneHandler @ 52 NONAME
+	_ZTI17CRespondBufParser @ 53 NONAME
+	_ZTI18CATGetManufacturer @ 54 NONAME
+	_ZTI18CAtPhbkStoreDelete @ 55 NONAME
+	_ZTI18CAtSmsStoreReadAll @ 56 NONAME
+	_ZTI19CATGetPhoneCellInfo @ 57 NONAME
+	_ZTI19CATSwitchOnLineMode @ 58 NONAME
+	_ZTI19CActiveCommandStore @ 59 NONAME
+	_ZTI19CAsyncHelperRequest @ 60 NONAME
+	_ZTI19CAtMessageStoreInfo @ 61 NONAME
+	_ZTI19CGlobalPhonemanager @ 62 NONAME
+	_ZTI20CATGprsContextDelete @ 63 NONAME
+	_ZTI20CATGprsNtwkRegStatus @ 64 NONAME
+	_ZTI20CATGprsSetProfileReq @ 65 NONAME
+	_ZTI20CATSelectNetworkMode @ 66 NONAME
+	_ZTI20CATSetNotifyCellInfo @ 67 NONAME
+	_ZTI20CAtSmsStoreDeleteAll @ 68 NONAME
+	_ZTI20CLtsySecurityHandler @ 69 NONAME
+	_ZTI21CATCommandControlBase @ 70 NONAME
+	_ZTI21CATGPRSGetContextAddr @ 71 NONAME
+	_ZTI21CATGprsContextConnect @ 72 NONAME
+	_ZTI21CATWaitForCallHandler @ 73 NONAME
+	_ZTI21CInitialisePdpContext @ 74 NONAME
+	_ZTI21CLtsyPhonebookHandler @ 75 NONAME
+	_ZTI22CATGprsContextActivate @ 76 NONAME
+	_ZTI22CATNetworkRegistration @ 77 NONAME
+	_ZTI22CAtPhbkStoreInitialise @ 78 NONAME
+	_ZTI22CGetCurrentNetworkInfo @ 79 NONAME
+	_ZTI23CATHangupCommandRecords @ 80 NONAME
+	_ZTI23CLtsyCallControlHandler @ 81 NONAME
+	_ZTI23CLtsyPhonebookEnHandler @ 82 NONAME
+	_ZTI23CLtsyPhonebookOnHandler @ 83 NONAME
+	_ZTI23CNotifyBatteryAndSignal @ 84 NONAME
+	_ZTI24CATGprsContextDeactivate @ 85 NONAME
+	_ZTI24CAtPhbkGetPhoneStoreInfo @ 86 NONAME
+	_ZTI24CUnsolicitedEventMonitor @ 87 NONAME
+	_ZTI25CATNetworkRegStatusChange @ 88 NONAME
+	_ZTI25CActivatContextAndGetAddr @ 89 NONAME
+	_ZTI25CLtsyCellBroadcastHandler @ 90 NONAME
+	_ZTI26CATGprsNtwkRegStatusChange @ 91 NONAME
+	_ZTI26CLtsyPacketServicesHandler @ 92 NONAME
+	_ZTI27CLtsyCallInformationManager @ 93 NONAME
+	_ZTI33CLtsyCallControlMultipartyHandler @ 94 NONAME
+	_ZTI33CLtsySupplementaryServicesHandler @ 95 NONAME
+	_ZTI37CUnsolicitedCommandCallControlHandler @ 96 NONAME
+	_ZTI7CATChld @ 97 NONAME
+	_ZTI7CATClcc @ 98 NONAME
+	_ZTI7CATRing @ 99 NONAME
+	_ZTI9CATAnswer @ 100 NONAME
+	_ZTI9CATHangUp @ 101 NONAME
+	_ZTI9CAtSmsAck @ 102 NONAME
+	_ZTT15CLtsySimHandler @ 103 NONAME
+	_ZTV10CATDtmfVts @ 104 NONAME
+	_ZTV10CATGetImei @ 105 NONAME
+	_ZTV10CATSIMCard @ 106 NONAME
+	_ZTV10CAtManager @ 107 NONAME
+	_ZTV10CAtSmsNack @ 108 NONAME
+	_ZTV10CAtSmsSend @ 109 NONAME
+	_ZTV10CTsyConfig @ 110 NONAME
+	_ZTV11CATGetModel @ 111 NONAME
+	_ZTV11CCommEngine @ 112 NONAME
+	_ZTV11CCommReader @ 113 NONAME
+	_ZTV11CCommWriter @ 114 NONAME
+	_ZTV11CGetPhoneID @ 115 NONAME
+	_ZTV12CATDialVoice @ 116 NONAME
+	_ZTV12CATGetSignal @ 117 NONAME
+	_ZTV12CRequestBase @ 118 NONAME
+	_ZTV13CATGetBattery @ 119 NONAME
+	_ZTV13CATGprsAttach @ 120 NONAME
+	_ZTV13CATGprsDetach @ 121 NONAME
+	_ZTV13CAtPhbkEnRead @ 122 NONAME
+	_ZTV13CAtSmsReceive @ 123 NONAME
+	_ZTV13CGetFdnStatus @ 124 NONAME
+	_ZTV13CStringParser @ 125 NONAME
+	_ZTV14CATGetCellInfo @ 126 NONAME
+	_ZTV14CATGetRevision @ 127 NONAME
+	_ZTV14CATNetworkInfo @ 128 NONAME
+	_ZTV14CATUnsolicited @ 129 NONAME
+	_ZTV14CAtCommandBase @ 130 NONAME
+	_ZTV14CLtsyFactoryV1 @ 131 NONAME
+	_ZTV15CATGetFdnStatus @ 132 NONAME
+	_ZTV15CAtSmsStoreInfo @ 133 NONAME
+	_ZTV15CAtSmsStoreRead @ 134 NONAME
+	_ZTV15CLtsySatHandler @ 135 NONAME
+	_ZTV15CLtsySimHandler @ 136 NONAME
+	_ZTV15CLtsySmsHandler @ 137 NONAME
+	_ZTV16CATDetectNetwork @ 138 NONAME
+	_ZTV16CATGPRSSetConfig @ 139 NONAME
+	_ZTV16CATGetFdnSupport @ 140 NONAME
+	_ZTV16CATHelperCommand @ 141 NONAME
+	_ZTV16CATSelectNetwork @ 142 NONAME
+	_ZTV16CAtPhbkEnGetInfo @ 143 NONAME
+	_ZTV16CAtPhbkEnReadAll @ 144 NONAME
+	_ZTV16CAtPhbkStoreRead @ 145 NONAME
+	_ZTV16CAtSmsStoreWrite @ 146 NONAME
+	_ZTV16CGetOperatorNmae @ 147 NONAME
+	_ZTV16CInitializePhone @ 148 NONAME
+	_ZTV17CATGetModemStatus @ 149 NONAME
+	_ZTV17CATNotifyCellInfo @ 150 NONAME
+	_ZTV17CAtPhbkStoreCache @ 151 NONAME
+	_ZTV17CAtPhbkStoreWrite @ 152 NONAME
+	_ZTV17CAtSmsStoreDelete @ 153 NONAME
+	_ZTV17CLtsyPhoneHandler @ 154 NONAME
+	_ZTV17CRespondBufParser @ 155 NONAME
+	_ZTV18CATGetManufacturer @ 156 NONAME
+	_ZTV18CAtPhbkStoreDelete @ 157 NONAME
+	_ZTV18CAtSmsStoreReadAll @ 158 NONAME
+	_ZTV19CATGetPhoneCellInfo @ 159 NONAME
+	_ZTV19CATSwitchOnLineMode @ 160 NONAME
+	_ZTV19CActiveCommandStore @ 161 NONAME
+	_ZTV19CAsyncHelperRequest @ 162 NONAME
+	_ZTV19CAtMessageStoreInfo @ 163 NONAME
+	_ZTV19CGlobalPhonemanager @ 164 NONAME
+	_ZTV20CATGprsContextDelete @ 165 NONAME
+	_ZTV20CATGprsNtwkRegStatus @ 166 NONAME
+	_ZTV20CATGprsSetProfileReq @ 167 NONAME
+	_ZTV20CATSelectNetworkMode @ 168 NONAME
+	_ZTV20CATSetNotifyCellInfo @ 169 NONAME
+	_ZTV20CAtSmsStoreDeleteAll @ 170 NONAME
+	_ZTV20CLtsySecurityHandler @ 171 NONAME
+	_ZTV21CATCommandControlBase @ 172 NONAME
+	_ZTV21CATGPRSGetContextAddr @ 173 NONAME
+	_ZTV21CATGprsContextConnect @ 174 NONAME
+	_ZTV21CATWaitForCallHandler @ 175 NONAME
+	_ZTV21CInitialisePdpContext @ 176 NONAME
+	_ZTV21CLtsyPhonebookHandler @ 177 NONAME
+	_ZTV22CATGprsContextActivate @ 178 NONAME
+	_ZTV22CATNetworkRegistration @ 179 NONAME
+	_ZTV22CAtPhbkStoreInitialise @ 180 NONAME
+	_ZTV22CGetCurrentNetworkInfo @ 181 NONAME
+	_ZTV23CATHangupCommandRecords @ 182 NONAME
+	_ZTV23CLtsyCallControlHandler @ 183 NONAME
+	_ZTV23CLtsyPhonebookEnHandler @ 184 NONAME
+	_ZTV23CLtsyPhonebookOnHandler @ 185 NONAME
+	_ZTV23CNotifyBatteryAndSignal @ 186 NONAME
+	_ZTV24CATGprsContextDeactivate @ 187 NONAME
+	_ZTV24CAtPhbkGetPhoneStoreInfo @ 188 NONAME
+	_ZTV24CUnsolicitedEventMonitor @ 189 NONAME
+	_ZTV25CATNetworkRegStatusChange @ 190 NONAME
+	_ZTV25CActivatContextAndGetAddr @ 191 NONAME
+	_ZTV25CLtsyCellBroadcastHandler @ 192 NONAME
+	_ZTV26CATGprsNtwkRegStatusChange @ 193 NONAME
+	_ZTV26CLtsyPacketServicesHandler @ 194 NONAME
+	_ZTV27CLtsyCallInformationManager @ 195 NONAME
+	_ZTV33CLtsyCallControlMultipartyHandler @ 196 NONAME
+	_ZTV33CLtsySupplementaryServicesHandler @ 197 NONAME
+	_ZTV37CUnsolicitedCommandCallControlHandler @ 198 NONAME
+	_ZTV7CATChld @ 199 NONAME
+	_ZTV7CATClcc @ 200 NONAME
+	_ZTV7CATRing @ 201 NONAME
+	_ZTV9CATAnswer @ 202 NONAME
+	_ZTV9CATHangUp @ 203 NONAME
+	_ZTV9CAtSmsAck @ 204 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/eabi/stltsyu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,209 @@
+EXPORTS
+	_Z12LTsyFactoryLv @ 1 NONAME
+	_ZTI10CATDtmfVts @ 2 NONAME
+	_ZTI10CATGetImei @ 3 NONAME
+	_ZTI10CATSIMCard @ 4 NONAME
+	_ZTI10CAtManager @ 5 NONAME
+	_ZTI10CAtSmsNack @ 6 NONAME
+	_ZTI10CAtSmsSend @ 7 NONAME
+	_ZTI10CTsyConfig @ 8 NONAME
+	_ZTI11CATGetModel @ 9 NONAME
+	_ZTI11CCommEngine @ 10 NONAME
+	_ZTI11CCommReader @ 11 NONAME
+	_ZTI11CCommWriter @ 12 NONAME
+	_ZTI11CGetPhoneID @ 13 NONAME
+	_ZTI12CATDialVoice @ 14 NONAME
+	_ZTI12CATGetSignal @ 15 NONAME
+	_ZTI12CRequestBase @ 16 NONAME
+	_ZTI13CATGetBattery @ 17 NONAME
+	_ZTI13CATGprsAttach @ 18 NONAME
+	_ZTI13CATGprsDetach @ 19 NONAME
+	_ZTI13CAtPhbkEnRead @ 20 NONAME
+	_ZTI13CAtSmsReceive @ 21 NONAME
+	_ZTI13CGetFdnStatus @ 22 NONAME
+	_ZTI13CStringParser @ 23 NONAME
+	_ZTI14CATGetCellInfo @ 24 NONAME
+	_ZTI14CATGetRevision @ 25 NONAME
+	_ZTI14CATNetworkInfo @ 26 NONAME
+	_ZTI14CATUnsolicited @ 27 NONAME
+	_ZTI14CAtCommandBase @ 28 NONAME
+	_ZTI14CLtsyFactoryV1 @ 29 NONAME
+	_ZTI15CATGetFdnStatus @ 30 NONAME
+	_ZTI15CAtSmsStoreInfo @ 31 NONAME
+	_ZTI15CAtSmsStoreRead @ 32 NONAME
+	_ZTI15CLtsySatHandler @ 33 NONAME
+	_ZTI15CLtsySimHandler @ 34 NONAME
+	_ZTI15CLtsySmsHandler @ 35 NONAME
+	_ZTI16CATDetectNetwork @ 36 NONAME
+	_ZTI16CATGPRSSetConfig @ 37 NONAME
+	_ZTI16CATGetFdnSupport @ 38 NONAME
+	_ZTI16CATHelperCommand @ 39 NONAME
+	_ZTI16CATSelectNetwork @ 40 NONAME
+	_ZTI16CAtPhbkEnGetInfo @ 41 NONAME
+	_ZTI16CAtPhbkEnReadAll @ 42 NONAME
+	_ZTI16CAtPhbkStoreRead @ 43 NONAME
+	_ZTI16CAtSmsStoreWrite @ 44 NONAME
+	_ZTI16CGetOperatorNmae @ 45 NONAME
+	_ZTI16CInitializePhone @ 46 NONAME
+	_ZTI17CATGetModemStatus @ 47 NONAME
+	_ZTI17CATNotifyCellInfo @ 48 NONAME
+	_ZTI17CAtPhbkStoreCache @ 49 NONAME
+	_ZTI17CAtPhbkStoreWrite @ 50 NONAME
+	_ZTI17CAtSmsStoreDelete @ 51 NONAME
+	_ZTI17CLtsyPhoneHandler @ 52 NONAME
+	_ZTI17CRespondBufParser @ 53 NONAME
+	_ZTI18CATGetManufacturer @ 54 NONAME
+	_ZTI18CAtPhbkStoreDelete @ 55 NONAME
+	_ZTI18CAtSmsStoreReadAll @ 56 NONAME
+	_ZTI19CATGetPhoneCellInfo @ 57 NONAME
+	_ZTI19CATSwitchOnLineMode @ 58 NONAME
+	_ZTI19CActiveCommandStore @ 59 NONAME
+	_ZTI19CAsyncHelperRequest @ 60 NONAME
+	_ZTI19CAtMessageStoreInfo @ 61 NONAME
+	_ZTI19CGlobalPhonemanager @ 62 NONAME
+	_ZTI20CATGprsContextDelete @ 63 NONAME
+	_ZTI20CATGprsNtwkRegStatus @ 64 NONAME
+	_ZTI20CATGprsSetProfileReq @ 65 NONAME
+	_ZTI20CATSelectNetworkMode @ 66 NONAME
+	_ZTI20CATSetNotifyCellInfo @ 67 NONAME
+	_ZTI20CAtSmsStoreDeleteAll @ 68 NONAME
+	_ZTI20CLtsySecurityHandler @ 69 NONAME
+	_ZTI21CATCommandControlBase @ 70 NONAME
+	_ZTI21CATGPRSGetContextAddr @ 71 NONAME
+	_ZTI21CATGprsContextConnect @ 72 NONAME
+	_ZTI21CATWaitForCallHandler @ 73 NONAME
+	_ZTI21CInitialisePdpContext @ 74 NONAME
+	_ZTI21CLtsyPhonebookHandler @ 75 NONAME
+	_ZTI22CATGprsContextActivate @ 76 NONAME
+	_ZTI22CATNetworkRegistration @ 77 NONAME
+	_ZTI22CAtPhbkStoreInitialise @ 78 NONAME
+	_ZTI22CGetCurrentNetworkInfo @ 79 NONAME
+	_ZTI23CATHangupCommandRecords @ 80 NONAME
+	_ZTI23CLtsyCallControlHandler @ 81 NONAME
+	_ZTI23CLtsyPhonebookEnHandler @ 82 NONAME
+	_ZTI23CLtsyPhonebookOnHandler @ 83 NONAME
+	_ZTI23CNotifyBatteryAndSignal @ 84 NONAME
+	_ZTI24CATGprsContextDeactivate @ 85 NONAME
+	_ZTI24CAtPhbkGetPhoneStoreInfo @ 86 NONAME
+	_ZTI24CUnsolicitedEventMonitor @ 87 NONAME
+	_ZTI25CATNetworkRegStatusChange @ 88 NONAME
+	_ZTI25CActivatContextAndGetAddr @ 89 NONAME
+	_ZTI25CLtsyCellBroadcastHandler @ 90 NONAME
+	_ZTI26CATGprsNtwkRegStatusChange @ 91 NONAME
+	_ZTI26CLtsyPacketServicesHandler @ 92 NONAME
+	_ZTI27CLtsyCallInformationManager @ 93 NONAME
+	_ZTI33CLtsyCallControlMultipartyHandler @ 94 NONAME
+	_ZTI33CLtsySupplementaryServicesHandler @ 95 NONAME
+	_ZTI37CUnsolicitedCommandCallControlHandler @ 96 NONAME
+	_ZTI7CATChld @ 97 NONAME
+	_ZTI7CATClcc @ 98 NONAME
+	_ZTI7CATRing @ 99 NONAME
+	_ZTI9CATAnswer @ 100 NONAME
+	_ZTI9CATHangUp @ 101 NONAME
+	_ZTI9CAtSmsAck @ 102 NONAME
+	_ZTT15CLtsySimHandler @ 103 NONAME
+	_ZTT17CLtsyPhoneHandler @ 104 NONAME
+	_ZTT20CLtsySecurityHandler @ 105 NONAME
+	_ZTT23CLtsyCallControlHandler @ 106 NONAME
+	_ZTV10CATDtmfVts @ 107 NONAME
+	_ZTV10CATGetImei @ 108 NONAME
+	_ZTV10CATSIMCard @ 109 NONAME
+	_ZTV10CAtManager @ 110 NONAME
+	_ZTV10CAtSmsNack @ 111 NONAME
+	_ZTV10CAtSmsSend @ 112 NONAME
+	_ZTV10CTsyConfig @ 113 NONAME
+	_ZTV11CATGetModel @ 114 NONAME
+	_ZTV11CCommEngine @ 115 NONAME
+	_ZTV11CCommReader @ 116 NONAME
+	_ZTV11CCommWriter @ 117 NONAME
+	_ZTV11CGetPhoneID @ 118 NONAME
+	_ZTV12CATDialVoice @ 119 NONAME
+	_ZTV12CATGetSignal @ 120 NONAME
+	_ZTV12CRequestBase @ 121 NONAME
+	_ZTV13CATGetBattery @ 122 NONAME
+	_ZTV13CATGprsAttach @ 123 NONAME
+	_ZTV13CATGprsDetach @ 124 NONAME
+	_ZTV13CAtPhbkEnRead @ 125 NONAME
+	_ZTV13CAtSmsReceive @ 126 NONAME
+	_ZTV13CGetFdnStatus @ 127 NONAME
+	_ZTV13CStringParser @ 128 NONAME
+	_ZTV14CATGetCellInfo @ 129 NONAME
+	_ZTV14CATGetRevision @ 130 NONAME
+	_ZTV14CATNetworkInfo @ 131 NONAME
+	_ZTV14CATUnsolicited @ 132 NONAME
+	_ZTV14CAtCommandBase @ 133 NONAME
+	_ZTV14CLtsyFactoryV1 @ 134 NONAME
+	_ZTV15CATGetFdnStatus @ 135 NONAME
+	_ZTV15CAtSmsStoreInfo @ 136 NONAME
+	_ZTV15CAtSmsStoreRead @ 137 NONAME
+	_ZTV15CLtsySatHandler @ 138 NONAME
+	_ZTV15CLtsySimHandler @ 139 NONAME
+	_ZTV15CLtsySmsHandler @ 140 NONAME
+	_ZTV16CATDetectNetwork @ 141 NONAME
+	_ZTV16CATGPRSSetConfig @ 142 NONAME
+	_ZTV16CATGetFdnSupport @ 143 NONAME
+	_ZTV16CATHelperCommand @ 144 NONAME
+	_ZTV16CATSelectNetwork @ 145 NONAME
+	_ZTV16CAtPhbkEnGetInfo @ 146 NONAME
+	_ZTV16CAtPhbkEnReadAll @ 147 NONAME
+	_ZTV16CAtPhbkStoreRead @ 148 NONAME
+	_ZTV16CAtSmsStoreWrite @ 149 NONAME
+	_ZTV16CGetOperatorNmae @ 150 NONAME
+	_ZTV16CInitializePhone @ 151 NONAME
+	_ZTV17CATGetModemStatus @ 152 NONAME
+	_ZTV17CATNotifyCellInfo @ 153 NONAME
+	_ZTV17CAtPhbkStoreCache @ 154 NONAME
+	_ZTV17CAtPhbkStoreWrite @ 155 NONAME
+	_ZTV17CAtSmsStoreDelete @ 156 NONAME
+	_ZTV17CLtsyPhoneHandler @ 157 NONAME
+	_ZTV17CRespondBufParser @ 158 NONAME
+	_ZTV18CATGetManufacturer @ 159 NONAME
+	_ZTV18CAtPhbkStoreDelete @ 160 NONAME
+	_ZTV18CAtSmsStoreReadAll @ 161 NONAME
+	_ZTV19CATGetPhoneCellInfo @ 162 NONAME
+	_ZTV19CATSwitchOnLineMode @ 163 NONAME
+	_ZTV19CActiveCommandStore @ 164 NONAME
+	_ZTV19CAsyncHelperRequest @ 165 NONAME
+	_ZTV19CAtMessageStoreInfo @ 166 NONAME
+	_ZTV19CGlobalPhonemanager @ 167 NONAME
+	_ZTV20CATGprsContextDelete @ 168 NONAME
+	_ZTV20CATGprsNtwkRegStatus @ 169 NONAME
+	_ZTV20CATGprsSetProfileReq @ 170 NONAME
+	_ZTV20CATSelectNetworkMode @ 171 NONAME
+	_ZTV20CATSetNotifyCellInfo @ 172 NONAME
+	_ZTV20CAtSmsStoreDeleteAll @ 173 NONAME
+	_ZTV20CLtsySecurityHandler @ 174 NONAME
+	_ZTV21CATCommandControlBase @ 175 NONAME
+	_ZTV21CATGPRSGetContextAddr @ 176 NONAME
+	_ZTV21CATGprsContextConnect @ 177 NONAME
+	_ZTV21CATWaitForCallHandler @ 178 NONAME
+	_ZTV21CInitialisePdpContext @ 179 NONAME
+	_ZTV21CLtsyPhonebookHandler @ 180 NONAME
+	_ZTV22CATGprsContextActivate @ 181 NONAME
+	_ZTV22CATNetworkRegistration @ 182 NONAME
+	_ZTV22CAtPhbkStoreInitialise @ 183 NONAME
+	_ZTV22CGetCurrentNetworkInfo @ 184 NONAME
+	_ZTV23CATHangupCommandRecords @ 185 NONAME
+	_ZTV23CLtsyCallControlHandler @ 186 NONAME
+	_ZTV23CLtsyPhonebookEnHandler @ 187 NONAME
+	_ZTV23CLtsyPhonebookOnHandler @ 188 NONAME
+	_ZTV23CNotifyBatteryAndSignal @ 189 NONAME
+	_ZTV24CATGprsContextDeactivate @ 190 NONAME
+	_ZTV24CAtPhbkGetPhoneStoreInfo @ 191 NONAME
+	_ZTV24CUnsolicitedEventMonitor @ 192 NONAME
+	_ZTV25CATNetworkRegStatusChange @ 193 NONAME
+	_ZTV25CActivatContextAndGetAddr @ 194 NONAME
+	_ZTV25CLtsyCellBroadcastHandler @ 195 NONAME
+	_ZTV26CATGprsNtwkRegStatusChange @ 196 NONAME
+	_ZTV26CLtsyPacketServicesHandler @ 197 NONAME
+	_ZTV27CLtsyCallInformationManager @ 198 NONAME
+	_ZTV33CLtsyCallControlMultipartyHandler @ 199 NONAME
+	_ZTV33CLtsySupplementaryServicesHandler @ 200 NONAME
+	_ZTV37CUnsolicitedCommandCallControlHandler @ 201 NONAME
+	_ZTV7CATChld @ 202 NONAME
+	_ZTV7CATClcc @ 203 NONAME
+	_ZTV7CATRing @ 204 NONAME
+	_ZTV9CATAnswer @ 205 NONAME
+	_ZTV9CATHangUp @ 206 NONAME
+	_ZTV9CAtSmsAck @ 207 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,26 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// system test system build description file for stltsy.dll
+// 
+//
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+PRJ_MMPFILES
+stltsy.mmp
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/group/stltsy.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,179 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file stltsy.mmp
+// 
+
+TARGETTYPE      DLL
+TARGET          licenseeskeletontsy.dll
+UID             0x1000008D 0x102870ED
+
+CAPABILITY      All -Tcb
+VENDORID        0x70000001
+
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_ESTLIB_SYSTEMINCLUDE
+
+USERINCLUDE 	../handler/inc
+USERINCLUDE 	../comms/inc 
+USERINCLUDE 	../atcommand/generic/inc 
+USERINCLUDE 	../atcommand/pktservice/inc 
+USERINCLUDE 	../atcommand/phone/inc 
+USERINCLUDE     ../atcommand/sms/inc
+USERINCLUDE 	../atcommand/callcontrol/inc 
+USERINCLUDE     ../atcommand/phonebook/inc
+USERINCLUDE     ../atcommand/phonebooken/inc
+//USERINCLUDE     ../../ctsydispatcher/exportinc
+
+SOURCEPATH      ../handler/src
+SOURCE 			cltsyfactoryv1.cpp
+SOURCE 			cltsycallcontrolhandler.cpp
+SOURCE 			cltsyphonehandler.cpp
+SOURCE 			cltsysecurityhandler.cpp
+SOURCE 			cltsyphonebookenhandler.cpp
+SOURCE 			cltsycellbroadcasthandler.cpp
+SOURCE 			cltsyphonebookonhandler.cpp
+SOURCE 			cltsyphonebookhandler.cpp
+SOURCE 			cltsysimhandler.cpp
+SOURCE 			cltsysmshandler.cpp
+SOURCE 			cltsycallcontrolmultipartyhandler.cpp
+SOURCE 			cltsysupplementaryserviceshandler.cpp
+SOURCE 			cltsypacketserviceshandler.cpp
+SOURCE 			cltsysathandler.cpp
+
+SOURCEPATH      ../comms/src
+SOURCE          stringparser.cpp
+SOURCE			commengine.cpp 
+SOURCE			commreader.cpp 
+SOURCE			commwriter.cpp
+
+SOURCEPATH      ../atcommand/generic/src
+SOURCE          tsyconfg.cpp
+SOURCE          mslogger.cpp
+SOURCE          panic.cpp
+SOURCE 			atcommandbase.cpp
+SOURCE 			activecommandstore.cpp 
+SOURCE			atmanager.cpp 
+SOURCE			globalphonemanager.cpp 
+SOURCE          respondbufparser.cpp
+SOURCE          atunsolicited.cpp
+SOURCE          unsolicitedparams.cpp
+SOURCE 			unsolicitedeventmonitor.cpp
+SOURCE 		    atcommandcontrolbase.cpp 
+SOURCE          requestbase.cpp
+SOURCE          ltsycallinformation.cpp
+SOURCE          ltsycallinformationmanager.cpp
+SOURCE          asynchelperrequest.cpp
+SOURCE          athelpercommand.cpp
+SOURCE          atswitchonlinemode.cpp
+
+
+SOURCEPATH      ../atcommand/phone/src
+SOURCE			atdetectnetwork.cpp
+SOURCE			atgetbatteryinfo.cpp
+SOURCE			atgetimei.cpp
+SOURCE			atgetmanufacturer.cpp
+SOURCE			atgetmodel.cpp
+SOURCE			atgetmodemstatus.cpp
+SOURCE			atgetnetworkinfo.cpp
+SOURCE			atgetnetworkregistrationstatus.cpp
+SOURCE			atgetrevision.cpp
+SOURCE			atgetsignalstrength.cpp
+SOURCE			atgetsimstatusready.cpp
+SOURCE			atselectnetwork.cpp
+SOURCE			atselectnetworkmode.cpp
+SOURCE			atsetnotifycell.cpp
+SOURCE			atgetphonecellinfo.cpp
+SOURCE			atgetcellinfo.cpp
+SOURCE			atnetworkregstatuschange.cpp
+SOURCE			atnotifycellinfo.cpp
+SOURCE			atgetfdnstatus.cpp
+SOURCE			atgetfdnsupport.cpp
+SOURCE			getphoneid.cpp
+SOURCE			getoperatorname.cpp
+SOURCE			getfdnstatus.cpp
+SOURCE			getcurrentnetworkinfo.cpp
+SOURCE			initializephone.cpp
+SOURCE			notifybatteryandsignal.cpp
+
+
+SOURCEPATH      ../atcommand/pktservice/src
+SOURCE			atgprsattach.cpp
+SOURCE			atgprsdetach.cpp
+SOURCE			atgprsntwkregstatus.cpp
+SOURCE			atgprscontextactivate.cpp
+SOURCE			atgprscontextdeactivate.cpp
+SOURCE			atgprscontextdelete.cpp
+SOURCE			atgprsconfig.cpp
+SOURCE			atgprssetqosprofile.cpp
+SOURCE			initialisepdpcontext.cpp
+SOURCE			atgprsntwkregstatuschange.cpp
+SOURCE			activatecontextandgetaddr.cpp
+SOURCE			atgprsgetcontextaddr.cpp
+//SOURCE			gprscontextdeactivate.cpp
+SOURCE			atgprscontextconnect.cpp
+
+SOURCEPATH      ../atcommand/callcontrol/src
+SOURCE          atdialvoice.cpp
+SOURCE          athangup.cpp
+SOURCE          atclcc.cpp
+SOURCE          atring.cpp
+SOURCE          atwaitforcallhandler.cpp
+SOURCE          atanswer.cpp
+SOURCE          atchld.cpp
+SOURCE          unsolicitedcommandcallcontrolhandler.cpp
+SOURCE          atdtmfvts.cpp
+SOURCE          athangupcommandrecords.cpp
+
+SOURCEPATH      ../atcommand/sms/src
+SOURCE          smsatutil.cpp
+SOURCE          atsmsack.cpp
+SOURCE          atsmsstoreinfo.cpp 
+SOURCE          atmessagestoreinfo.cpp
+SOURCE          atsmssend.cpp
+SOURCE          atsmsstorewrite.cpp   
+SOURCE          atsmsstoreread.cpp
+SOURCE          atsmsreceive.cpp
+SOURCE          atsmsstoredelete.cpp
+SOURCE          atsmsstorereadall.cpp
+
+SOURCEPATH      ../atcommand/phonebook/src
+SOURCE          atphbkgetphonestoreinfo.cpp
+SOURCE          atphbkstoreinitialise.cpp
+SOURCE          atphbkstorewrite.cpp
+SOURCE          atphbkstoreread.cpp
+SOURCE          atphbkstorecache.cpp
+SOURCE          atphbkstoredelete.cpp
+
+SOURCEPATH      ../atcommand/phonebooken/src
+SOURCE          atphbkengetinfo.cpp
+SOURCE          atphbkenread.cpp
+SOURCE          atphbkenreadall.cpp
+
+LIBRARY 		euser.lib
+LIBRARY         ctsydispatcher.lib
+LIBRARY			etelmm.lib
+LIBRARY			etelpckt.lib
+LIBRARY         flogger.lib
+LIBRARY			estlib.lib
+LIBRARY 		estor.lib
+LIBRARY         customapi.lib
+LIBRARY	        commsdat.lib
+LIBRARY         c32.lib
+LIBRARY         secutil.lib
+LIBRARY         efsrv.lib
+
+// For logging
+#include <comms-infras/commsdebugutility.mmh>
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsycallcontrolhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,198 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyCallControlHandler
+
+#ifndef __CLTSYDISPATCHCALLCONTROLHANDLER_H_
+#define __CLTSYDISPATCHCALLCONTROLHANDLER_H_
+
+//system include
+#include <e32std.h>
+#include <e32base.h>
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchcallcontrolinterface.h>
+#include "misdispatchinterfacesupported.h"
+
+//user include
+#include "ltsymacros.h"
+
+
+// FORWARD DECLARATIONS
+class CATDialVoice;
+class CCtsyDispatcherCallback;
+class CGlobalPhonemanager;
+class CATWaitForCallHandler;
+class MLtsyUnsolicitedCommandObserver;
+class CUnsolicitedCommandCallControlHandler;
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyCallControlHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported,
+							public MLtsyDispatchCallControlAnswer,
+							public MLtsyDispatchCallControlHold,
+							public MLtsyDispatchCallControlDialEmergency,
+							public MLtsyDispatchCallControlStopDtmfTone,
+							public MLtsyDispatchCallControlSetActiveAlsLine,
+							public MLtsyDispatchCallControlSendDtmfTonesCancel,
+							public MLtsyDispatchCallControlHangUp,
+							public MLtsyDispatchCallControlResume,
+							public MLtsyDispatchCallControlSetDynamicHscsdParams,
+							public MLtsyDispatchCallControlDialVoice,
+							public MLtsyDispatchCallControlTransfer,
+							public MLtsyDispatchCallControlSendDtmfTones,
+							public MLtsyDispatchCallControlGetIdentityServiceStatus,
+							public MLtsyDispatchCallControlSwap,
+							public MLtsyDispatchCallControlLoanDataPort,
+							public MLtsyDispatchCallControlRecoverDataPort,
+							public MLtsyDispatchCallControlStartDtmfTone,
+							public MLtsyDispatchCallControlGetActiveAlsLine,
+							public MLtsyDispatchCallControlDialData,
+                            public MLtsyDispatchCallControlQueryIsEmergencyNumber,
+                            public MLtsyDispatchCallControlGetAlsPpSupport,
+                            public MLtsyDispatchCallControlGetAlsBlockedStatus,
+                            public MLtsyDispatchCallControlSetAlsBlocked,
+                            public MLtsyDispatchCallControlGetLifeTime,
+                            public MLtsyDispatchCallControlTerminateErrorCall,
+                            public MLtsyDispatchCallControlTerminateAllCalls,
+                            public MLtsyDispatchCallControlGetCallForwardingIndicator,
+							public MLtsyDispatchCallControlUpdateLifeTimer
+	{
+public:
+
+	virtual ~CLtsyCallControlHandler();
+	static CLtsyCallControlHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,  CGlobalPhonemanager* aGloblePhone);
+	static CLtsyCallControlHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback, CGlobalPhonemanager* aGloblePhone);
+
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+
+
+
+    // From MLtsyDispatchCallControlAnswer
+    virtual TInt HandleAnswerReqL(TInt aCallId, TBool aIsIsvCall);
+
+    // From MLtsyDispatchCallControlHold
+    virtual TInt HandleHoldReqL(TInt aCallId);
+
+    // From MLtsyDispatchCallControlDialEmergency
+    virtual TInt HandleDialEmergencyReqL(const TDes& aEmergencyNumber);
+
+    // From MLtsyDispatchCallControlStopDtmfTone
+    virtual TInt HandleStopDtmfToneReqL(TInt aCallId);
+
+    // From MLtsyDispatchCallControlSetActiveAlsLine
+    virtual TInt HandleSetActiveAlsLineReqL(RMobilePhone::TMobilePhoneALSLine aAlsLine);
+
+    // From MLtsyDispatchCallControlSendDtmfTonesCancel
+    virtual TInt HandleSendDtmfTonesCancelReqL(TInt aCallId);
+
+    // From MLtsyDispatchCallControlHangUp
+    virtual TInt HandleHangUpReqL(TInt aCallId, TInt aHangupCause);
+
+    // From MLtsyDispatchCallControlResume
+    virtual TInt HandleResumeReqL(TInt aCallId);
+
+    // From MLtsyDispatchCallControlSetDynamicHscsdParams
+    virtual TInt HandleSetDynamicHscsdParamsReqL(TInt aCallId, const RMobileCall::TMobileHscsdCallParamsV1& aHscsdParams);
+
+    // From MLtsyDispatchCallControlDialVoice  void CallbackCallControlDialVoiceComp(TInt aError, TInt aCallId);
+    virtual TInt HandleDialVoiceReqL(RMobilePhone::TMobilePhoneALSLine aLine, const RMobilePhone::TMobileAddress& aDialledParty, const RMobileCall::TMobileCallParamsV1& aCallParamsV1, TBool aIsIsvCall, RMobileCall::TCallParamOrigin aCallOrigin, TBool aPerformFdnCheck);
+
+    // From MLtsyDispatchCallControlTransfer
+    virtual TInt HandleTransferReqL(TInt aHeldCallId, TInt aSecondCallId);
+
+    // From MLtsyDispatchCallControlSendDtmfTones
+    virtual TInt HandleSendDtmfTonesReqL(TInt aCallId, const TDesC &aTones);
+
+    // From MLtsyDispatchCallControlGetIdentityServiceStatus
+    virtual TInt HandleGetIdentityServiceStatusReqL(RMobilePhone::TMobilePhoneIdService aService);
+
+    // From MLtsyDispatchCallControlSwap
+    virtual TInt HandleSwapReqL(TInt aHeldCallId, TInt aConnectedCallId);
+
+    // From MLtsyDispatchCallControlLoanDataPort
+    virtual TInt HandleLoanDataPortSyncL(TInt aCallId, RCall::TCommPort& aCommPort);
+
+    // From MLtsyDispatchCallControlRecoverDataPort
+    virtual TInt HandleRecoverDataPortSyncL(TInt aCallId, RCall::TCommPort& aCommPort);
+
+    // From MLtsyDispatchCallControlStartDtmfTone
+    virtual TInt HandleStartDtmfToneReqL(TInt aCallId, const TChar& aTone);
+
+	// From MLtsyDispatchCallControlGetActiveAlsLine
+	virtual TInt HandleGetActiveAlsLineReqL();
+
+	// From MLtsyDispatchCallControlDialData
+	virtual TInt HandleDialDataReqL(const RMobilePhone::TMobileAddress& aDialledParty, const RMobileCall::TMobileDataCallParamsV1& aCallParamsV1, TBool aPerformFdnCheck);
+
+	// From MLtsyDispatchCallControlQueryIsEmergencyNumber
+	virtual TInt HandleQueryIsEmergencyNumberSyncL(const TDesC& aNumber, TBool& aIsEmergencyNumber);
+	
+	// From MLtsyDispatchCallControlUpdateLifeTimer
+	virtual TInt HandleUpdateLifeTimerReqL(TUint32 aDuration);
+
+    // From MLtsyDispatchCallControlGetAlsPpSupport
+    virtual TInt HandleGetAlsPpSupportL();
+
+    // From MLtsyDispatchCallControlGetAlsBlockedStatus
+    virtual TInt HandleGetAlsBlockedStatusL();
+
+    // From MLtsyDispatchCallControlSetAlsBlocked
+    virtual TInt HandleSetAlsBlockedL(RMmCustomAPI::TSetAlsBlock aBlocked);
+
+    // From MLtsyDispatchCallControlGetLifeTime
+    virtual TInt HandleGetLifeTimeL();
+
+    // From MLtsyDispatchCallControlTerminateErrorCall
+    virtual TInt HandleTerminateErrorCallL(TInt aCallId);
+
+    // From MLtsyDispatchCallControlTerminateAllCalls
+    virtual TInt HandleTerminateAllCallsL();
+
+    // From MLtsyDispatchCallControlGetCallForwardingIndicatorStatus
+    virtual TInt HandleGetCallForwardingIndicatorL();
+    
+public:
+	MLtsyUnsolicitedCommandObserver* GetUnsolicitedCallControlHandler() const;
+    
+private:
+
+	CLtsyCallControlHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback, CGlobalPhonemanager* aGloblePhone);
+	void ConstructL();
+
+private:
+
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 *
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+	//Not Owned
+	CGlobalPhonemanager* iGloblePhone;
+	
+	//monitor incoming call
+	CATWaitForCallHandler* iWaitForCall;
+	
+	//Process unsolicited command
+	CUnsolicitedCommandCallControlHandler* iUnsolicitedHandler;
+	
+	//Emergency call
+	CATDialVoice* iEmergencyCall;
+	}; // class CLtsyCallControlHandler
+
+#endif // __CLTSYDISPATCHCALLCONTROLHANDLER_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsycallcontrolmultipartyhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,99 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyCallControlMultipartyHandler
+
+#ifndef __CLTSYDISPATCHCALLCONTROLMULTIPARTYHANDLER_H_
+#define __CLTSYDISPATCHCALLCONTROLMULTIPARTYHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchcallcontrolmultipartyinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyCallControlMultipartyHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported,
+							public MLtsyDispatchCallControlMultipartyConferenceHangUp,
+							public MLtsyDispatchCallControlMultipartyConferenceAddCall,
+							public MLtsyDispatchCallControlMultipartyCreateConference,
+							public MLtsyDispatchCallControlMultipartyConferenceSwap,
+							public MLtsyDispatchCallControlMultipartyConferenceGoOneToOne
+	{
+public:
+
+	virtual ~CLtsyCallControlMultipartyHandler();
+	static CLtsyCallControlMultipartyHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsyCallControlMultipartyHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+
+
+
+    // From MLtsyDispatchCallControlMultipartyConferenceHangUp
+    virtual TInt HandleConferenceHangUpReqL(const RArray<TInt>& aCallIds);
+
+    // From MLtsyDispatchCallControlMultipartyConferenceAddCall
+    virtual TInt HandleConferenceAddCallReqL(TInt aCallId, TInt aExistingCallId);
+
+    // From MLtsyDispatchCallControlMultipartyCreateConference
+    virtual TInt HandleCreateConferenceReqL(TInt aHeldCallId, TInt aSecondCallId);
+
+    // From MLtsyDispatchCallControlMultipartyConferenceSwap
+    virtual TInt HandleConferenceSwapReqL(TInt aHeldCallId, TInt aConnectedCallId);
+
+    // From MLtsyDispatchCallControlMultipartyConferenceGoOneToOne
+    virtual TInt HandleConferenceGoOneToOneReqL(TInt aCallId);
+
+private:
+
+	CLtsyCallControlMultipartyHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+
+	// Not owned
+
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 *
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+
+public:
+
+
+	}; // class CLtsyCallControlMultipartyHandler
+
+#endif // __CLTSYDISPATCHCALLCONTROLMULTIPARTYHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsycellbroadcasthandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,99 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyCellBroadcastHandler
+
+#ifndef __CLTSYDISPATCHCELLBROADCASTHANDLER_H_
+#define __CLTSYDISPATCHCELLBROADCASTHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchcellbroadcastinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyCellBroadcastHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchCellBroadcastSetBroadcastFilterSetting,
+							public MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage,
+							public MLtsyDispatchCellBroadcastReceiveMessageCancel,
+							public MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing,
+							public MLtsyDispatchCellBroadcastDeleteSimCbTopic
+							
+	{
+public:
+
+	virtual ~CLtsyCellBroadcastHandler();
+	static CLtsyCellBroadcastHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsyCellBroadcastHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+	
+    // From MLtsyDispatchCellBroadcastSetBroadcastFilterSetting
+    virtual TInt HandleSetBroadcastFilterSettingReqL(RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter aFilterSetting);
+
+    // From MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage
+    virtual TInt HandleActivateBroadcastReceiveMessageReqL(RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter aFilterSetting);
+
+    // From MLtsyDispatchCellBroadcastReceiveMessageCancel
+    virtual TInt HandleReceiveMessageCancelReqL(RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter aFilterSetting);
+    
+    // From MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing
+    virtual TInt HandleStartSimCbTopicBrowsingReqL();
+    
+    // From MLtsyDispatchCellDeleteSimCbTopic
+    virtual TInt HandleDeleteSimCbTopicReqL(TUint aIndex, TBool aDeleteFlag);
+
+private:
+	
+	CLtsyCellBroadcastHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+public:
+
+
+	}; // class CLtsyCellBroadcastHandler
+
+#endif // __CLTSYDISPATCHCELLBROADCASTHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyfactoryv1.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,94 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file ltsyfactoryv1.h
+// This contains CLtsyFactoryV1 which acting an interface for Lincesee dll
+//
+#ifndef CLTSYFACTORYV1_H
+#define CLTSYFACTORYV1_H
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+#include <e32def.h>
+#include <ctsy/ltsy/ltsylogger.h>
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+#include "ltsymacros.h"
+
+//user include
+#include "atunsolicitedobserver.h"
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+class CLtsyCallControlHandler;
+class CLtsyPhoneHandler;
+class CLtsySecurityHandler;
+class CLtsyPhonebookEnHandler;
+class CLtsyCellBroadcastHandler;
+class CLtsyPhonebookOnHandler;
+class CLtsyPhonebookHandler;
+class CLtsySimHandler;
+class CLtsySmsHandler;
+class CLtsyCallControlMultipartyHandler;
+class CLtsySupplementaryServicesHandler;
+class CLtsyPacketServicesHandler;
+class CLtsySatHandler;
+class CGlobalPhonemanager;
+class CUnsolicitedEventMonitor;
+
+class CLtsyFactoryV1 : public CBase, public MLtsyDispatchFactoryV1  
+	{
+public:
+	
+	// Public constructor because this object is constructed in two phases where
+	// the second phase ConstructL() is called explicitly by the creator.
+	CLtsyFactoryV1(); 
+	
+	virtual ~CLtsyFactoryV1();
+
+	// From MLtsyDispatchFactoryV1 (or its base class)
+	virtual void Release();
+	virtual TInt GetDispatchHandler(
+			TLtsyDispatchInterfaceApiId aDispatchInterfaceId,
+			TAny*& aDispatchInterface);
+	virtual MLtsyFactoryBase::TCtsyInterfaceVersion Version();
+	virtual void ConstructL(CCtsyDispatcherCallback& aCallback);
+	virtual TBool IsDispatchInterfaceSupported(TInt aFuncUnitId, TLtsyDispatchInterfaceApiId aDispatchApiId);
+	virtual void IsCallbackIndicatorSupported(TInt aFuncUnitId, TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	virtual CTsySatMessagingBase* GetSatMessagingService(MCtsySatService& aSatMessagingService);
+private:
+	// To prevent explicit construction in this way
+	void NewL() {};
+	void NewLC() {};
+	
+private: // Owned
+	// Dispatch Handlers
+	CLtsyCallControlHandler* iLtsyDispatchCallControlHandler;
+	CLtsyPhoneHandler* iLtsyDispatchPhoneHandler;
+	CLtsySecurityHandler* iLtsyDispatchSecurityHandler;
+	CLtsyPhonebookEnHandler* iLtsyDispatchPhonebookEnHandler;
+	CLtsyCellBroadcastHandler* iLtsyDispatchCellBroadcastHandler;
+	CLtsyPhonebookOnHandler* iLtsyDispatchPhonebookOnHandler;
+	CLtsyPhonebookHandler* iLtsyDispatchPhonebookHandler;
+	CLtsySimHandler* iLtsyDispatchSimHandler;
+	CLtsySmsHandler* iLtsyDispatchSmsHandler;
+	CLtsyCallControlMultipartyHandler* iLtsyDispatchCallControlMultipartyHandler;
+	CLtsySupplementaryServicesHandler* iLtsyDispatchSupplementaryServicesHandler;
+	CLtsyPacketServicesHandler* iLtsyDispatchPacketServicesHandler;
+	CLtsySatHandler* iLtsyDispatchSatHandler;
+	CUnsolicitedEventMonitor* iUnsolicitedEventMonitor;
+public:	
+	CGlobalPhonemanager* iGlobalPhone;
+	}; // class CLtsyFactoryV1
+
+#endif // CLTSYFACTORYV1_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsypacketserviceshandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,224 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPacketServicesHandler
+
+#ifndef __CLTSYDISPATCHPACKETSERVICESHANDLER_H_
+#define __CLTSYDISPATCHPACKETSERVICESHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchpacketservicesinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+struct TContextInfomation
+	{
+	RPacketContext::TContextConfigGPRS iDefContextConfigGPRS;
+	RPacketQoS::TQoSGPRSRequested iQoSConfig;
+	RPacketService::TContextInfo iInfo;
+	TInt iContextID;
+	};
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+class CGlobalPhonemanager;
+class CAsyncHelperRequest;
+class CATGprsNtwkRegStatusChange;
+class CInitialisePdpContext;
+
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyPacketServicesHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchPacketServicesPacketAttach,
+							public MLtsyDispatchPacketServicesGetPacketAttachMode,
+							public MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus,
+							public MLtsyDispatchPacketServicesPacketDetach,
+							public MLtsyDispatchPacketServicesSetPdpContextConfig,
+							public MLtsyDispatchPacketServicesModifyActivePdpContext,
+							public MLtsyDispatchPacketServicesInitialisePdpContext,
+							public MLtsyDispatchPacketServicesDeletePdpContext,
+							public MLtsyDispatchPacketServicesSetPacketAttachMode,
+							public MLtsyDispatchPacketServicesNotifyPacketStatusChange,
+							public MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams,
+							public MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params,
+							public MLtsyDispatchPacketServicesActivatePdpContext,
+							public MLtsyDispatchPacketServicesSetPdpContextQosGprs,
+							public MLtsyDispatchPacketServicesSetPdpContextQosR99R4,
+							public MLtsyDispatchPacketServicesSetPdpContextQosR5,
+							public MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest,
+							public MLtsyDispatchPacketServicesDeactivatePdpContext,
+							public MLtsyDispatchPacketServicesAddPacketFilter,
+							public MLtsyDispatchPacketServicesGetStatus,
+							public MLtsyDispatchPacketServicesGetStaticCapabilities,
+							public MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists,
+							public MLtsyDispatchPacketServicesGetMaxNoActiveServices,
+							public MLtsyDispatchPacketServicesInitialiseMbmsContext,
+							public MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus,
+							public MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList,
+							public MLtsyDispatchPacketServicesUpdateMbmsSessionList,
+							public MLtsyDispatchPacketServicesRemovePacketFilter
+
+							
+	{
+public:
+
+	virtual ~CLtsyPacketServicesHandler();
+	static CLtsyPacketServicesHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	static CLtsyPacketServicesHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchPacketServicesPacketAttach  //finished
+    virtual TInt HandlePacketAttachReqL();
+
+    // From MLtsyDispatchPacketServicesGetPacketAttachMode  //Nosupport
+    virtual TInt HandleGetPacketAttachModeReqL();
+
+    // From MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus //finished
+    virtual TInt HandleGetPacketNetworkRegistrationStatusReqL();
+
+    // From MLtsyDispatchPacketServicesPacketDetach  //finished
+    virtual TInt HandlePacketDetachReqL();
+
+    // From MLtsyDispatchPacketServicesSetPdpContextConfig  //implementing
+    virtual TInt HandleSetPdpContextConfigReqL(const TDesC& aContextId,
+    				const TDesC8& aAccessPointName,
+    				const RPacketContext::TProtocolType aPdpType,
+    				const TDesC8& aPdpAddress,
+    				const TDesC8& aPcoBuffer);
+
+    // From MLtsyDispatchPacketServicesModifyActivePdpContext
+    virtual TInt HandleModifyActivePdpContextReqL(const TDesC& aContextName);
+
+    // From MLtsyDispatchPacketServicesInitialisePdpContext  //implementing
+    virtual TInt HandleInitialisePdpContextReqL(const TDesC& aPrimaryContextName, const TDesC& aSecondaryContextName);
+
+    // From MLtsyDispatchPacketServicesDeletePdpContext
+    virtual TInt HandleDeletePdpContextReqL(const TDesC& aContextName);
+
+    // From MLtsyDispatchPacketServicesSetPacketAttachMode
+    virtual TInt HandleSetPacketAttachModeReqL(RPacketService::TAttachMode aAttachMode);
+
+    // From MLtsyDispatchPacketServicesNotifyPacketStatusChange
+    virtual TInt HandleNotifyPacketStatusChangeReqL();
+
+    // From MLtsyDispatchPacketServicesSetDefaultPdpGprsContextParams
+    virtual TInt HandleSetDefaultPdpContextGprsParamsReqL(const RPacketContext::TContextConfigGPRS& aContextConfigGprs);
+
+    // From MLtsyDispatchPacketServicesSetDefaultPdpR99R4ContextParams
+    virtual TInt HandleSetDefaultPdpContextR99R4ParamsReqL(const RPacketContext::TContextConfigR99_R4& aContextConfigR99R4);    
+    
+    // From MLtsyDispatchPacketServicesActivatePdpContext
+    virtual TInt HandleActivatePdpContextReqL(const TDesC& aContextName);
+
+    // From MLtsyDispatchPacketServicesSetPdpContextQosGprs    
+    virtual TInt HandleSetPdpContextQosGprsReqL(const TDesC& aContextName, const RPacketQoS::TQoSGPRSRequested& aQoSConfig);
+    
+    // From MLtsyDispatchPacketServicesSetPdpContextQosGprs    
+    virtual TInt HandleSetPdpContextQosR99R4ReqL(const TDesC& aContextName, const RPacketQoS::TQoSR99_R4Requested& aQoSConfig);
+        
+    // From MLtsyDispatchPacketServicesSetPdpContextQosGprs    
+    virtual TInt HandleSetPdpContextQosR5ReqL(const TDesC& aContextName, const RPacketQoS::TQoSR5Requested& aQoSConfig);        
+
+    // From MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest
+    virtual TInt HandleRejectNetworkInitiatedContextActivationRequestReqL();
+
+    // From MLtsyDispatchPacketServicesDeactivatePdpContext
+    virtual TInt HandleDeactivatePdpContextReqL(const TDesC& aContextName);
+
+    // From MLtsyDispatchPacketServicesAddPacketFilter
+    virtual TInt HandleAddPacketFilterSyncL(const TDesC& aContextName,  CArrayFixFlat<RPacketContext::TPacketFilterV2>& aContextFilter);
+    
+    // From MLtsyDispatchPacketServicesGetStatus
+    virtual TInt HandleGetStatusReqL();
+    
+    // From MLtsyDispatchPacketServicesRemovePacketFilter
+    virtual TInt HandleRemovePacketFilterSyncL(const TDesC& aContextName,  TInt aFilterId);
+    
+
+    // From MLtsyDispatchPacketServicesGetStaticCapabilities
+    virtual TInt HandleGetStaticCapabilitiesReqL();
+    
+    // From MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists
+    virtual TInt HandleGetMaxNoMonitoredServiceListsReqL();
+    
+    // From MLtsyDispatchPacketServicesGetMaxNoActiveServices
+    virtual TInt HandleGetMaxNoActiveServicesReqL();
+    
+    // From MLtsyDispatchPacketServicesInitialiseMbmsContext
+    virtual TInt HandleInitialiseMbmsContextReqL(const TDesC& aContextName);
+    
+    // From MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus
+    virtual TInt HandleGetMbmsNetworkServiceStatusReqL(TBool aAttemptAttach);
+
+    // From MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList
+    virtual TInt HandleUpdateMbmsMonitorServiceListsReqL(TMbmsAction aAction, const CPcktMbmsMonitoredServiceList& aServiceList, const CPcktMbmsMonitoredServiceList& aChangeList);
+
+    // From MLtsyDispatchPacketServicesUpdateMbmsSessionList
+    virtual TInt HandleUpdateMbmsSessionListReqL(const TDesC& aContextName, TMbmsAction aAction, TMbmsSessionId aSessionId, const TMbmsSessionIdList& aServiceList);
+    
+
+    
+
+	TDes* NameOfLastAddedContext();
+	TInt MaxNumberOfContexts();
+	TInt GetContext(const TDesC& aName);
+
+private:
+	
+	
+	CLtsyPacketServicesHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	void ConstructL();
+	
+	
+	TInt GenerateNewContextCid(const TDesC& aName);
+	void SetDefaultContextConfigGPRS(const RPacketContext::TContextConfigGPRS* aContextConfigGPRS);
+	//void ContextConfigGPRS(RPacketContext::TContextConfigGPRS* aContextConfigGPRS);
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	CGlobalPhonemanager* iGloblePhone;
+	CAsyncHelperRequest* iAsyncHelperRequest;
+	CATGprsNtwkRegStatusChange* iNtwkRegStatusChange;
+	CInitialisePdpContext* iInitialisePdpContext;
+		
+	RPacketContext::TContextConfigGPRS iDefContextConfigGPRS;
+	}; // class CLtsyPacketServicesHandler
+
+#endif // __CLTSYDISPATCHPACKETSERVICESHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonebookenhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,96 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhonebookEnHandler
+
+#ifndef __CLTSYDISPATCHPHONEBOOKENHANDLER_H_
+#define __CLTSYDISPATCHPHONEBOOKENHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchphonebookeninterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+class CGlobalPhonemanager;
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyPhonebookEnHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchPhonebookEnStoreGetInfo,
+							public MLtsyDispatchPhonebookEnStoreReadAll,
+							public MLtsyDispatchPhonebookEnStoreReadEntry
+							
+	{
+public:
+
+	virtual ~CLtsyPhonebookEnHandler();
+	static CLtsyPhonebookEnHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	static CLtsyPhonebookEnHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchPhonebookEnStoreGetInfo
+    virtual TInt HandleStoreGetInfoReqL();
+
+    // From MLtsyDispatchPhonebookEnStoreReadAll
+    virtual TInt HandleStoreReadAllReqL();
+
+    // From MLtsyDispatchPhonebookEnStoreReadEntry
+    virtual TInt HandleStoreReadEntryReqL(TInt aIndex);
+
+
+private:
+	
+	CLtsyPhonebookEnHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+	//Not Owned
+	CGlobalPhonemanager* iGloblePhone;
+	
+public:
+
+
+	}; // class CLtsyPhonebookEnHandler
+
+#endif // __CLTSYDISPATCHPHONEBOOKENHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonebookhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,142 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhonebookHandler
+
+#ifndef __CLTSYDISPATCHPHONEBOOKHANDLER_H_
+#define __CLTSYDISPATCHPHONEBOOKHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchphonebookinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+class CGlobalPhonemanager;
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyPhonebookHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchPhonebookStoreReadEntry,
+							public MLtsyDispatchPhonebookStoreDeleteEntry,
+							public MLtsyDispatchPhonebookStoreCache,
+							public MLtsyDispatchPhonebookStoreCacheCancel,
+							public MLtsyDispatchPhonebookStoreGetPhonebookInfo,
+							public MLtsyDispatchPhonebookStoreInitialise,
+							public MLtsyDispatchPhonebookStoreDeleteAll,
+							public MLtsyDispatchPhonebookSmsStoreReadAll,
+							public MLtsyDispatchPhonebookStoreWriteEntry,
+							public MLtsyDispatchPhonebookGetPhoneStoreInfo,
+							public MLtsyDispatchPhonebookSmsStoreDeleteEntry,
+							public MLtsyDispatchPhonebookSmsStoreDeleteAll,
+							public MLtsyDispatchPhonebookSmsStoreGetInfo,
+							public MLtsyDispatchPhonebookSmsStoreReadEntry,
+							public MLtsyDispatchPhonebookSmsStoreWriteEntry
+			
+	{
+public:
+
+	virtual ~CLtsyPhonebookHandler();
+	static CLtsyPhonebookHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	static CLtsyPhonebookHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchPhonebookStoreReadEntry
+    virtual TInt HandleStoreReadEntryReqL(DispatcherPhonebook::TPhonebook aPhonebook, TInt aIndex, TInt aNumberOfSlots);
+
+    // From MLtsyDispatchPhonebookStoreDeleteEntry
+    virtual TInt HandleStoreDeleteEntryReqL(DispatcherPhonebook::TPhonebook aPhonebook, TInt aIndex);
+
+    // From MLtsyDispatchPhonebookStoreCache
+    virtual TInt HandleStoreCacheReqL(DispatcherPhonebook::TPhonebook aPhonebook);
+    
+    // From MLtsyDispatchPhonebookStoreCacheCancel
+    virtual TInt HandleStoreCacheCancelReqL(DispatcherPhonebook::TPhonebook aPhonebook);
+
+    // From MLtsyDispatchPhonebookStoreGetPhonebookInfo
+    virtual TInt HandleStoreGetPhonebookInfoReqL(DispatcherPhonebook::TPhonebook aPhonebook);
+
+    // From MLtsyDispatchPhonebookStoreInitialise
+    virtual TInt HandleStoreInitialiseReqL();
+
+    // From MLtsyDispatchPhonebookStoreDeleteAll
+    virtual TInt HandleStoreDeleteAllReqL(DispatcherPhonebook::TPhonebook aPhonebook);
+
+    // From MLtsyDispatchPhonebookStoreWriteEntry
+    virtual TInt HandleStoreWriteEntryReqL(DispatcherPhonebook::TPhonebook aPhonebook, const TDesC8& aEntry);
+
+    // From MLtsyDispatchPhonebookGetPhoneStoreInfo
+    virtual TInt HandleGetPhoneStoreInfoReqL(const TDesC& aStoreName);
+    
+    // From MLtsyDispatchPhonebookSmsStoreReadAll
+    virtual TInt HandleSmsStoreReadAllReqL();
+
+    // From MLtsyDispatchPhonebookSmsStoreDeleteEntry
+    virtual TInt HandleSmsStoreDeleteEntryReqL(TInt aIndex);
+
+    // From MLtsyDispatchPhonebookSmsStoreDeleteAll
+    virtual TInt HandleSmsStoreDeleteAllReqL();
+
+    // From MLtsyDispatchPhonebookSmsStoreGetInfo
+    virtual TInt HandleSmsStoreGetInfoReqL();
+
+    // From MLtsyDispatchPhonebookSmsStoreReadEntry
+    virtual TInt HandleSmsStoreReadEntryReqL(TInt aIndex);
+
+    // From MLtsyDispatchPhonebookSmsStoreWriteEntry
+    virtual TInt HandleSmsStoreWriteEntryReqL(const RMobileSmsStore::TMobileGsmSmsEntryV1& aMobileGsmEntry);
+public:
+	
+	/*virtual void LtsyIPCDataCallBack(TInt aIpc, TInt aError, TAny* aParams);
+	
+	virtual void LtsyINDDataCallBack(TInt aInd, TInt aError, TAny* aParams);*/
+private:
+	
+	CLtsyPhonebookHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	CGlobalPhonemanager*     iGloblePhone;
+public:
+
+
+	}; // class CLtsyPhonebookHandler
+
+#endif // __CLTSYDISPATCHPHONEBOOKHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonebookonhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,117 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhonebookOnHandler
+
+#ifndef __CLTSYDISPATCHPHONEBOOKONHANDLER_H_
+#define __CLTSYDISPATCHPHONEBOOKONHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchphonebookoninterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyPhonebookOnHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchPhonebookOnStoreRead,
+							public MLtsyDispatchPhonebookOnStoreDeleteAll,
+							public MLtsyDispatchPhonebookOnStoreReadEntry,
+							public MLtsyDispatchPhonebookOnStoreGetInfo,
+							public MLtsyDispatchPhonebookOnStoreGetReadStoreSize,
+							public MLtsyDispatchPhonebookOnStoreDeleteEntry,
+							public MLtsyDispatchPhonebookOnStoreWriteEntry,
+							public MLtsyDispatchPhonebookOnStoreWrite,
+							public MLtsyDispatchPhonebookOnStoreGetStoreSize
+							
+	{
+public:
+
+	virtual ~CLtsyPhonebookOnHandler();
+	static CLtsyPhonebookOnHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsyPhonebookOnHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchPhonebookOnStoreRead
+    virtual TInt HandleStoreReadReqL(TInt aIndex);
+
+    // From MLtsyDispatchPhonebookOnStoreDeleteAll
+    virtual TInt HandleStoreDeleteAllReqL();
+
+    // From MLtsyDispatchPhonebookOnStoreReadEntry
+    virtual TInt HandleStoreReadEntryReqL(TInt aIndex);
+
+    // From MLtsyDispatchPhonebookOnStoreGetInfo
+    virtual TInt HandleStoreGetInfoReqL();
+
+    // From MLtsyDispatchPhonebookOnStoreGetReadStoreSize
+    virtual TInt HandleStoreGetReadStoreSizeReqL();
+
+    // From MLtsyDispatchPhonebookOnStoreDeleteEntry
+    virtual TInt HandleStoreDeleteEntryReqL(TInt aIndex);
+
+    // From MLtsyDispatchPhonebookOnStoreWriteEntry
+    virtual TInt HandleStoreWriteEntryReqL(const RMobileONStore::TMobileONEntryV1& aMobileOnEntry);
+
+    // From MLtsyDispatchPhonebookOnStoreWrite
+    virtual TInt HandleStoreWriteReqL(const RMobileONStore::TMobileONEntryV1& aMobileOnEntry);
+
+    // From MLtsyDispatchPhonebookOnStoreGetStoreSize
+    virtual TInt HandleStoreGetStoreSizeReqL();
+
+
+private:
+	
+	CLtsyPhonebookOnHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+public:
+
+
+	}; // class CLtsyPhonebookOnHandler
+
+#endif // __CLTSYDISPATCHPHONEBOOKONHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsyphonehandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,249 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhoneHandler
+
+#ifndef __CLTSYDISPATCHPHONEHANDLER_H_
+#define __CLTSYDISPATCHPHONEHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+#include "globalphonemanager.h"
+
+
+#include "requestbase.h"
+
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+class CRequestBase;
+
+class CInitializePhone;
+class CAsyncHelperRequest;
+class CATNetworkRegStatusChange;
+class CATNotifyCellInfo;
+class CNotifyBatteryAndSignal;
+class CATDetectNetwork;
+class CATSelectNetwork;
+
+
+class MLtsyUnsolicitedCommandObserver;
+class CUnsolicitedWindPhoneHandler;
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsyPhoneHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 		
+							public MLtsyDispatchPhoneGetFdnStatus,
+							public MLtsyDispatchPhoneGetNetworkRegistrationStatus,
+							public MLtsyDispatchPhoneGetHomeNetwork,
+							public MLtsyDispatchPhoneBootNotifyModemStatusReady,
+							public MLtsyDispatchPhoneBootNotifySimStatusReady,
+							public MLtsyDispatchPhoneSimRefreshRegister,
+							public MLtsyDispatchPhoneGetServiceProviderName,
+							public MLtsyDispatchPhoneGetPhoneId,
+							public MLtsyDispatchPhoneGetDetectedNetworks,
+							public MLtsyDispatchPhoneGetDetectedNetworksCancel,
+							public MLtsyDispatchPhoneSelectNetwork,
+							public MLtsyDispatchPhoneSelectNetworkCancel,
+							public MLtsyDispatchPhoneSetNetworkSelectionSetting,
+							public MLtsyDispatchPhoneGetCurrentNetworkInfo,
+							public MLtsyDispatchPhoneGetNetworkMode,
+							public MLtsyDispatchPhoneGetNitzInfo,
+							public MLtsyDispatchPhoneGetSignalStrength,
+							public MLtsyDispatchPhoneGetBatteryInfo,
+							public MLtsyDispatchPhoneNspsWakeup,
+                            public MLtsyDispatchPhoneSetSystemNetworkMode,
+                            public MLtsyDispatchPhoneGetCurrentSystemNetworkModes,
+                            public MLtsyDispatchPhoneResetNetServer,
+                            public MLtsyDispatchPhoneSetAlwaysOnMode,
+                            public MLtsyDispatchPhoneSetDriveMode,
+                            public MLtsyDispatchPhoneGetHspaStatus,
+                            public MLtsyDispatchPhoneSetHspaStatus,
+                            public MLtsyDispatchPhoneGetNetworkProviderName,
+                            public MLtsyDispatchPhoneGetOperatorName,
+                            public MLtsyDispatchPhoneGetCellInfo,
+							public MLtsyDispatchPhoneRegisterCellInfoChangeNotification,
+							public MLtsyDispatchPhoneGetPhoneCellInfo,
+							public MLtsyDispatchPhoneGetUsimServiceSupport,
+							public MLtsyDispatchPhoneGetCurrentActiveUsimApplication,
+							public MLtsyDispatchPhoneTerminateAllCalls,
+							public MLtsyDispatchPhoneGetSystemNetworkBand,
+							public MLtsyDispatchPhoneSetSystemNetworkBand,
+							public MIpcRequestCompleteObserver
+							
+	{
+public:
+	virtual ~CLtsyPhoneHandler();
+	static CLtsyPhoneHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	static CLtsyPhoneHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+	// From MLtsyDispatchPhoneGetFdnStatus
+	virtual TInt HandleGetFdnStatusReqL();
+
+	// From MLtsyDispatchPhoneGetNetworkRegistrationStatus
+	virtual TInt HandleGetNetworkRegistrationStatusReqL();
+
+	// From MLtsyDispatchPhoneGetHomeNetwork
+	virtual TInt HandleGetHomeNetworkReqL();
+
+	// From MLtsyDispatchPhoneBootNotifyModemStatusReady
+	virtual TInt HandleBootNotifyModemStatusReadyReqL();
+
+	// From MLtsyDispatchPhoneBootNotifySimStatusReady
+	virtual TInt HandleBootNotifySimStatusReadyReqL();
+
+	// From MLtsyDispatchPhoneSimRefreshRegister
+	virtual TInt HandleSimRefreshRegisterReqL(TUint16 aFilesToRegister);
+	
+    // From MLtsyDispatchPhoneGetServiceProviderName
+    virtual TInt HandleGetServiceProviderNameReqL();
+
+    // From MLtsyDispatchPhoneGetPhoneId
+    virtual TInt HandleGetPhoneIdReqL();
+
+    // From MLtsyDispatchPhoneGetDetectedNetworks
+    virtual TInt HandleGetDetectedNetworksReqL();
+
+    // From MLtsyDispatchPhoneGetDetectedNetworksCancel
+    virtual TInt HandleGetDetectedNetworksCancelReqL();
+
+    // From MLtsyDispatchPhoneSelectNetwork
+    virtual TInt HandleSelectNetworkReqL(TBool aIsManual, const RMobilePhone::TMobilePhoneNetworkManualSelection& aNetworkManualSelection);
+
+    // From MLtsyDispatchPhoneSelectNetworkCancel
+    virtual TInt HandleSelectNetworkCancelReqL();
+
+    // From MLtsyDispatchPhoneSetNetworkSelectionSetting
+    virtual TInt HandleSetNetworkSelectionSettingReqL(const RMobilePhone::TMobilePhoneNetworkSelectionV1& aPhoneNetworkSelection);
+    
+    // From MLtsyDispatchPhoneGetCurrentNetworkInfo
+    virtual TInt HandleGetCurrentNetworkInfoReqL();
+    
+    // From MLtsyDispatchPhoneGetNetworkMode
+    virtual TInt HandleGetNetworkModeReqL();
+    
+    // From MLtsyDispatchPhoneGetNitzInfo
+    virtual TInt HandleGetNitzInfoReqL();
+    
+    // From MLtsyDispatchPhoneGetSignalStrength
+    virtual TInt HandleGetSignalStrengthReqL();
+    
+    // From MLtsyDispatchPhoneGetBatteryInfo
+    virtual TInt HandleGetBatteryInfoReqL();
+
+	// From MLtsyDispatchPhoneNspsWakeup
+	virtual TInt HandleNspsWakeupReqL();
+
+	// From MLtsyDispatchPhoneSetSystemNetworkMode
+	virtual TInt HandleSetSystemNetworkModeReqL(RMmCustomAPI::TNetworkModeCaps aMode);
+
+	// From MLtsyDispatchPhoneGetCurrentSystemNetworkModes
+	virtual TInt HandleGetCurrentSystemNetworkModesReqL();
+
+	// From MLtsyDispatchPhoneResetNetServer
+	virtual TInt HandleResetNetServerReqL();
+
+	// From MLtsyDispatchPhoneSetAlwaysOnMode
+	virtual TInt HandleSetAlwaysOnModeReqL(RMmCustomAPI::TSetAlwaysOnMode aMode);
+
+	// From MLtsyDispatchPhoneSetDriveMode
+	virtual TInt HandleSetDriveModeReqL(RMmCustomAPI::TSetDriveMode aMode);
+    
+	// From MLtsyDispatchPhoneGetHspaStatus
+	virtual TInt HandleGetHspaStatusReqL();
+
+	// From MLtsyDispatchPhoneSetHspaStatus
+	virtual TInt HandleSetHspaStatusReqL(RMmCustomAPI::THSxPAStatus aStatus);
+    
+	// From MLtsyDispatchPhoneGetNetworkProviderName
+	virtual TInt HandleGetNetworkProviderNameReqL();
+    
+	// From MLtsyDispatchPhoneGetOperatorName
+	virtual TInt HandleGetOperatorNameReqL();
+    
+	// From MLtsyDispatchPhoneGetCellInfo
+	virtual TInt HandleGetCellInfoReqL();
+
+	// From MLtsyDispatchPhoneRegisterCellInfoChangeNotification
+    virtual TInt HandleRegisterCellInfoChangeNotificationReqL();
+    
+    // From MLtsyDispatchPhoneGetPhoneCellInfo
+    virtual TInt HandleGetPhoneCellInfoReqL();
+    
+    // From MLtsyDispatchPhoneGetUsimServiceSupport
+    virtual TInt HandleGetGetUsimServiceSupportReqL(TInt aApplicationNumber);
+    
+    // From MLtsyDispatchPhoneGetCurrentActiveUsimApplication
+    virtual TInt HandleGetCurrentActiveUsimApplicationReqL();
+
+	// From MLtsyDispatchPhoneTerminateAllCalls
+    virtual TInt HandleTerminateAllCallsReqL(TInt aCallId);
+    
+	// From MLtsyDispatchPhoneGetSystemNetworkBand
+    virtual TInt HandleGetSystemNetworkBandReqL();
+    
+    // From MLtsyDispatchPhoneSetSystemNetworkBand
+    virtual TInt HandleSetSystemNetworkBandReqL(RMmCustomAPI::TBandSelection aBand, RMmCustomAPI::TNetworkModeCaps aMode);
+    
+    // From MIpcRequestCompleteObserver
+    virtual void NotifyIpcRequestComplete(TInt aIpcId);
+       
+public:
+	MLtsyUnsolicitedCommandObserver* GetUnsolicitedCallControlHandler() const;	
+private:
+	CLtsyPhoneHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	void ConstructL();
+private:
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	CGlobalPhonemanager* iGloblePhone;
+	CInitializePhone* iInitializePhone;
+	CAsyncHelperRequest* iAsyncHelperRequest;
+	CATNetworkRegStatusChange* iNetworkRegStatusChange;
+	CATNotifyCellInfo* iNotifyCellInfo;
+	CNotifyBatteryAndSignal* iNotifyBatteryAndSignal;
+	CATDetectNetwork* iATDetectNetwork;
+	CATSelectNetwork* iATSelectNetwork;
+	
+	/**
+	 * Process unsolicited command
+	 */
+	CUnsolicitedWindPhoneHandler* iUnsolicitedHandler;
+	
+	/**
+	 * Store the one IPC Id which identify next possible IPC request to be run
+	 */
+	TInt iPendingIpcId;
+	}; // class CLtsyPhoneHandler
+
+#endif // __CLTSYDISPATCHPHONEHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysathandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,182 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySatHandler
+
+#ifndef __CLTSYDISPATCHSATHANDLER_H_
+#define __CLTSYDISPATCHSATHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchsatinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsySatHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchSatSmsDeliverReport,
+							public MLtsyDispatchSatGetImageInstance,
+							public MLtsyDispatchSatGetIconData,
+							public MLtsyDispatchSatGetClut,
+							public MLtsyDispatchSatGetDefaultBearerCapability,
+							public MLtsyDispatchSatGetSmsPpDownloadSupported,
+							public MLtsyDispatchSatGetSmsControlActivated,
+							public MLtsyDispatchSatCellBroadcastEnvelope,
+							public MLtsyDispatchSatTimingAdvance,
+							public MLtsyDispatchSatSmControlResponseData,
+							public MLtsyDispatchSatProvideLocationInfo,
+							public MLtsyDispatchSatSetPollingInterval,
+							public MLtsyDispatchSatSmsPpDownloadEnvelope,
+							public MLtsyDispatchSatLocalInformationNmr,
+							public MLtsyDispatchSatGetAccessTechnology,
+							public MLtsyDispatchSatGetUssdControlSupported,
+							public MLtsyDispatchSatCallAndSmsControlEnvelope,
+							public MLtsyDispatchSatRefreshAllowed,
+							public MLtsyDispatchSatReady,
+							public MLtsyDispatchSatPCmdNotification,
+							public MLtsyDispatchSatUssdControlEnvelopeError,
+							public MLtsyDispatchSatTimerExpirationEnvelope,
+							public MLtsyDispatchSatTerminalRsp,
+							public MLtsyDispatchSatMenuSelectionEnvelope,
+							public MLtsyDispatchSatEventDownloadEnvelope
+							
+	{
+public:
+
+	virtual ~CLtsySatHandler();
+	static CLtsySatHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsySatHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchSatSmsDeliverReport
+    virtual TInt HandleSmsDeliverReportReqL(const TDesC8& aSmsDeliverReportTpdu);
+
+    // From MLtsyDispatchSatGetImageInstance
+    virtual TInt HandleGetImageInstanceReqL(TUint8 aEfImgRecordNumber, TUint8 aInstanceNumberInEfImgRecord);
+
+    // From MLtsyDispatchSatGetIconData
+    virtual TInt HandleGetIconDataReqL(TUint8 aEfImgRecordNumber, const TDesC8& aSimFilePath);
+
+    // From MLtsyDispatchSatGetClut
+    virtual TInt HandleGetClutReqL(TUint8 aEfImgRecordNumber, TUint8 aInstanceNumberInEfImgRecord);
+
+    // From MLtsyDispatchSatGetDefaultBearerCapability
+    virtual TInt HandleGetDefaultBearerCapabilityReqL();
+
+    // From MLtsyDispatchSatGetSmsPpDownloadSupported
+    virtual TInt HandleGetSmsPpDownloadSupportedReqL();
+
+    // From MLtsyDispatchSatGetSmsControlActivated
+    virtual TInt HandleGetSmsControlActivatedReqL();
+
+    // From MLtsyDispatchSatCellBroadcastEnvelope
+    virtual TInt HandleCellBroadcastEnvelopeReqL(const TDesC8& aEnvelope);
+
+    // From MLtsyDispatchSatTimingAdvance
+    virtual TInt HandleTimingAdvanceReqL();
+
+    // From MLtsyDispatchSatSmControlResponseData
+    virtual TInt HandleSmControlResponseDataReqL(
+    		TUint8 aResult, const TDesC8& aRpDestinationAddress, const TDesC8& aTpDestinationAddress);
+
+	// From MLtsyDispatchSatGetAccessTechnology
+    virtual TInt HandleGetAccessTechnologyReqL();
+    
+    // From MLtsyDispatchSatProvideLocationInfo
+    virtual TInt HandleProvideLocationInfoReqL();
+
+    // From MLtsyDispatchSatSetPollingInterval
+    virtual TInt HandleSetPollingIntervalReqL(TUint8 aPollingInterval);
+
+    // From MLtsyDispatchSatSmsPpDownloadEnvelope
+    virtual TInt HandleSmsPpDownloadEnvelopeReqL(const TDesC8& aEnvelope);
+
+    // From MLtsyDispatchSatLocalInformationNmr
+    virtual TInt HandleLocalInformationNmrReqL();
+    
+    // From MLtsyDispatchSatGetUssdControlSupported
+    virtual TInt HandleGetUssdControlSupportedReqL();
+
+    // From MLtsyDispatchSatCallAndSmsControlEnvelope
+    virtual TInt HandleCallAndSmsControlEnvelopeReqL(const TDesC8& aEnvelope);
+
+    // From MLtsyDispatchSatRefreshAllowed
+    virtual TInt HandleRefreshAllowedReqL(const TDesC8& aRefreshFileList, const TDesC8& aAid, TUint16 aTsyCache);
+
+    // From MLtsyDispatchSatReady
+    virtual TInt HandleReadyReqL();
+
+    // From MLtsyDispatchSatPCmdNotification
+    virtual TInt HandlePCmdNotificationReqL(TUint8 aPCmdType);
+
+    // From MLtsyDispatchSatUssdControlEnvelopeError
+    virtual TInt HandleUssdControlEnvelopeErrorReqL();
+
+    // From MLtsyDispatchSatTimerExpirationEnvelope
+    virtual TInt HandleTimerExpirationEnvelopeReqL(const TDesC8& aEnvelope);
+
+    // From MLtsyDispatchSatTerminalRsp
+    virtual TInt HandleTerminalRspReqL(const TDesC8& aTerminalRsp);
+
+    // From MLtsyDispatchSatMenuSelectionEnvelope
+    virtual TInt HandleMenuSelectionEnvelopeReqL(const TDesC8& aEnvelope);
+
+    // From MLtsyDispatchSatEventDownloadEnvelope
+    virtual TInt HandleEventDownloadEnvelopeReqL(const TDesC8& aEnvelope);
+
+
+private:
+	
+	CLtsySatHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+public:
+
+
+	}; // class CLtsySatHandler
+
+#endif // __CLTSYDISPATCHSATHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysecurityhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,128 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySecurityHandler
+
+#ifndef __CLTSYDISPATCHSECURITYHANDLER_H_
+#define __CLTSYDISPATCHSECURITYHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchsecurityinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsySecurityHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchSecurityGetSecurityCodeInfo,
+							public MLtsyDispatchSecurityGetLockInfo,
+							public MLtsyDispatchSecurityAbortSecurityCode,
+							public MLtsyDispatchSecurityGetCurrentActivePin,
+							public MLtsyDispatchSecuritySetLockSetting,
+							public MLtsyDispatchSecurityVerifySecurityCode,
+							public MLtsyDispatchSecurityGetPin1DisableSupported,
+							public MLtsyDispatchSecurityCheckSecurityCode,
+							public MLtsyDispatchSecurityDisablePhoneLock,
+							public MLtsyDispatchSecurityGetCipheringInfo,
+							public MLtsyDispatchSecurityIsSecurityCodeBlocked,
+							public MLtsyDispatchSecurityCheckSecurityCodeCancel							
+	{
+public:
+
+	virtual ~CLtsySecurityHandler();
+	static CLtsySecurityHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsySecurityHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchSecurityGetSecurityCodeInfo
+    virtual TInt HandleGetSecurityCodeInfoReqL(RMobilePhone::TMobilePhoneSecurityCode aSecCode);
+
+    // From MLtsyDispatchSecurityGetLockInfo
+    virtual TInt HandleGetLockInfoReqL(RMobilePhone::TMobilePhoneLock aLockType);
+
+    // From MLtsyDispatchSecurityAbortSecurityCode
+    virtual TInt HandleAbortSecurityCodeReqL(RMobilePhone::TMobilePhoneSecurityCode aSecCode);
+
+    // From MLtsyDispatchSecurityGetCurrentActivePin
+    virtual TInt HandleGetCurrentActivePinReqL();
+
+    // From MLtsyDispatchSecuritySetLockSetting
+    virtual TInt HandleSetLockSettingReqL(RMobilePhone::TMobilePhoneLock aLock, RMobilePhone::TMobilePhoneLockSetting aSetting, const TDesC& aPassword);
+
+    // From MLtsyDispatchSecurityVerifySecurityCode
+    virtual TInt HandleVerifySecurityCodeReqL(RMobilePhone::TMobilePhoneSecurityCode aSecCode,
+    										  const RMobilePhone::TCodeAndUnblockCode& aCodes);
+
+	// From MLtsyDispatchSecurityGetPin1DisableSupported
+	virtual TInt HandleGetPin1DisableSupportedReqL();
+	
+    // From MLtsyDispatchSecurityCheckSecurityCode
+    virtual TInt HandleCheckSecurityCodeReqL(DispatcherSecurity::TSecurityCodeId aSecCodeID, const TDes& aSecCode);
+
+    // From MLtsyDispatchSecurityDisablePhoneLock
+    virtual TInt HandleDisablePhoneLockReqL(const TDesC& aSecCode);
+
+    // From MLtsyDispatchSecurityGetCipheringInfo
+    virtual TInt HandleGetCipheringInfoReqL();
+
+    // From MLtsyDispatchSecurityIsSecurityCodeBlocked
+    virtual TInt HandleIsSecurityCodeBlockedReqL(DispatcherSecurity::TSecurityCodeId aSecCodeID);
+    
+    // From MLtsyDispatchSecurityCheckSecurityCodeCancel
+    virtual TInt HandleCheckSecurityCodeCancelReqL(DispatcherSecurity::TSecurityCodeId aSecCodeID);    
+
+private:
+	
+	CLtsySecurityHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+public:
+
+
+	}; // class CLtsySecurityHandler
+
+#endif // __CLTSYDISPATCHSECURITYHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysimhandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,194 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySimHandler
+
+#ifndef __CLTSYDISPATCHSIMHANDLER_H_
+#define __CLTSYDISPATCHSIMHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchsiminterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsySimHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchSimGetApnControlListServiceStatus,
+							public MLtsyDispatchSimDeleteApnName,
+							public MLtsyDispatchSimEnumerateApnEntries,
+							public MLtsyDispatchSimChangeSecurityCode,
+							public MLtsyDispatchSimSetFdnSetting,
+							public MLtsyDispatchSimGetCustomerServiceProfile,
+							public MLtsyDispatchSimGetSubscriberId,
+							public MLtsyDispatchSimAppendApnName,
+							public MLtsyDispatchSimGetActiveIccApplicationType,
+							public MLtsyDispatchSimSetIccMessageWaitingIndicators,
+							public MLtsyDispatchSimSetApnControlListServiceStatus,
+							public MLtsyDispatchSimGetApnName,
+							public MLtsyDispatchSimSimRefreshDone,
+							public MLtsyDispatchSimGetServiceTable,
+							public MLtsyDispatchSimGetIccMessageWaitingIndicators,
+							public MLtsyDispatchSimSimLockActivate,
+							public MLtsyDispatchSimSimLockDeActivate,
+							public MLtsyDispatchSimGetAnswerToReset,
+							public MLtsyDispatchSimGetSimCardReaderStatus,
+							public MLtsyDispatchSimGetSimAuthenticationEapSimData,
+							public MLtsyDispatchSimGetSimAuthenticationEapAkaData,
+							public MLtsyDispatchSimPowerSimOff,
+							public MLtsyDispatchSimPowerSimOn,
+							public MLtsyDispatchSimReadSimFile,
+							public MLtsyDispatchSimSendApduRequest,
+							public MLtsyDispatchSimSendApduRequestV2,
+							public MLtsyDispatchSimSimWarmReset,
+							public MLtsyDispatchSimSetSimMessageStatusRead
+							
+	{
+public:
+
+	virtual ~CLtsySimHandler();
+	static CLtsySimHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsySimHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchSimGetApnControlListServiceStatus
+    virtual TInt HandleGetApnControlListServiceStatusReqL();
+
+    // From MLtsyDispatchSimDeleteApnName
+    virtual TInt HandleDeleteApnNameReqL(TUint32 aIndex);
+
+    // From MLtsyDispatchSimEnumerateApnEntries
+    virtual TInt HandleEnumerateApnEntriesReqL();
+
+    // From MLtsyDispatchSimChangeSecurityCode
+    virtual TInt HandleChangeSecurityCodeReqL(RMobilePhone::TMobilePhoneSecurityCode aSecCode,
+			   const RMobilePhone::TMobilePhonePasswordChangeV1& aPasswds);
+
+    // From MLtsyDispatchSimSetFdnSetting
+    virtual TInt HandleSetFdnSettingReqL(RMobilePhone::TMobilePhoneFdnSetting aFdnSetting);
+
+    // From MLtsyDispatchSimGetCustomerServiceProfile
+    virtual TInt HandleGetCustomerServiceProfileReqL();
+
+    // From MLtsyDispatchSimGetSubscriberId
+    virtual TInt HandleGetSubscriberIdReqL();
+
+    // From MLtsyDispatchSimAppendApnName
+    virtual TInt HandleAppendApnNameReqL(const RMobilePhone::TAPNEntryV3& aEntry);
+
+    // From MLtsyDispatchSimGetActiveIccApplicationType
+    virtual TInt HandleGetActiveIccApplicationTypeReqL();
+
+    // From MLtsyDispatchSimSetIccMessageWaitingIndicators
+    virtual TInt HandleSetIccMessageWaitingIndicatorsReqL(const RMobilePhone::TMobilePhoneMessageWaitingV1& aIndicators);
+
+    // From MLtsyDispatchSimSetApnControlListServiceStatus
+    virtual TInt HandleSetApnControlListServiceStatusReqL(RMobilePhone::TAPNControlListServiceStatus aStatus);
+
+    // From MLtsyDispatchSimGetApnName
+    virtual TInt HandleGetApnNameReqL(TUint32 aIndex);
+
+    // From MLtsyDispatchSimSimRefreshDone
+    virtual TInt HandleSimRefreshDoneReqL(TInt aError);
+    
+    // From MLtsyDispatchPhoneGetServiceTable
+    virtual TInt HandleGetServiceTableReqL(RMobilePhone::TMobilePhoneServiceTable aServiceTable);
+    
+	// From MLtsyDispatchSimGetIccMessageWaitingIndicators
+	virtual TInt HandleGetIccMessageWaitingIndicatorsReqL();
+	
+    // From MLtsyDispatchSimSimLockActivate
+    virtual TInt HandleSimLockActivateReqL(const TDesC& aPassword, RMmCustomAPI::TLockNumber aLockNumber);
+
+    // From MLtsyDispatchSimSimLockDeActivate
+    virtual TInt HandleSimLockDeActivateReqL(const TDesC& aPassword, RMmCustomAPI::TLockNumber aLockNumber);
+
+    // From MLtsyDispatchSimGetAnswerToReset
+    virtual TInt HandleGetAnswerToResetReqL(const TDesC8& aAnswerToReset);
+
+    // From MLtsyDispatchSimGetSimCardReaderStatus
+    virtual TInt HandleGetSimCardReaderStatusReqL();
+
+    // From MLtsyDispatchSimGetSimAuthenticationEapSimData
+    virtual TInt HandleGetSimAuthenticationEapSimDataReqL(const TDesC8& aRandomParameters, TInt aRFStateInfo);
+
+    // From MLtsyDispatchSimGetSimAuthenticationEapAkaData
+    virtual TInt HandleGetSimAuthenticationEapAkaDataReqL(const TDesC8& aRandomParameters, const TDesC8& aAUTN, TInt aRFStateInfo);
+    
+    // From MLtsyDispatchSimPowerSimOff
+    virtual TInt HandlePowerSimOffReqL();
+
+    // From MLtsyDispatchSimPowerSimOn
+    virtual TInt HandlePowerSimOnReqL();
+
+    // From MLtsyDispatchSimReadSimFile
+    virtual TInt HandleReadSimFileReqL(const TDesC8& aPath, TUint16 aOffset, TUint16 aSize);
+
+    // From MLtsyDispatchSimSendApduRequest
+    virtual TInt HandleSimSendApduRequestReqL(TUint8 aServiceType, TUint8 aCardReaderNumber, TUint8 aApplicationType, const TDesC8& aCommandData);
+    
+    // From MLtsyDispatchSimSendApduRequestV2
+    virtual TInt HandleSimSendApduRequestV2ReqL(TUint8 aCardReaderId, const TDesC8& aCommandData);
+
+    // From MLtsyDispatchSimSimWarmReset
+    virtual TInt HandleSimWarmResetReqL();
+
+    // From MLtsyDispatchSimSetSimMessageStatusRead
+    virtual TInt HandleSetSimMessageStatusReadReqL(const TTime& aTimestamp, TInt aTimezoneDiff);
+
+
+private:
+	
+	CLtsySimHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+public:
+
+
+	}; // class CLtsySimHandler
+
+#endif // __CLTSYDISPATCHSIMHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysmshandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,138 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySmsHandler
+
+#ifndef __CLTSYDISPATCHSMSHANDLER_H_
+#define __CLTSYDISPATCHSMSHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchsmsinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+class CGlobalPhonemanager;
+class CAtSmsReceive;
+class CAsyncHelperRequest;
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsySmsHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchSmsSendSatSms,
+							public MLtsyDispatchSmsGetSmsStoreInfo,
+							public MLtsyDispatchSmsGetSmspList,
+							public MLtsyDispatchSmsNackSmsStored,
+							public MLtsyDispatchSmsAckSmsStored,
+							public MLtsyDispatchSmsResumeSmsReception,
+							public MLtsyDispatchSmsSendSmsMessage,
+							public MLtsyDispatchSmsSendSmsMessageNoFdnCheck,
+							public MLtsyDispatchSmsSetMoSmsBearer,
+							public MLtsyDispatchSmsStoreSmspListEntry
+{
+public:
+
+	virtual ~CLtsySmsHandler();
+	static CLtsySmsHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	static CLtsySmsHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchSmsSendSatSms
+    virtual TInt HandleSendSatSmsReqL( const TDesC8& aSmsTpdu,
+    										   RMobileSmsMessaging::TMobileSmsDataFormat aDataFormat,
+    										   const RMobilePhone::TMobileAddress& aGsmServiceCentre,
+    										   TBool aMoreMessages
+    										  );
+    
+    // From MLtsyDispatchSmsGetSmsStoreInfo
+    virtual TInt HandleGetSmsStoreInfoReqL(/* TODO: Add request params here */);
+
+    // From MLtsyDispatchSmsGetSmspList
+    virtual TInt HandleGetSmspListReqL(/* TODO: Add request params here */);
+
+    // From MLtsyDispatchSmsNackSmsStored
+    virtual TInt HandleNackSmsStoredReqL(const TDesC8& aMsgPtr, TInt aRpCause);
+    
+    // From MLtsyDispatchSmsNackSmsStored
+    virtual TInt HandleNackSmsStoredReqL(TInt aRpCause);
+
+    // From MLtsyDispatchSmsAckSmsStored
+    virtual TInt HandleAckSmsStoredReqL(const TDesC8& aMsgPtr);
+    
+    // From MLtsyDispatchSmsAckSmsStored
+    virtual TInt HandleAckSmsStoredReqL();
+
+    // From MLtsyDispatchSmsResumeSmsReception
+    virtual TInt HandleResumeSmsReceptionReqL(/* TODO: Add request params here */);
+
+    // From MLtsyDispatchSmsSendSmsMessage
+    virtual TInt HandleSendSmsMessageReqL( const RMobilePhone::TMobileAddress& aDestination,
+        								   const TDesC8& aSmsTpdu,
+        								   RMobileSmsMessaging::TMobileSmsDataFormat aDataFormat,
+        								   const RMobilePhone::TMobileAddress& aGsmServiceCentre,
+        								   TBool aMoreMessages
+        								  ) ;
+
+    // From MLtsyDispatchSmsSendSmsMessageNoFdnCheck
+    virtual TInt HandleSendSmsMessageNoFdnCheckReqL( const RMobilePhone::TMobileAddress& aDestination,
+    												 const TDesC8& aSmsTpdu,
+    											     RMobileSmsMessaging::TMobileSmsDataFormat aDataFormat,
+    											     const RMobilePhone::TMobileAddress& aGsmServiceCentre,
+    											     TBool aMoreMessages
+    											    ) ;
+
+    // From MLtsyDispatchSmsSetMoSmsBearer
+    virtual TInt HandleSetMoSmsBearerReqL(RMobileSmsMessaging::TMobileSmsBearer aBearer);
+
+    // From MLtsyDispatchSmsStoreSmspList
+    virtual TInt HandleStoreSmspListEntryReqL(const RMobileSmsMessaging::TMobileSmspEntryV1& aSmsParam);
+   
+private:
+	
+	CLtsySmsHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	CGlobalPhonemanager* iGloblePhone;
+	CAtSmsReceive       *iAtSmsReceive;
+	CAsyncHelperRequest* iAsyncHelperRequest;
+	
+	}; // class CLtsySmsHandler
+
+#endif // __CLTSYDISPATCHSMSHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/cltsysupplementaryserviceshandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,145 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySupplementaryServicesHandler
+
+#ifndef __CLTSYDISPATCHSUPPLEMENTARYSERVICESHANDLER_H_
+#define __CLTSYDISPATCHSUPPLEMENTARYSERVICESHANDLER_H_
+
+// INCLUDES
+#include <e32std.h>
+#include <e32base.h>
+
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/mltsydispatchsupplementaryservicesinterface.h>
+#include "misdispatchinterfacesupported.h"
+#include "ltsymacros.h"
+
+
+
+// FORWARD DECLARATIONS
+class CCtsyDispatcherCallback;
+
+// Can be removed in real LTSY implementation
+MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+
+// CLASS DECLARATION
+
+/**
+ * Implements interfaces from the CTSY Dispatcher. The CTSY Dispatcher uses these
+ * interfaces to make requests to the Licensee LTSY.
+ */
+class CLtsySupplementaryServicesHandler : 	public CBase,
+							public MIsDispatchInterfaceSupported, 
+							public MLtsyDispatchSupplementaryServicesSendNetworkServiceRequestNoFdnCheck,
+							public MLtsyDispatchSupplementaryServicesGetCallWaitingStatus,
+							public MLtsyDispatchSupplementaryServicesSendNetworkServiceRequest,
+							public MLtsyDispatchSupplementaryServicesGetCallBarringStatus,
+							public MLtsyDispatchSupplementaryServicesSetCallBarringStatus,
+							public MLtsyDispatchSupplementaryServicesSetCallForwardingStatus,
+							public MLtsyDispatchSupplementaryServicesSetCallWaitingStatus,
+							public MLtsyDispatchSupplementaryServicesSetSsPassword,
+							public MLtsyDispatchSupplementaryServicesGetCallForwardingStatus,
+							public MLtsyDispatchSupplementaryServicesSendUssdMessage,
+							public MLtsyDispatchSupplementaryServicesSendUssdMessageNoFdnCheck,
+                            public MLtsyDispatchSupplementaryServicesSendUssdRelease,
+                            public MLtsyDispatchSupplementaryServicesClearBlacklist
+							
+	{
+public:
+
+	virtual ~CLtsySupplementaryServicesHandler();
+	static CLtsySupplementaryServicesHandler* NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	static CLtsySupplementaryServicesHandler* NewLC(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+
+	// From MIsDispatchInterfaceSupported
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId);
+	void IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask);
+	
+
+
+    // From MLtsyDispatchSupplementaryServicesSendNetworkServiceRequestNoFdnCheck
+    virtual TInt HandleSendNetworkServiceRequestNoFdnCheckReqL(const TDesC& aRequest);
+
+    // From MLtsyDispatchSupplementaryServicesGetCallWaitingStatus
+    virtual TInt HandleGetCallWaitingStatusReqL();
+
+    // From MLtsyDispatchSupplementaryServicesSendNetworkServiceRequest
+    virtual TInt HandleSendNetworkServiceRequestReqL(const TDesC& aRequest);
+
+    // From MLtsyDispatchSupplementaryServicesGetCallBarringStatus
+    virtual TInt HandleGetCallBarringStatusReqL(RMobilePhone::TMobilePhoneCBCondition aCondition);
+
+    // From MLtsyDispatchSupplementaryServicesSetCallBarringStatus
+    virtual TInt HandleSetCallBarringStatusReqL(RMobilePhone::TMobilePhoneCBCondition aCondition,
+        RMobilePhone::TMobilePhoneServiceAction aAction,
+        RMobilePhone::TMobileService aGroup,
+        const TDesC& aPassword);
+
+    // From MLtsyDispatchSupplementaryServicesSetCallForwardingStatus
+    virtual TInt HandleSetCallForwardingStatusReqL(RMobilePhone::TMobilePhoneCFCondition aCondition,
+    		RMobilePhone::TMobileService aServiceGroup,
+    		RMobilePhone::TMobilePhoneServiceAction aAction,
+    		const TDesC& aNumber,
+    		TInt aTimeout);
+
+    // From MLtsyDispatchSupplementaryServicesSetCallWaitingStatus
+    virtual TInt HandleSetCallWaitingStatusReqL(RMobilePhone::TMobileService aService,
+    		RMobilePhone::TMobilePhoneServiceAction aAction);
+
+    // From MLtsyDispatchSupplementaryServicesSetSsPassword
+    virtual TInt HandleSetSsPasswordReqL(const TDesC& aOldPassword,
+			const TDesC& aNewPassword,
+    		MLtsyDispatchSupplementaryServicesSetSsPassword::TServiceType aService);
+
+    // From MLtsyDispatchSupplementaryServicesGetCallForwardingStatus
+    virtual TInt HandleGetCallForwardingStatusReqL(RMobilePhone::TMobilePhoneCFCondition aCondition, RMobilePhone::TMobileService aService);
+
+    // From MLtsyDispatchSupplementaryServicesSendUssdMessage
+    virtual TInt HandleSendUssdMessageReqL(const TDesC8& aData, TUint8 aDcs, 
+			RMobileUssdMessaging::TMobileUssdDataFormat aFormat, RMobileUssdMessaging::TMobileUssdMessageType aType);
+    
+    // From MLtsyDispatchSupplementaryServicesSendUssdMessagenoFdnCheck
+    virtual TInt HandleSendUssdMessageNoFdnCheckReqL(const TDesC8& aData, TUint8 aDcs, 
+			RMobileUssdMessaging::TMobileUssdDataFormat aFormat, RMobileUssdMessaging::TMobileUssdMessageType aType);
+
+    // From MLtsyDispatchSupplementaryServicesSendUssdRelease
+    virtual TInt HandleSendUssdReleaseReqL();
+
+    // From MLtsyDispatchSupplementaryServicesClearBlacklist
+    virtual TInt HandleClearBlacklistReqL();
+
+
+private:
+	
+	CLtsySupplementaryServicesHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback);
+	void ConstructL();
+
+private:
+	
+	// Not owned
+	
+	/**
+	 * Callback object in the CTSY Dispatcher.
+	 * 
+	 * Used to complete a request back to the CTSY Dispatcher.
+	 */
+	CCtsyDispatcherCallback& iCtsyDispatcherCallback;
+	
+public:
+
+
+	}; // class CLtsySupplementaryServicesHandler
+
+#endif // __CLTSYDISPATCHSUPPLEMENTARYSERVICESHANDLER_H_
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/ltsymacros.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,59 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+
+/**
+ * This file contains macros to allow the LTSY skeleton to be used with
+ * the Mock LTSY.
+ */
+
+#ifndef __LTSYMACROS_H_
+#define __LTSYMACROS_H_
+
+	#ifdef BUILD_AS_LTSY_STUB
+#define MOCKLTSYREQ(A)//to remove
+		#define MTEST_ISSUE_MOCKLTSYENGINE_REQ(A, B, C, ARGS...)  A = iMockLtsy->ExtFuncL(B,C,##ARGS)
+		#define MTEST_DECLARE_MOCKLTSYENGINE CMockLtsyEngine* iMockLtsy;
+		#define MTEST_FORWARD_DECLARE_MOCKLTSYENGINE class CMockLtsyEngine;
+		#define MTEST_DELETE_MOCKLTSYENGINE delete iMockLtsy
+		#define MTEST_CREATE_MOCKLTSYENGINE(A)  iMockLtsy = CMockLtsyEngine::NewL(A);
+		#define MTEST_INCLUDE_MOCKLTSYENGINE_HEADER "cmockltsyengine.h"
+		#define MTEST_SET_MOCKLTSYENGINE(A) A->iMockLtsy = iMockLtsy
+		#define MTEST_QUERY_SUPPORT_MOCKLTSYENGINE(A,B) return iMockLtsy->IsInterfaceSupported(A, B)
+		#define MTEST_QUERY_IND_SUPPORT_MOCKLTSYENGINE(A,B, C) return iMockLtsy->IsCallbackIndSupported(A, B, C)
+		#define MTEST_DECLARE_EVENT_COUNTER TInt iCounter;
+//all we are doing is is simulating "events from received from baseband occuring at interval of 5s.
+		#define MTEST_WAIT_FOR_NEXT_EVENT	User::After(500000);iCounter++;	
+				
+		#define MTEST_LOG_RECEIVE_EVENT_NO LOG(_L8("LtsyReceiveThread simulated event = %d"), iCounter);
+		#define MTEST_COUNTER_EXCEEDED_SHUTDOWN_RECEIVETHREAD   if(iCounter>3) err = KShutdownLtsyReceiveThread;
+
+	#else
+#define MOCKLTSYREQ(A) //to remove
+		#define MTEST_ISSUE_MOCKLTSYENGINE_REQ(A, B, C, ARGS...)
+		#define MTEST_DECLARE_MOCKLTSYENGINE 
+		#define MTEST_FORWARD_DECLARE_MOCKLTSYENGINE
+		#define MTEST_DELETE_MOCKLTSYENGINE
+		#define MTEST_CREATE_MOCKLTSYENGINE(A)
+		#define MTEST_INCLUDE_MOCKLTSYENGINE_HEADER <e32std.h> //does not reallymatter what header is put here
+		#define MTEST_SET_MOCKLTSYENGINE(A)
+		#define MTEST_QUERY_SUPPORT_MOCKLTSYENGINE(A,B)
+		#define MTEST_QUERY_IND_SUPPORT_MOCKLTSYENGINE(A,B, C)
+		#define MTEST_DECLARE_EVENT_COUNTER
+		#define MTEST_WAIT_FOR_NEXT_EVENT
+		#define MTEST_LOG_RECEIVE_EVENT_NO
+		#define MTEST_COUNTER_EXCEEDED_SHUTDOWN_RECEIVETHREAD   
+	#endif
+
+#endif // __LTSYMACROS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/inc/misdispatchinterfacesupported.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// MIsDispatchInterfaceSupported
+
+#ifndef MISDISPATCHINTERFACESUPPORTED_H_
+#define MISDISPATCHINTERFACESUPPORTED_H_
+
+#include <ctsy/ltsy/mltsydispatchfactory.h>
+
+class MIsDispatchInterfaceSupported
+/**
+ * Interface implemented by the functional unit handlers to return whether a 
+ * specific interface is supported. 
+ */
+	{
+public:
+	
+	virtual TBool IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId) = 0;
+	
+	}; // class MIsDispatchInterfaceSupported
+
+#endif // MISDISPATCHINTERFACESUPPORTED_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsycallcontrolhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1155 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyCallControlHandler
+
+//system include
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+#include <ctsy/ltsy/ltsylogger.h>
+//#include <e32des16.h> 
+
+#include <e32base.h>
+#include <e32std.h>
+#include <e32cons.h>
+
+//user include
+#include "cltsycallcontrolhandler.h"
+#include "globalphonemanager.h"
+#include "ltsycommondefine.h"
+#include "mslogger.h"
+#include "ltsymacros.h"
+#include "tsyconfg.h"
+#include "atwaitforcallhandler.h"
+#include "atdialvoice.h"
+#include "athangup.h"
+#include "atanswer.h"
+#include "atchld.h"
+#include "unsolicitedcommandcallcontrolhandler.h"
+#include "atdtmfvts.h"
+#include "ltsycallinformationmanager.h"
+#include "athangupcommandrecords.h"
+
+
+//const define
+_LIT16(KLtsyEmergencyCallNumber911, "911");
+_LIT16(KLtsyEmergencyCallNumber112, "112");
+
+CLtsyCallControlHandler::CLtsyCallControlHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback, CGlobalPhonemanager* aGloblePhone)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback), iGloblePhone(aGloblePhone)
+	{
+
+	}
+
+
+CLtsyCallControlHandler::~CLtsyCallControlHandler()
+	{
+	delete iEmergencyCall;
+	iEmergencyCall = NULL;
+	
+	delete iUnsolicitedHandler;
+	iUnsolicitedHandler = NULL;
+	
+	delete iWaitForCall;
+	iWaitForCall = NULL;
+	}
+
+
+CLtsyCallControlHandler* CLtsyCallControlHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+	CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyCallControlHandler* self = new (ELeave) CLtsyCallControlHandler(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyCallControlHandler* CLtsyCallControlHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback, CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyCallControlHandler* self=
+			CLtsyCallControlHandler::NewLC(aCtsyDispatcherCallback, aGloblePhone);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyCallControlHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{	
+	//Emergency Call
+	iEmergencyCall = CATDialVoice::NewL((*iGloblePhone),iCtsyDispatcherCallback);
+	iEmergencyCall->SetEmergnecyCallFlag(ETrue);
+	
+	//Process unsolicited command
+	iUnsolicitedHandler = CUnsolicitedCommandCallControlHandler::NewL((*iGloblePhone), 
+			                                                          iCtsyDispatcherCallback);
+	
+	//Monitor incoming call
+	iWaitForCall = CATWaitForCallHandler::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iWaitForCall->StartToWaitForCall();
+
+	} // CLtsyCallControlHandler::ConstructL
+
+TBool CLtsyCallControlHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface API is supported or not.
+ *
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+	TBool bFlag(EFalse);
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY
+		case MLtsyDispatchCallControlAnswer::KLtsyDispatchCallControlAnswerApiId :
+			bFlag =  ETrue;
+			break;		
+		case MLtsyDispatchCallControlHold::KLtsyDispatchCallControlHoldApiId:
+			bFlag =  ETrue;
+			break;
+		case MLtsyDispatchCallControlHangUp::KLtsyDispatchCallControlHangUpApiId :
+			bFlag =  ETrue;
+			break;
+		case MLtsyDispatchCallControlResume::KLtsyDispatchCallControlResumeApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlDialVoice::KLtsyDispatchCallControlDialVoiceApiId :
+			bFlag =  ETrue;
+			break;		
+		case MLtsyDispatchCallControlSwap::KLtsyDispatchCallControlSwapApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlTerminateErrorCall::KLtsyDispatchCallControlTerminateErrorCallApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlTerminateAllCalls::KLtsyDispatchCallControlTerminateAllCallsApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlSendDtmfTones::KLtsyDispatchCallControlSendDtmfTonesApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlStartDtmfTone::KLtsyDispatchCallControlStartDtmfToneApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlStopDtmfTone::KLtsyDispatchCallControlStopDtmfToneApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlSendDtmfTonesCancel::KLtsyDispatchCallControlSendDtmfTonesCancelApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlQueryIsEmergencyNumber::KLtsyDispatchCallControlQueryIsEmergencyNumberApiId :
+			bFlag = ETrue;
+			break;
+		case MLtsyDispatchCallControlDialEmergency::KLtsyDispatchCallControlDialEmergencyApiId :
+			bFlag = ETrue;
+			break;
+		default:
+			bFlag = EFalse;
+			break;
+		}
+	return bFlag;
+	}
+
+void CLtsyCallControlHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask)
+/**
+ * Returns the set of callback indicators that are supported.
+ *
+ * @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+ * @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchCallControlNotifyCallStatusChangeIndId |
+		KLtsyDispatchCallControlReceiveUuiIndId |
+		KLtsyDispatchCallControlNotifyDataCallCapsChangeIndId|
+		KLtsyDispatchCallControlNotifyIncomingCallIndId|
+		KLtsyDispatchCallControlNotifyHscsdInfoChangeIndId|
+		KLtsyDispatchCallControlNotifyCallEventIndId|
+		KLtsyDispatchCallControlGetCallInfoIndId|
+		KLtsyDispatchCallControlNotifyIccCallForwardingStatusChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	
+	}
+
+TInt CLtsyCallControlHandler::HandleAnswerReqL(TInt aCallId, TBool aIsIsvCall)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlAnswerComp()
+ *
+ * @param aCallId The Call ID of the call to answer.
+ *
+ * @param aIsIsvCall ETrue if the request to answer the call comes from a
+ * 3rd party application, EFalse otherwise. This parameter exists in case the
+ * LTSY wishes to perform special handling of ISV calls.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleAnswerReqL()"));
+	
+	TInt nEmergencyCallId = iGloblePhone->GetCallInfoManager().FindEmergencyCallId();
+	if (nEmergencyCallId != KErrNotFound)
+		{
+		const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(nEmergencyCallId));
+		if (TLtsyCallInformation::EHeldCall  !=  tCallInfo.GetCallState())
+			{
+			//Reset Ring state
+			iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse);			
+			return KErrNotSupported;
+			}
+		}	
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Reset Ring state
+		iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse);
+		
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		//Create answer call
+		CATAnswer* cAnswerCall = CATAnswer::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cAnswerCall);
+		cAnswerCall->SetAnswerCallId(aCallId);
+		cAnswerCall->SetIsIsvCall(aIsIsvCall);
+		//Start answer
+		cAnswerCall->StartRequest();		
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleAnswerReqL
+
+TInt CLtsyCallControlHandler::HandleHoldReqL(TInt aCallId)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlHoldComp()
+ *
+ * @param aCallId The Call ID of the call to hold.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleHoldReqL"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d"), aCallId);
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create hold call
+		CATChld* cHoldCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cHoldCall);
+		//Check call id is a hold call or not
+		if (cHoldCall->IsHoldCall(aCallId))
+			{
+			LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d is a hold call so return KErrNone"), aCallId);
+			iGloblePhone->iEventSignalActive = EFalse;
+			return KErrNotSupported;
+			}
+		
+		cHoldCall->SetCallId(aCallId);
+		cHoldCall->SetIpcType(CATChld::ELtsyReqCallHold);
+		cHoldCall->SetChldType(CATChld::EHeldAllActiveCallAndAcceptHeldWaiting);
+		cHoldCall->StartRequest();			
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleHoldReqL
+
+
+TInt CLtsyCallControlHandler::HandleDialEmergencyReqL(const TDes& aEmergencyNumber)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlDialEmergencyComp()
+ *
+ * @param aEmergencyNumber The emergency phone number to dial.  The descriptor
+ * should be of type RMobileENStore::TEmergencyNumber.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleDialEmergencyReqL()"));
+	
+	//Checking is have emergency call
+	if (iGloblePhone->GetCallInfoManager().FindEmergencyCallId() != KErrNotFound)
+		{
+		return KErrNotSupported;
+		}
+	
+	TBuf8<RMobilePhone::KMaxMobileTelNumberSize> tTelNum;
+	tTelNum.Copy(aEmergencyNumber.Left(tTelNum.MaxLength()));
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Init call
+		iEmergencyCall->InitVariable();
+		
+		//Set telnum
+		iEmergencyCall->SetTelephoneNumber(tTelNum);
+		iEmergencyCall->StartRequest();
+		}
+	else // KErrInUse
+		{
+		if (iGloblePhone->GetCallInfoManager().FindDialingOrAlertingCallId() != KErrNotFound)
+			{
+			//Delete last call
+			iGloblePhone->DeleteLastActiveRequest();
+			
+			//Setting Port active
+			iGloblePhone->iEventSignalActive = ETrue;
+			
+			//Init call
+			iEmergencyCall->InitVariable();
+			//Set telnum
+			iEmergencyCall->SetTelephoneNumber(tTelNum);
+			iEmergencyCall->StartRequest();
+			nRet = KErrNone;
+			}	
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleDialEmergencyReqL
+
+TInt CLtsyCallControlHandler::HandleStopDtmfToneReqL(TInt aCallId)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlStopDtmfToneComp()
+ *
+ * @param aCallId Call ID of the connected call the stop request will be sent
+ * through.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleStopDtmfToneReqL()"));
+	LOGTEXT2( _L8("[Ltsy CallControl] CallId = %d"), aCallId);
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create DTMF 
+		CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cDtmfVts);
+		
+		//Set CallId
+		nRet = cDtmfVts->SetCallId(aCallId);
+		if (nRet != KErrNone)
+			{
+			return nRet;
+			}	
+		
+		//Set work type
+		cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfStopOneTone);
+		
+		//Start request
+		cDtmfVts->StartRequest();		
+		}	
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleStopDtmfToneReqL
+
+
+TInt CLtsyCallControlHandler::HandleSetActiveAlsLineReqL(RMobilePhone::TMobilePhoneALSLine /*aAlsLine*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlSetActiveAlsLineComp()
+ *
+ * @param aAlsLine The new active ALS line.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleSetActiveAlsLineReqL
+
+
+TInt CLtsyCallControlHandler::HandleSendDtmfTonesCancelReqL(TInt aCallId)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlSendDtmfTonesCancelComp()
+ *
+ * @param aCallId The Call ID through which the cancel request should be sent.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleSendDtmfTonesCancelReqL()"));
+	LOGTEXT2( _L8("[Ltsy CallControl] CallId = %d"), aCallId);
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create DTMF 
+		CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cDtmfVts);
+		
+		//Set CallId
+		nRet = cDtmfVts->SetCallId(aCallId);
+		if (nRet != KErrNone)
+			{
+			return nRet;
+			}	
+		
+		//Set work type
+		cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfCancelMoreTones);
+		
+		//Start request
+		cDtmfVts->StartRequest();		
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleSendDtmfTonesCancelReqL
+
+
+TInt CLtsyCallControlHandler::HandleHangUpReqL(TInt aCallId, TInt aHangupCause)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlHangUpComp()
+ *
+ * @param aCallId The Call ID of the call to hang up.
+ *
+ * @param aHangupCause The reason for the hang up request.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleHangUpReqL"));
+	LOGTEXT3(_L8("[Ltsy CallControl]  aCallId = %d aHangupCause = %d"), aCallId, aHangupCause);
+
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Reset Ring state
+		iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse);
+		
+		//Set hang up active
+		iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().SetHangupActiveFlag(ETrue);
+		
+		//Create Hang up  
+		CATChld* cHangupCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cHangupCall);
+		cHangupCall->SetCallId(aCallId);
+		cHangupCall->SetHangupCase(aHangupCause);
+		cHangupCall->SetIpcType(CATChld::ELtsyReqCallHangup);
+		cHangupCall->SetChldType(CATChld::ERleaseSpecificCall);
+		cHangupCall->StartRequest();			
+		}
+	else if (nRet == KErrInUse)
+		{
+		LOGTEXT( _L8("[Ltsy CallControl]  Starting Hang up in process so add hangup information"));
+		
+		const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(aCallId));
+		
+		if (iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().GetHangupActiveFlag())
+			{
+			//Hang up is processing so add its information to array
+			nRet = iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().AddHangupCommandInfo(aCallId, aHangupCause);					
+			}
+		else if (TLtsyCallInformation::EDialingCall  ==  tCallInfo.GetCallState() ||
+				 TLtsyCallInformation::EAlertingCall ==  tCallInfo.GetCallState())
+			{
+			
+			//Delete last call
+			iGloblePhone->DeleteLastActiveRequest();
+			
+			//Setting Port active
+			iGloblePhone->iEventSignalActive = ETrue;	
+			
+			//Set hang up active
+			iGloblePhone->GetCallInfoManager().GetHangupCommandRecords().SetHangupActiveFlag(ETrue);
+			
+			//Create Hang up  
+			CATChld* cHangupCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+			iGloblePhone->SetActiveRequest(cHangupCall);
+			cHangupCall->SetCallId(aCallId);
+			cHangupCall->SetHangupCase(aHangupCause);
+			cHangupCall->SetIpcType(CATChld::ELtsyReqCallHangup);
+			cHangupCall->SetChldType(CATChld::ERleaseSpecificCall);
+			cHangupCall->StartRequest();
+			nRet = KErrNone;
+			}
+		}	
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleHangUpReqL
+
+
+TInt CLtsyCallControlHandler::HandleResumeReqL(TInt aCallId)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlResumeComp()
+ *
+ * @param aCallId The Call ID of the call to resume.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleResumeReqL"));
+	LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d"), aCallId);	
+
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create DTMF 
+		CATChld* cResumeCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cResumeCall);
+		if (cResumeCall->IsActiveCall(aCallId))
+			{
+			LOGTEXT2(_L8("[Ltsy CallControl] aCallId = %d is a active call so return KErrNone"), aCallId);
+			iGloblePhone->iEventSignalActive = EFalse;
+			return KErrNotSupported;
+			}
+		cResumeCall->SetCallId(aCallId);
+		cResumeCall->SetIpcType(CATChld::ELtsyReqCallResume);
+		cResumeCall->SetChldType(CATChld::EHeldAllActiveCallAndAcceptHeldWaiting);
+		cResumeCall->StartRequest();		
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleResumeReqL
+
+TInt CLtsyCallControlHandler::HandleSetDynamicHscsdParamsReqL(
+	TInt /*aCallId*/, const RMobileCall::TMobileHscsdCallParamsV1& /*aHscsdParams*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlSetDynamicHscsdParamsComp()
+ *
+ * @param aCallId The call ID of the data call.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleSetDynamicHscsdParamsReqL
+
+
+TInt CLtsyCallControlHandler::HandleDialVoiceReqL(RMobilePhone::TMobilePhoneALSLine /*aLine*/,
+	const RMobilePhone::TMobileAddress& aDialledParty, const RMobileCall::TMobileCallParamsV1& /*aCallParamsV1*/,
+	TBool /*aIsIsvCall*/, RMobileCall::TCallParamOrigin /*aCallOrigin*/, TBool /*aPerformFdnCheck*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlDialVoiceComp()
+ *
+ * @param aCallLine The line to use to dial the call.
+ *
+ * @param aDialledParty Details about the dialled party including the phone
+ * number to dial.
+ *
+ * @param aCallParamsV1 The call parameters of the call to dial.
+ *
+ * @param aIsIsvCall Indicates whether the call originated from a third party
+ * application.
+ *
+ * @param aCallOrigin The origin of the dial request. e.g. Whether the dial
+ * came from an Etel client or the SIM or another source.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleDialVoiceReqL()"));
+	
+	TInt nEmergencyCallId = iGloblePhone->GetCallInfoManager().FindEmergencyCallId();
+	if (nEmergencyCallId != KErrNotFound)
+		{
+		const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(nEmergencyCallId));
+		if (TLtsyCallInformation::EHeldCall  !=  tCallInfo.GetCallState())
+			{
+			return KErrNotSupported;
+			}
+		}
+	
+	//Set telephone number
+	TBuf8<KCommsDbSvrMaxFieldLength> dialModifier;
+	TInt nRet = iGloblePhone->iConfiguration->ConfigModemStringL(
+								TPtrC(KCDTypeNameDialToneWaitModifier),
+								dialModifier);
+	if (nRet != KErrNone)
+		{
+		return nRet;
+		}
+	
+	TBuf8<RMobilePhone::KMaxMobileTelNumberSize> tTelNum;
+	tTelNum.Copy(aDialledParty.iTelNumber.Left(tTelNum.MaxLength()));
+	
+	nRet = tTelNum.FindF(dialModifier);
+	if (nRet != KErrNotFound)
+		{
+		tTelNum.Delete(nRet, 1);
+		}
+	
+	nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create dial voice
+		CATDialVoice* cDialVoice = CATDialVoice::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cDialVoice);
+		cDialVoice->SetTelephoneNumber(tTelNum);
+		cDialVoice->StartRequest();
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleDialReqL
+
+TInt CLtsyCallControlHandler::HandleTransferReqL(TInt /*aHeldCallId*/, TInt /*aSecondCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlTransferComp()
+ *
+ * @param aHeldCallId Call ID of the held call to transfer.
+ *
+ * @param aSecondCallId Call ID of the other to transfer the held call to.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleTransferReqL
+
+
+TInt CLtsyCallControlHandler::HandleSendDtmfTonesReqL(TInt aCallId, const TDesC &aTones)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlSendDtmfTonesComp()
+ *
+ * @param aCallId The Call ID of the call through which the DTMF string will be
+ * sent.
+ *
+ * @param aTones Tones to send through the active call.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT( _L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleSendDtmfTonesReqL()"));
+	LOGTEXT3( _L8("[Ltsy CallControl] CallId = %d\tTones = %S"), aCallId, &aTones);
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create DTMF 
+		CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback);	
+		iGloblePhone->SetActiveRequest(cDtmfVts);
+		//Set CallId
+		TInt nRet = cDtmfVts->SetCallId(aCallId);
+		if (nRet != KErrNone)
+			{
+			return nRet;
+			}	
+		
+		//Set Tones
+		nRet = cDtmfVts->SetDtmfString(aTones);
+		if (nRet != KErrNone)
+			{
+			return nRet;
+			}	
+		
+		//set work type
+		cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfSendMoreTones);
+		cDtmfVts->StartRequest();
+		}	
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleSendDtmfTonesReqL
+
+
+TInt CLtsyCallControlHandler::HandleGetIdentityServiceStatusReqL(RMobilePhone::TMobilePhoneIdService /*aService*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetIdentityServiceStatusComp()
+ *
+ * @param aService The service whose status needs to be retrieved.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleGetIdentityServiceStatusReqL
+
+
+TInt CLtsyCallControlHandler::HandleSwapReqL(TInt aHeldCallId, TInt aConnectedCallId)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlSwapComp()
+ *
+ * @param aHeldCallId The Call ID of the held call to swap.
+ *
+ * @param aConnectedCallId The Call ID of the connected call to swap.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleSwapReqL"));
+	LOGTEXT3(_L8("[Ltsy CallControl] aHeldCallId = %d\taConnectedCallId = %d"), aHeldCallId, aConnectedCallId);
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create DTMF 
+		CATChld* cSwapCall = CATChld::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cSwapCall);
+		cSwapCall->SetCallId(aHeldCallId);
+		cSwapCall->SetConnectedCallId(aConnectedCallId);
+		cSwapCall->SetIpcType(CATChld::ELtsyReqCallSwap);
+		cSwapCall->SetChldType(CATChld::EHeldAllActiveCallAndAcceptHeldWaiting);
+		cSwapCall->StartRequest();			
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleSwapReqL
+
+TInt CLtsyCallControlHandler::HandleLoanDataPortSyncL(TInt /*aCallId*/, RCall::TCommPort& /*aCommPort*/)
+/**
+ * This request is part of
+ * MLtsyDispatchCallControlLoanDataPort::HandleLoanDataPortSyncL()
+ *
+ * @param aCallId Call ID of the data call requiring the data port.
+ *
+ * @param aCommPort Output parameter. The communications port information
+ * retrieved by a client using the RCall::LoanDataPort() API.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleLoanDataPortSyncL
+
+
+TInt CLtsyCallControlHandler::HandleRecoverDataPortSyncL(TInt /*aCallId*/, RCall::TCommPort& /*aCommPort*/)
+/**
+ * This request is part of
+ * MLtsyDispatchCallControlRecoverDataPort::HandleRecoverDataPortSyncL()
+ *
+ * @param aCallId Call ID of the data call requiring the data port.
+ *
+ * @param aCommPort The data port to recover.  This contains the details previously
+ * returned by a call to RCall::LoanDataPort()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleRecoverDataPortSyncL
+
+
+TInt CLtsyCallControlHandler::HandleStartDtmfToneReqL(TInt aCallId, const TChar& aTone)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlStartDtmfTone()
+ *
+ * @param aCallId Call ID of the connected call through which the DTMF tone
+ * will be sent.
+ *
+ * @param aTone The tone character to send through the call.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleStartDtmfToneReqL()"));
+	LOGTEXT2( _L8("[Ltsy CallControl] CallId = %d"), aCallId);
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Create DTMF 
+		CATDtmfVts* cDtmfVts = CATDtmfVts::NewL((*iGloblePhone), iCtsyDispatcherCallback);	
+		iGloblePhone->SetActiveRequest(cDtmfVts);
+		//Set CallId
+		TInt nRet = cDtmfVts->SetCallId(aCallId);
+		if (nRet != KErrNone)
+			{
+			return nRet;
+			}	
+		
+		//Set Tones
+		TBuf<16> bufTone;
+		bufTone.Append(aTone);
+		nRet = cDtmfVts->SetDtmfString(bufTone);
+		if (nRet != KErrNone)
+			{
+			return nRet;
+			}
+		
+		//set work type
+		cDtmfVts->SetDtmfWorkType(CATDtmfVts::EDtmfSendOneTone);
+		cDtmfVts->StartRequest();
+		}
+	
+	return nRet;	
+	} // CLtsyCallControlHandler::HandleStartDtmfToneSyncL
+
+TInt CLtsyCallControlHandler::HandleGetActiveAlsLineReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetActiveAlsLineComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TO DO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleGetActiveAlsLineReqL
+
+TInt CLtsyCallControlHandler::HandleDialDataReqL(const RMobilePhone::TMobileAddress& /*aDialledParty*/, const RMobileCall::TMobileDataCallParamsV1& /*aCallParamsV1*/, TBool /*aPerformFdnCheck*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetActiveAlsLineComp()
+ *
+ * @param aLine The line to use to dial the call.
+ *
+ * @param aDialledParty Details about the dialled party including the phone
+ * number to dial.
+ *
+ * @param aCallParamsV1 The call parameters of the call to dial.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TO DO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleDialDataReqL
+
+TInt CLtsyCallControlHandler::HandleQueryIsEmergencyNumberSyncL(const TDesC& aNumber, TBool& aIsEmergencyNumber)
+/**
+ * This request is part of
+ * MLtsyDispatchCallControlQueryIsEmergencyNumber::HandleQueryIsEmergencyNumberSyncL()
+ *
+ * @param aNumber Input parameter. The phone number being queried to see
+ * if it is an emergency number or not.
+ *
+ * @param aIsEmergencyNumber Output parameter used to indicate whether the
+ * aNumber parameter is an emergency number. ETrue if it is, EFalse otherwise.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleQueryIsEmergencyNumberSyncL()"));
+	
+	TInt nEmergencyCallId = iGloblePhone->GetCallInfoManager().FindEmergencyCallId();
+	if (nEmergencyCallId != KErrNotFound)
+		{
+		const TLtsyCallInformation& tCallInfo(iGloblePhone->GetCallInfoManager().GetCallInformationByCallId(nEmergencyCallId));
+		if (TLtsyCallInformation::EHeldCall  !=  tCallInfo.GetCallState())
+			{			
+			return KErrNotSupported;
+			}
+		}	
+	
+	//Check Emergency call number	
+	if (aNumber.CompareF(KLtsyEmergencyCallNumber911) == 0 ||
+		aNumber.CompareF(KLtsyEmergencyCallNumber112) == 0 )
+		{
+		aIsEmergencyNumber = ETrue;
+		}
+	else
+		{
+		aIsEmergencyNumber = EFalse;
+		}
+	
+	return KErrNone;
+	} // CLtsyCallControlHandler::HandleQueryIsEmergencyNumberSyncL
+
+
+TInt CLtsyCallControlHandler::HandleGetAlsPpSupportL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetAlsPpSupportComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleGetAlsPp
+
+TInt CLtsyCallControlHandler::HandleGetAlsBlockedStatusL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetAlsBlockedStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleGetAlsBlockedStatus
+
+TInt CLtsyCallControlHandler::HandleSetAlsBlockedL(RMmCustomAPI::TSetAlsBlock /*aBlocked*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlSetAlsBlockedComp()
+ *
+ *
+ * @param aBlocked RMmCustomAPI::EDeactivateBlock when the ALS blocked needs to be deactivate,
+ *                 RMmCustomAPI::EActivateBlock when the  ALS blocked needs to be activate.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleSetAlsBlockedL
+
+TInt CLtsyCallControlHandler::HandleGetLifeTimeL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetLifeTimeComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleGetLifeTime
+
+TInt CLtsyCallControlHandler::HandleTerminateErrorCallL(TInt /*aCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlTerminateErrorCallComp()
+ *
+ *
+ * @param aCallId The Call ID of the call to terminate.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleTerminateErrorCallL
+
+TInt CLtsyCallControlHandler::HandleTerminateAllCallsL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::::CallbackCallControlTerminateAllCallsComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy CallControl]  Starting CLtsyCallControlHandler::HandleTerminateAllCallsL()"));
+	
+	TInt nRet = iGloblePhone->CheckGlobalPhoneStatus();
+	if (nRet == KErrNone)
+		{
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		
+		//Reset Ring state
+		iGloblePhone->GetCallInfoManager().SetIncomingCallFlag(EFalse);		
+		
+		CATHangUp* cTerminateAllCalls = CATHangUp::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->SetActiveRequest(cTerminateAllCalls);
+		cTerminateAllCalls->SetHangupOperator(CATHangUp::ECustomAPI);
+		cTerminateAllCalls->StartRequest();	
+		}
+	
+	return nRet;
+	} // CLtsyCallControlHandler::HandleTerminateAllCallsL
+
+TInt CLtsyCallControlHandler::HandleGetCallForwardingIndicatorL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlGetCallForwardingIndicatorComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler::HandleGetCallForwardingIndicator
+
+TInt CLtsyCallControlHandler::HandleUpdateLifeTimerReqL(TUint32 /*aDuration*/)
+/**
+ * This request is completed by invoking
+ *  CCtsyDispatcherCallback::CallbackCallControlUpdateLifeTimerComp
+ *
+ * @param aDuration Time spent on call since the last invocation of this method.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TO DO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlHandler:::HandleUpdateLifeTimerReqL
+
+
+MLtsyUnsolicitedCommandObserver* CLtsyCallControlHandler::GetUnsolicitedCallControlHandler() const
+	{
+	return static_cast<MLtsyUnsolicitedCommandObserver*>(iUnsolicitedHandler);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsycallcontrolmultipartyhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,233 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyCallControlMultipartyHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+
+
+#include "cltsycallcontrolmultipartyhandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsyCallControlMultipartyHandler::CLtsyCallControlMultipartyHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+
+CLtsyCallControlMultipartyHandler::~CLtsyCallControlMultipartyHandler()
+	{
+	}
+
+
+CLtsyCallControlMultipartyHandler* CLtsyCallControlMultipartyHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyCallControlMultipartyHandler* self = new (ELeave) CLtsyCallControlMultipartyHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyCallControlMultipartyHandler* CLtsyCallControlMultipartyHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyCallControlMultipartyHandler* self=
+			CLtsyCallControlMultipartyHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyCallControlMultipartyHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+
+	} // CLtsyCallControlMultipartyHandler::ConstructL
+
+TBool CLtsyCallControlMultipartyHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ *
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyCallControlMultipartyHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ *
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId |
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId |
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsyCallControlMultipartyHandler::HandleConferenceHangUpReqL(const RArray<TInt>& /*aCallIds*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlMultipartyConferenceHangUpComp()
+ *
+ * @param aCallIds Array of all Call IDs, which belong to the conference.
+ * This array will be destroyed after the function call returns. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlMultipartyHandler::HandleConferenceHangUpReqL
+
+
+TInt CLtsyCallControlMultipartyHandler::HandleConferenceAddCallReqL(TInt /*aCallId*/, TInt /*aExistingCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlMultipartyConferenceAddCallComp()
+ *
+ * @param aCallId The Call ID of the call to be added to the conference.
+ * @param aExistingCallId The Call ID of one of the calls which is already a part of the conference call.
+ * This can be the Call ID of any of the existing calls in the conference, not necessarily the first one that was added.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlMultipartyHandler::HandleConferenceAddCallReqL
+
+
+TInt CLtsyCallControlMultipartyHandler::HandleCreateConferenceReqL(TInt /*aHeldCallId*/, TInt /*aSecondCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlMultipartyCreateConferenceComp()
+ *
+ * @param aHeldCallId The Call ID of the held call.
+ *
+ * @param aSecondCallId The Call ID of the other call to create a conference with.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlMultipartyHandler::HandleCreateConferenceReqL
+
+
+TInt CLtsyCallControlMultipartyHandler::HandleConferenceSwapReqL(
+		TInt /*aHeldCallId*/, TInt /*aConnectedCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlMultipartyConferenceSwapComp()
+ *
+ * @param aHeldCallId The Call ID of the held call.
+ *
+ * @param aConnectedCallId The Call ID of the connected call.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlMultipartyHandler::HandleConferenceSwapReqL
+
+
+TInt CLtsyCallControlMultipartyHandler::HandleConferenceGoOneToOneReqL(TInt /*aCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCallControlMultipartyConferenceGoOneToOneComp()
+ *
+ * @param aCallId The Call ID of the call with which to go one to one.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCallControlMultipartyHandler::HandleConferenceGoOneToOneReqL
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsycellbroadcasthandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,209 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyCellBroadcastHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+#include "cltsycellbroadcasthandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsyCellBroadcastHandler::CLtsyCellBroadcastHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+	
+CLtsyCellBroadcastHandler::~CLtsyCellBroadcastHandler()
+	{
+	}
+
+
+CLtsyCellBroadcastHandler* CLtsyCellBroadcastHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyCellBroadcastHandler* self = new (ELeave) CLtsyCellBroadcastHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyCellBroadcastHandler* CLtsyCellBroadcastHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyCellBroadcastHandler* self=
+			CLtsyCellBroadcastHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyCellBroadcastHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsyCellBroadcastHandler::ConstructL
+
+TBool CLtsyCellBroadcastHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyCellBroadcastHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsyCellBroadcastHandler::HandleSetBroadcastFilterSettingReqL(RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter /*aFilterSetting*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCellBroadcastSetBroadcastFilterSettingComp
+ *
+ * @param aFilterSetting Broadcast filter setting
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCellBroadcastHandler::HandleSetBroadcastFilterSettingReqL
+
+
+TInt CLtsyCellBroadcastHandler::HandleActivateBroadcastReceiveMessageReqL(RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter /*aFilterSetting*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCellBroadcastActivateBroadcastReceiveMessageComp
+ *
+ * @param aFilterSetting Broadcast filter setting
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCellBroadcastHandler::HandleActivateBroadcastReceiveMessageReqL
+
+
+TInt CLtsyCellBroadcastHandler::HandleReceiveMessageCancelReqL(RMobileBroadcastMessaging::TMobilePhoneBroadcastFilter /*aFilterSetting*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCellBroadcastReceiveMessageCancelComp
+ *
+ * @param aFilterSetting Broadcast filter setting
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCellBroadcastHandler::HandleReceiveMessageCancelReqL
+	
+TInt CLtsyCellBroadcastHandler::HandleStartSimCbTopicBrowsingReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCellBroadcastStartSimCbTopicBrowsingComp
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCellBroadcastHandler::HandleStartSimCbTopicBrowsingReqL
+	
+TInt CLtsyCellBroadcastHandler::HandleDeleteSimCbTopicReqL(TUint /*aIndex*/, TBool /*aDeleteFlag*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackCellBroadcastDeleteSimCbTopicComp
+ *
+ * @param aIndex SimCb topic number.
+ * @param aDeleteFlag topic in sim memory delete flag.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyCellBroadcastHandler::HandleDeleteSimCbTopicReqL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsyfactoryv1.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1211 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file ltsyfactoryv1.cpp
+// This contains CLtsyFactoryV1 which acting an interface for Lincesee dll
+// 
+// system include
+#include <ctsy/ltsy/mltsydispatchinterface.h>
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+
+// use include
+#include "cltsyfactoryv1.h"
+#include "cltsycallcontrolhandler.h"
+#include "cltsyphonehandler.h"
+#include "cltsysecurityhandler.h"
+#include "cltsyphonebookenhandler.h"
+#include "cltsycellbroadcasthandler.h"
+#include "cltsyphonebookonhandler.h"
+#include "cltsyphonebookhandler.h"
+#include "cltsysimhandler.h"
+#include "cltsysmshandler.h"
+#include "cltsycallcontrolmultipartyhandler.h"
+#include "cltsysupplementaryserviceshandler.h"
+#include "cltsypacketserviceshandler.h"
+#include "cltsysathandler.h"
+#include "globalphonemanager.h"
+#include "unsolicitedeventmonitor.h"
+#include "unsolicitedcommandcallcontrolhandler.h"
+
+
+CLtsyFactoryV1::CLtsyFactoryV1()
+	{
+	}
+
+CLtsyFactoryV1::~CLtsyFactoryV1()
+	{
+	TSYLOGENTRYEXIT;
+
+	// Delete dispatch handlers
+	delete iLtsyDispatchCallControlHandler;
+	iLtsyDispatchCallControlHandler = NULL;
+
+	delete iLtsyDispatchPhoneHandler;
+	iLtsyDispatchPhoneHandler = NULL;
+
+	delete iLtsyDispatchSecurityHandler;
+	iLtsyDispatchSecurityHandler = NULL;
+
+	delete iLtsyDispatchPhonebookEnHandler;
+	iLtsyDispatchPhonebookEnHandler = NULL;
+
+	delete iLtsyDispatchCellBroadcastHandler;
+	iLtsyDispatchCellBroadcastHandler = NULL;
+
+	delete iLtsyDispatchPhonebookOnHandler;
+	iLtsyDispatchPhonebookOnHandler = NULL;
+
+	delete iLtsyDispatchPhonebookHandler;
+	iLtsyDispatchPhonebookHandler = NULL;
+
+	delete iLtsyDispatchSimHandler;
+	iLtsyDispatchSimHandler = NULL;
+
+	delete iLtsyDispatchSmsHandler;
+	iLtsyDispatchSmsHandler = NULL;
+
+	delete iLtsyDispatchCallControlMultipartyHandler;
+	iLtsyDispatchCallControlMultipartyHandler = NULL;
+
+	delete iLtsyDispatchSupplementaryServicesHandler;
+	iLtsyDispatchSupplementaryServicesHandler = NULL;
+
+	delete iLtsyDispatchPacketServicesHandler;
+	iLtsyDispatchPacketServicesHandler = NULL;
+
+	delete iLtsyDispatchSatHandler;
+	iLtsyDispatchSatHandler = NULL;
+	
+	delete iUnsolicitedEventMonitor;
+	iUnsolicitedEventMonitor = NULL;
+	
+	delete iGlobalPhone;
+	iGlobalPhone = NULL;
+	}
+
+MLtsyFactoryBase::TCtsyInterfaceVersion CLtsyFactoryV1::Version()
+	{
+	TSYLOGENTRYEXIT;
+	return EIfVersion1;
+	}
+
+void CLtsyFactoryV1::ConstructL(CCtsyDispatcherCallback& aCallback)
+/**
+ * Second phase constructor. This function must be called explicitly
+ * by the client to complete construction before any other functions in this
+ * class are called.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	// create global phone manager
+	iGlobalPhone = CGlobalPhonemanager::NewL();
+	
+	// create the call control handler
+	iLtsyDispatchCallControlHandler = CLtsyCallControlHandler::NewL(aCallback, iGlobalPhone);
+	
+	// create the phone control handler
+	iLtsyDispatchPhoneHandler = CLtsyPhoneHandler::NewL(aCallback,iGlobalPhone);
+	
+	// create the sms control handler
+	iLtsyDispatchSmsHandler = CLtsySmsHandler::NewL(aCallback,iGlobalPhone);
+	
+	// create the packect service control handler
+	iLtsyDispatchPacketServicesHandler = CLtsyPacketServicesHandler::NewL(aCallback,iGlobalPhone);
+    
+	// create the phone book control handler
+	iLtsyDispatchPhonebookHandler = CLtsyPhonebookHandler::NewL(aCallback,iGlobalPhone);
+
+	// create the security control handler
+	iLtsyDispatchSecurityHandler = CLtsySecurityHandler::NewL(aCallback);
+	
+	// create the EN phone book control handler
+	iLtsyDispatchPhonebookEnHandler = CLtsyPhonebookEnHandler::NewL(aCallback,iGlobalPhone);
+	
+	// create the cell broad cast control handler
+	iLtsyDispatchCellBroadcastHandler = CLtsyCellBroadcastHandler::NewL(aCallback);
+	
+	// create the ON phone book control handler
+	iLtsyDispatchPhonebookOnHandler = CLtsyPhonebookOnHandler::NewL(aCallback);
+		
+	// create the sim card control handler
+	iLtsyDispatchSimHandler = CLtsySimHandler::NewL(aCallback);
+	
+	// create the conference call control handler
+	iLtsyDispatchCallControlMultipartyHandler = CLtsyCallControlMultipartyHandler::NewL(aCallback);
+	
+	// create the supplementary service control handler
+	iLtsyDispatchSupplementaryServicesHandler = CLtsySupplementaryServicesHandler::NewL(aCallback);
+		
+	// create the sat control handler
+	iLtsyDispatchSatHandler = CLtsySatHandler::NewL(aCallback);
+	
+	//Create unsolicited observer
+	iUnsolicitedEventMonitor = CUnsolicitedEventMonitor::NewL(*iGlobalPhone, aCallback);
+	
+	// create the security control handler
+	iUnsolicitedEventMonitor->AddUnsolicitedObserver(iLtsyDispatchCallControlHandler->GetUnsolicitedCallControlHandler());
+	
+	// create the security control handler
+	iUnsolicitedEventMonitor->StartUnsolicitedObserver();
+	} // CLtsyFactoryV1::ConstructL
+
+
+TInt CLtsyFactoryV1::GetDispatchHandler(
+			TLtsyDispatchInterfaceApiId aDispatchInterfaceId,
+			TAny*& aDispatchInterface)
+/**
+ * Part of the MLtsyFactoryV1 interface.  Returns the requested dispatch handler.
+ * For more details see MLtsyFactoryV1::GetDispatchHandler
+ *
+ * @param aInterfaceId The dispatch interface identifier of the requested
+ * interface.
+ *
+ * @param aDispatchInterface If this function completes with KErrNone, will contain
+ * a reference to a pointer to the dispatch handler interface in the LTSY.
+ * aDispatchInterface may be NULL. Otherwise the parameter will remain unchanged.
+ *
+ * @return KErrNone if the requested interface was returned in the
+ * aDispatchInterface parameter; KErrNotFound if the requested interface
+ * was not found in the Licensee LTSY.
+ */
+	{
+	TSYLOGENTRYEXITARGS(_L8("aDispatchInterfaceId=%d"), aDispatchInterfaceId);
+
+	switch (aDispatchInterfaceId)
+		{
+
+		// Handlers for IPCs used in boot sequence
+
+	case MLtsyDispatchPhoneBootNotifyModemStatusReady::KLtsyDispatchPhoneBootNotifyModemStatusReadyApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneBootNotifyModemStatusReady*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneBootNotifySimStatusReady*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetNetworkRegistrationStatus::KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetNetworkRegistrationStatus*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSimRefreshRegister::KLtsyDispatchPhoneSimRefreshRegisterApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSimRefreshRegister*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetFdnStatus::KLtsyDispatchPhoneGetFdnStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetFdnStatus*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetHomeNetwork::KLtsyDispatchPhoneGetHomeNetworkApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetHomeNetwork*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneNspsWakeup::KLtsyDispatchPhoneNspsWakeupApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneNspsWakeup*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSetSystemNetworkMode::KLtsyDispatchPhoneSetSystemNetworkModeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSetSystemNetworkMode*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetCurrentSystemNetworkModes::KLtsyDispatchPhoneGetCurrentSystemNetworkModesApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetCurrentSystemNetworkModes*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneResetNetServer::KLtsyDispatchPhoneResetNetServerApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneResetNetServer*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSetAlwaysOnMode::KLtsyDispatchPhoneSetAlwaysOnModeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSetAlwaysOnMode*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSetDriveMode::KLtsyDispatchPhoneSetDriveModeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSetDriveMode*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetHspaStatus::KLtsyDispatchPhoneGetHspaStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetHspaStatus*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSetHspaStatus::KLtsyDispatchPhoneSetHspaStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSetHspaStatus*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetNetworkProviderName::KLtsyDispatchPhoneGetNetworkProviderNameApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetNetworkProviderName*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetOperatorName::KLtsyDispatchPhoneGetOperatorNameApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetOperatorName*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetCellInfo::KLtsyDispatchPhoneGetCellInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetCellInfo*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+
+		// CallControl Functional Unit interface handlers
+
+	case MLtsyDispatchCallControlAnswer::KLtsyDispatchCallControlAnswerApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlAnswer*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlHold::KLtsyDispatchCallControlHoldApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlHold*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlDialEmergency::KLtsyDispatchCallControlDialEmergencyApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlDialEmergency*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlStopDtmfTone::KLtsyDispatchCallControlStopDtmfToneApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlStopDtmfTone*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlSetActiveAlsLine::KLtsyDispatchCallControlSetActiveAlsLineApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlSetActiveAlsLine*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlSendDtmfTonesCancel::KLtsyDispatchCallControlSendDtmfTonesCancelApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlSendDtmfTonesCancel*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlHangUp::KLtsyDispatchCallControlHangUpApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlHangUp*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlResume::KLtsyDispatchCallControlResumeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlResume*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlSetDynamicHscsdParams::KLtsyDispatchCallControlSetDynamicHscsdParamsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlSetDynamicHscsdParams*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlDialVoice::KLtsyDispatchCallControlDialVoiceApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlDialVoice*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlTransfer::KLtsyDispatchCallControlTransferApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlTransfer*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlSendDtmfTones::KLtsyDispatchCallControlSendDtmfTonesApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlSendDtmfTones*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlGetIdentityServiceStatus::KLtsyDispatchCallControlGetIdentityServiceStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlGetIdentityServiceStatus*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlSwap::KLtsyDispatchCallControlSwapApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlSwap*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlLoanDataPort::KLtsyDispatchCallControlLoanDataPortApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlLoanDataPort*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlRecoverDataPort::KLtsyDispatchCallControlRecoverDataPortApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlRecoverDataPort*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlStartDtmfTone::KLtsyDispatchCallControlStartDtmfToneApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlStartDtmfTone*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlGetActiveAlsLine::KLtsyDispatchCallControlGetActiveAlsLineApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlGetActiveAlsLine*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlDialData::KLtsyDispatchCallControlDialDataApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlDialData*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlQueryIsEmergencyNumber::KLtsyDispatchCallControlQueryIsEmergencyNumberApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlQueryIsEmergencyNumber*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlGetAlsPpSupport::KLtsyDispatchCallControlGetAlsPpSupportApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlGetAlsPpSupport*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlGetAlsBlockedStatus::KLtsyDispatchCallControlGetAlsBlockedStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlGetAlsBlockedStatus*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlSetAlsBlocked::KLtsyDispatchCallControlSetAlsBlockedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlSetAlsBlocked*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlGetLifeTime::KLtsyDispatchCallControlGetLifeTimeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlGetLifeTime*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlTerminateErrorCall::KLtsyDispatchCallControlTerminateErrorCallApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlTerminateErrorCall*>
+												(iLtsyDispatchCallControlHandler);
+        break;
+	case MLtsyDispatchCallControlTerminateAllCalls::KLtsyDispatchCallControlTerminateAllCallsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlTerminateAllCalls*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlGetCallForwardingIndicator::KLtsyDispatchCallControlGetCallForwardingIndicatorApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlGetCallForwardingIndicator*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+	case MLtsyDispatchCallControlUpdateLifeTimer::KLtsyDispatchCallControlUpdateLifeTimerApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlUpdateLifeTimer*>
+												(iLtsyDispatchCallControlHandler);
+		break;
+
+		// Phone Functional Unit interface handlers
+
+	case MLtsyDispatchPhoneGetServiceProviderName::KLtsyDispatchPhoneGetServiceProviderNameApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetServiceProviderName*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetPhoneId::KLtsyDispatchPhoneGetPhoneIdApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetPhoneId*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetDetectedNetworks::KLtsyDispatchPhoneGetDetectedNetworksApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetDetectedNetworks*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetDetectedNetworksCancel::KLtsyDispatchPhoneGetDetectedNetworksCancelApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetDetectedNetworksCancel*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSelectNetwork::KLtsyDispatchPhoneSelectNetworkApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSelectNetwork*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSelectNetworkCancel::KLtsyDispatchPhoneSelectNetworkCancelApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSelectNetworkCancel*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSetNetworkSelectionSetting::KLtsyDispatchPhoneSetNetworkSelectionSettingApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSetNetworkSelectionSetting*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetCurrentNetworkInfo::KLtsyDispatchPhoneGetCurrentNetworkInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetCurrentNetworkInfo*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetNetworkMode::KLtsyDispatchPhoneGetNetworkModeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetNetworkMode*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetNitzInfo::KLtsyDispatchPhoneGetNitzInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetNitzInfo*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetSignalStrength::KLtsyDispatchPhoneGetSignalStrengthApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetSignalStrength*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetBatteryInfo::KLtsyDispatchPhoneGetBatteryInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetBatteryInfo*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneRegisterCellInfoChangeNotification::KLtsyDispatchPhoneRegisterCellInfoChangeNotificationApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneRegisterCellInfoChangeNotification*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetPhoneCellInfo::KLtsyDispatchPhoneGetPhoneCellInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetPhoneCellInfo*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetUsimServiceSupport::KLtsyDispatchPhoneGetUsimServiceSupportApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetUsimServiceSupport*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetCurrentActiveUsimApplication::KLtsyDispatchPhoneGetCurrentActiveUsimApplicationApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetCurrentActiveUsimApplication*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneTerminateAllCalls::KLtsyDispatchPhoneTerminateAllCallsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneTerminateAllCalls*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneGetSystemNetworkBand::KLtsyDispatchPhoneGetSystemNetworkBandApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneGetSystemNetworkBand*>
+												(iLtsyDispatchPhoneHandler);
+		break;
+	case MLtsyDispatchPhoneSetSystemNetworkBand::KLtsyDispatchPhoneSetSystemNetworkBandApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhoneSetSystemNetworkBand*>
+												(iLtsyDispatchPhoneHandler);
+		break;		
+		
+		// Security Functional Unit interface handlers
+
+	case MLtsyDispatchSecurityGetSecurityCodeInfo::KLtsyDispatchSecurityGetSecurityCodeInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityGetSecurityCodeInfo*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityGetLockInfo::KLtsyDispatchSecurityGetLockInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityGetLockInfo*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityAbortSecurityCode::KLtsyDispatchSecurityAbortSecurityCodeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityAbortSecurityCode*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityGetCurrentActivePin::KLtsyDispatchSecurityGetCurrentActivePinApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityGetCurrentActivePin*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecuritySetLockSetting::KLtsyDispatchSecuritySetLockSettingApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecuritySetLockSetting*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityVerifySecurityCode::KLtsyDispatchSecurityVerifySecurityCodeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityVerifySecurityCode*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityGetPin1DisableSupported::KLtsyDispatchSecurityGetPin1DisableSupportedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityGetPin1DisableSupported*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityCheckSecurityCode::KLtsyDispatchSecurityCheckSecurityCodeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityCheckSecurityCode*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityDisablePhoneLock::KLtsyDispatchSecurityDisablePhoneLockApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityDisablePhoneLock*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityGetCipheringInfo::KLtsyDispatchSecurityGetCipheringInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityGetCipheringInfo*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityIsSecurityCodeBlocked::KLtsyDispatchSecurityIsSecurityCodeBlockedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityIsSecurityCodeBlocked*>
+												(iLtsyDispatchSecurityHandler);
+		break;
+	case MLtsyDispatchSecurityCheckSecurityCodeCancel::KLtsyDispatchSecurityCheckSecurityCodeCancelApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSecurityCheckSecurityCodeCancel*>
+												(iLtsyDispatchSecurityHandler);
+		break;												
+				
+		// PhonebookEn Functional Unit interface handlers
+
+	case MLtsyDispatchPhonebookEnStoreGetInfo::KLtsyDispatchPhonebookEnStoreGetInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookEnStoreGetInfo*>
+												(iLtsyDispatchPhonebookEnHandler);
+		break;
+	case MLtsyDispatchPhonebookEnStoreReadAll::KLtsyDispatchPhonebookEnStoreReadAllApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookEnStoreReadAll*>
+												(iLtsyDispatchPhonebookEnHandler);
+		break;
+	case MLtsyDispatchPhonebookEnStoreReadEntry::KLtsyDispatchPhonebookEnStoreReadEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookEnStoreReadEntry*>
+												(iLtsyDispatchPhonebookEnHandler);
+		break;
+
+		// CellBroadcast Functional Unit interface handlers
+
+	case MLtsyDispatchCellBroadcastSetBroadcastFilterSetting::KLtsyDispatchCellBroadcastSetBroadcastFilterSettingApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCellBroadcastSetBroadcastFilterSetting*>
+												(iLtsyDispatchCellBroadcastHandler);
+		break;
+	case MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage::KLtsyDispatchCellBroadcastActivateBroadcastReceiveMessageApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCellBroadcastActivateBroadcastReceiveMessage*>
+												(iLtsyDispatchCellBroadcastHandler);
+		break;
+	case MLtsyDispatchCellBroadcastReceiveMessageCancel::KLtsyDispatchCellBroadcastReceiveMessageCancelApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCellBroadcastReceiveMessageCancel*>
+												(iLtsyDispatchCellBroadcastHandler);
+		break;
+	case MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing::KLtsyDispatchCellBroadcastStartSimCbTopicBrowsingApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCellBroadcastStartSimCbTopicBrowsing*>
+												(iLtsyDispatchCellBroadcastHandler);
+		break;		
+	case MLtsyDispatchCellBroadcastDeleteSimCbTopic::KLtsyDispatchCellBroadcastDeleteSimCbTopicApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCellBroadcastDeleteSimCbTopic*>
+												(iLtsyDispatchCellBroadcastHandler);
+		break;		
+
+		// PhonebookOn Functional Unit interface handlers
+
+	case MLtsyDispatchPhonebookOnStoreRead::KLtsyDispatchPhonebookOnStoreReadApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreRead*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreDeleteAll::KLtsyDispatchPhonebookOnStoreDeleteAllApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreDeleteAll*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreReadEntry::KLtsyDispatchPhonebookOnStoreReadEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreReadEntry*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreGetInfo::KLtsyDispatchPhonebookOnStoreGetInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreGetInfo*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreGetReadStoreSize::KLtsyDispatchPhonebookOnStoreGetReadStoreSizeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreGetReadStoreSize*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreDeleteEntry::KLtsyDispatchPhonebookOnStoreDeleteEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreDeleteEntry*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreWriteEntry::KLtsyDispatchPhonebookOnStoreWriteEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreWriteEntry*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreWrite::KLtsyDispatchPhonebookOnStoreWriteApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreWrite*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+	case MLtsyDispatchPhonebookOnStoreGetStoreSize::KLtsyDispatchPhonebookOnStoreGetStoreSizeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookOnStoreGetStoreSize*>
+												(iLtsyDispatchPhonebookOnHandler);
+		break;
+
+		// Phonebook Functional Unit interface handlers
+
+	case MLtsyDispatchPhonebookStoreReadEntry::KLtsyDispatchPhonebookStoreReadEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreReadEntry*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreDeleteEntry::KLtsyDispatchPhonebookStoreDeleteEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreDeleteEntry*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreCache::KLtsyDispatchPhonebookStoreCacheApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreCache*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreGetPhonebookInfo::KLtsyDispatchPhonebookStoreGetPhonebookInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreGetPhonebookInfo*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreInitialise::KLtsyDispatchPhonebookStoreInitialiseApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreInitialise*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreDeleteAll::KLtsyDispatchPhonebookStoreDeleteAllApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreDeleteAll*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookSmsStoreReadAll::KLtsyDispatchPhonebookSmsStoreReadAllApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookSmsStoreReadAll*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreWriteEntry::KLtsyDispatchPhonebookStoreWriteEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreWriteEntry*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookGetPhoneStoreInfo::KLtsyDispatchPhonebookGetPhoneStoreInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookGetPhoneStoreInfo*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookSmsStoreDeleteEntry::KLtsyDispatchPhonebookSmsStoreDeleteEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookSmsStoreDeleteEntry*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookSmsStoreDeleteAll::KLtsyDispatchPhonebookSmsStoreDeleteAllApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookSmsStoreDeleteAll*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookSmsStoreGetInfo::KLtsyDispatchPhonebookSmsStoreGetInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookSmsStoreGetInfo*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookSmsStoreReadEntry::KLtsyDispatchPhonebookSmsStoreReadEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookSmsStoreReadEntry*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookSmsStoreWriteEntry::KLtsyDispatchPhonebookSmsStoreWriteEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookSmsStoreWriteEntry*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+	case MLtsyDispatchPhonebookStoreCacheCancel::KLtsyDispatchPhonebookStoreCacheCancelApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPhonebookStoreCacheCancel*>
+												(iLtsyDispatchPhonebookHandler);
+		break;
+
+		// Sim Functional Unit interface handlers
+
+	case MLtsyDispatchSimGetApnControlListServiceStatus::KLtsyDispatchSimGetApnControlListServiceStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetApnControlListServiceStatus*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimDeleteApnName::KLtsyDispatchSimDeleteApnNameApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimDeleteApnName*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimEnumerateApnEntries::KLtsyDispatchSimEnumerateApnEntriesApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimEnumerateApnEntries*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimChangeSecurityCode::KLtsyDispatchSimChangeSecurityCodeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimChangeSecurityCode*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSetFdnSetting::KLtsyDispatchSimSetFdnSettingApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSetFdnSetting*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetCustomerServiceProfile::KLtsyDispatchSimGetCustomerServiceProfileApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetCustomerServiceProfile*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetSubscriberId::KLtsyDispatchSimGetSubscriberIdApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetSubscriberId*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimAppendApnName::KLtsyDispatchSimAppendApnNameApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimAppendApnName*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetActiveIccApplicationType::KLtsyDispatchSimGetActiveIccApplicationTypeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetActiveIccApplicationType*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSetIccMessageWaitingIndicators::KLtsyDispatchSimSetIccMessageWaitingIndicatorsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSetIccMessageWaitingIndicators*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSetApnControlListServiceStatus::KLtsyDispatchSimSetApnControlListServiceStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSetApnControlListServiceStatus*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetApnName::KLtsyDispatchSimGetApnNameApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetApnName*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSimRefreshDone::KLtsyDispatchSimSimRefreshDoneApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSimRefreshDone*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetServiceTable::KLtsyDispatchSimGetServiceTableApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetServiceTable*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetIccMessageWaitingIndicators::KLtsyDispatchSimGetIccMessageWaitingIndicatorsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetIccMessageWaitingIndicators*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSimLockActivate::KLtsyDispatchSimSimLockActivateApiId:
+			aDispatchInterface = static_cast<MLtsyDispatchSimSimLockActivate*>
+													(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSimLockDeActivate::KLtsyDispatchSimSimLockDeActivateApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSimLockDeActivate*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetAnswerToReset::KLtsyDispatchSimGetAnswerToResetApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetAnswerToReset*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetSimCardReaderStatus::KLtsyDispatchSimGetSimCardReaderStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetSimCardReaderStatus*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetSimAuthenticationEapSimData::KLtsyDispatchSimGetSimAuthenticationEapSimDataApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetSimAuthenticationEapSimData*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimGetSimAuthenticationEapAkaData::KLtsyDispatchSimGetSimAuthenticationEapAkaDataApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimGetSimAuthenticationEapAkaData*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimPowerSimOff::KLtsyDispatchSimPowerSimOffApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimPowerSimOff*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimPowerSimOn::KLtsyDispatchSimPowerSimOnApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimPowerSimOn*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimReadSimFile::KLtsyDispatchSimReadSimFileApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimReadSimFile*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSendApduRequest::KLtsyDispatchSimSendApduRequestApiId:
+			aDispatchInterface = static_cast<MLtsyDispatchSimSendApduRequest*>
+													(iLtsyDispatchSimHandler);
+			break;
+	case MLtsyDispatchSimSendApduRequestV2::KLtsyDispatchSimSendApduRequestV2ApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSendApduRequestV2*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSimWarmReset::KLtsyDispatchSimSimWarmResetApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSimWarmReset*>
+												(iLtsyDispatchSimHandler);
+		break;
+	case MLtsyDispatchSimSetSimMessageStatusRead::KLtsyDispatchSimSetSimMessageStatusReadApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSimSetSimMessageStatusRead*>
+												(iLtsyDispatchSimHandler);
+		break;
+
+		// Sms Functional Unit interface handlers
+
+	case MLtsyDispatchSmsSendSatSms::KLtsyDispatchSmsSendSatSmsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsSendSatSms*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsGetSmsStoreInfo::KLtsyDispatchSmsGetSmsStoreInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsGetSmsStoreInfo*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsGetSmspList::KLtsyDispatchSmsGetSmspListApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsGetSmspList*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsNackSmsStored::KLtsyDispatchSmsNackSmsStoredApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsNackSmsStored*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsAckSmsStored::KLtsyDispatchSmsAckSmsStoredApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsAckSmsStored*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsResumeSmsReception::KLtsyDispatchSmsResumeSmsReceptionApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsResumeSmsReception*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsSendSmsMessage::KLtsyDispatchSmsSendSmsMessageApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsSendSmsMessage*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsSendSmsMessageNoFdnCheck::KLtsyDispatchSmsSendSmsMessageNoFdnCheckApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsSendSmsMessageNoFdnCheck*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsSetMoSmsBearer::KLtsyDispatchSmsSetMoSmsBearerApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsSetMoSmsBearer*>
+												(iLtsyDispatchSmsHandler);
+		break;
+	case MLtsyDispatchSmsStoreSmspListEntry::KLtsyDispatchSmsStoreSmspListEntryApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSmsStoreSmspListEntry*>
+												(iLtsyDispatchSmsHandler);
+		break;
+
+		// CallControlMultiparty Functional Unit interface handlers
+
+	case MLtsyDispatchCallControlMultipartyConferenceHangUp::KLtsyDispatchCallControlMultipartyConferenceHangUpApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlMultipartyConferenceHangUp*>
+												(iLtsyDispatchCallControlMultipartyHandler);
+		break;
+	case MLtsyDispatchCallControlMultipartyConferenceAddCall::KLtsyDispatchCallControlMultipartyConferenceAddCallApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlMultipartyConferenceAddCall*>
+												(iLtsyDispatchCallControlMultipartyHandler);
+		break;
+	case MLtsyDispatchCallControlMultipartyCreateConference::KLtsyDispatchCallControlMultipartyCreateConferenceApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlMultipartyCreateConference*>
+												(iLtsyDispatchCallControlMultipartyHandler);
+		break;
+	case MLtsyDispatchCallControlMultipartyConferenceSwap::KLtsyDispatchCallControlMultipartyConferenceSwapApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlMultipartyConferenceSwap*>
+												(iLtsyDispatchCallControlMultipartyHandler);
+		break;
+	case MLtsyDispatchCallControlMultipartyConferenceGoOneToOne::KLtsyDispatchCallControlMultipartyConferenceGoOneToOneApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchCallControlMultipartyConferenceGoOneToOne*>
+												(iLtsyDispatchCallControlMultipartyHandler);
+		break;
+
+		// SupplementaryServices Functional Unit interface handlers
+
+	case MLtsyDispatchSupplementaryServicesSendNetworkServiceRequestNoFdnCheck::KLtsyDispatchSupplementaryServicesSendNetworkServiceRequestNoFdnCheckApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSendNetworkServiceRequestNoFdnCheck*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesGetCallWaitingStatus::KLtsyDispatchSupplementaryServicesGetCallWaitingStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesGetCallWaitingStatus*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSendNetworkServiceRequest::KLtsyDispatchSupplementaryServicesSendNetworkServiceRequestApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSendNetworkServiceRequest*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesGetCallBarringStatus::KLtsyDispatchSupplementaryServicesGetCallBarringStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesGetCallBarringStatus*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSetCallBarringStatus::KLtsyDispatchSupplementaryServicesSetCallBarringStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSetCallBarringStatus*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSetCallForwardingStatus::KLtsyDispatchSupplementaryServicesSetCallForwardingStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSetCallForwardingStatus*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSetCallWaitingStatus::KLtsyDispatchSupplementaryServicesSetCallWaitingStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSetCallWaitingStatus*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSetSsPassword::KLtsyDispatchSupplementaryServicesSetSsPasswordApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSetSsPassword*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesGetCallForwardingStatus::KLtsyDispatchSupplementaryServicesGetCallForwardingStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesGetCallForwardingStatus*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSendUssdMessage::KLtsyDispatchSupplementaryServicesSendUssdMessageApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSendUssdMessage*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesSendUssdMessageNoFdnCheck::KLtsyDispatchSupplementaryServicesSendUssdMessageNoFdnCheckApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSendUssdMessageNoFdnCheck*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;		
+	case MLtsyDispatchSupplementaryServicesSendUssdRelease::KLtsyDispatchSupplementaryServicesSendUssdReleaseApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesSendUssdRelease*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+	case MLtsyDispatchSupplementaryServicesClearBlacklist::KLtsyDispatchSupplementaryServicesClearBlacklistApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSupplementaryServicesClearBlacklist*>
+												(iLtsyDispatchSupplementaryServicesHandler);
+		break;
+
+		// PacketServices Functional Unit interface handlers
+
+	case MLtsyDispatchPacketServicesPacketAttach::KLtsyDispatchPacketServicesPacketAttachApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesPacketAttach*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetPacketAttachMode::KLtsyDispatchPacketServicesGetPacketAttachModeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetPacketAttachMode*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus::KLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatus*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesPacketDetach::KLtsyDispatchPacketServicesPacketDetachApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesPacketDetach*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetPdpContextConfig::KLtsyDispatchPacketServicesSetPdpContextConfigApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetPdpContextConfig*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesModifyActivePdpContext::KLtsyDispatchPacketServicesModifyActivePdpContextApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesModifyActivePdpContext*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesInitialisePdpContext::KLtsyDispatchPacketServicesInitialisePdpContextApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesInitialisePdpContext*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesDeletePdpContext::KLtsyDispatchPacketServicesDeletePdpContextApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesDeletePdpContext*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetPacketAttachMode::KLtsyDispatchPacketServicesSetPacketAttachModeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetPacketAttachMode*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesNotifyPacketStatusChange::KLtsyDispatchPacketServicesNotifyPacketStatusChangeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesNotifyPacketStatusChange*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams::KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetDefaultPdpContextGprsParams*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params::KLtsyDispatchPacketServicesSetDefaultPdpContextR99R4ParamsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetDefaultPdpContextR99R4Params*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;		
+	case MLtsyDispatchPacketServicesActivatePdpContext::KLtsyDispatchPacketServicesActivatePdpContextApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesActivatePdpContext*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetPdpContextQosGprs::KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetPdpContextQosGprs*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetPdpContextQosR99R4::KLtsyDispatchPacketServicesSetPdpContextQosR99R4ApiId:
+			aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetPdpContextQosR99R4*>
+													(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesSetPdpContextQosR5::KLtsyDispatchPacketServicesSetPdpContextQosR5ApiId:
+				aDispatchInterface = static_cast<MLtsyDispatchPacketServicesSetPdpContextQosR5*>
+														(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest::KLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequestApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequest*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesDeactivatePdpContext::KLtsyDispatchPacketServicesDeactivatePdpContextApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesDeactivatePdpContext*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesAddPacketFilter::KLtsyDispatchPacketServicesAddPacketFilterApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesAddPacketFilter*>
+												(iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetStatus::KLtsyDispatchPacketServicesGetStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetStatus*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetStaticCapabilities::KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetStaticCapabilities*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists::KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetMaxNoMonitoredServiceLists*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetMaxNoActiveServices::KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetMaxNoActiveServices*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesInitialiseMbmsContext::KLtsyDispatchPacketServicesInitialiseMbmsContextApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesInitialiseMbmsContext*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus::KLtsyDispatchPacketServicesGetMbmsNetworkServiceStatusApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesGetMbmsNetworkServiceStatus*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList::KLtsyDispatchPacketServicesUpdateMbmsMonitorServiceListApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesUpdateMbmsMonitorServiceList*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesUpdateMbmsSessionList::KLtsyDispatchPacketServicesUpdateMbmsSessionListApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesUpdateMbmsSessionList*>
+						   				 (iLtsyDispatchPacketServicesHandler);
+		break;
+	case MLtsyDispatchPacketServicesRemovePacketFilter::KLtsyDispatchPacketServicesRemovePacketFilterApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchPacketServicesRemovePacketFilter*>
+										(iLtsyDispatchPacketServicesHandler);
+		break;
+
+		// Sat Functional Unit interface handlers
+
+	case MLtsyDispatchSatSmsDeliverReport::KLtsyDispatchSatSmsDeliverReportApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatSmsDeliverReport*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetImageInstance::KLtsyDispatchSatGetImageInstanceApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetImageInstance*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetIconData::KLtsyDispatchSatGetIconDataApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetIconData*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetClut::KLtsyDispatchSatGetClutApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetClut*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetDefaultBearerCapability::KLtsyDispatchSatGetDefaultBearerCapabilityApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetDefaultBearerCapability*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetSmsPpDownloadSupported::KLtsyDispatchSatGetSmsPpDownloadSupportedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetSmsPpDownloadSupported*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetSmsControlActivated::KLtsyDispatchSatGetSmsControlActivatedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetSmsControlActivated*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatCellBroadcastEnvelope::KLtsyDispatchSatCellBroadcastEnvelopeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatCellBroadcastEnvelope*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetAccessTechnology::KLtsyDispatchSatGetAccessTechnologyApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetAccessTechnology*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatTimingAdvance::KLtsyDispatchSatTimingAdvanceApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatTimingAdvance*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatSmControlResponseData::KLtsyDispatchSatSmControlResponseDataApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatSmControlResponseData*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatProvideLocationInfo::KLtsyDispatchSatProvideLocationInfoApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatProvideLocationInfo*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatSetPollingInterval::KLtsyDispatchSatSetPollingIntervalApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatSetPollingInterval*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatSmsPpDownloadEnvelope::KLtsyDispatchSatSmsPpDownloadEnvelopeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatSmsPpDownloadEnvelope*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatLocalInformationNmr::KLtsyDispatchSatLocalInformationNmrApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatLocalInformationNmr*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatCallAndSmsControlEnvelope::KLtsyDispatchSatCallAndSmsControlEnvelopeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatCallAndSmsControlEnvelope*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatRefreshAllowed::KLtsyDispatchSatRefreshAllowedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatRefreshAllowed*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatReady::KLtsyDispatchSatReadyApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatReady*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatPCmdNotification::KLtsyDispatchSatPCmdNotificationApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatPCmdNotification*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatUssdControlEnvelopeError::KLtsyDispatchSatUssdControlEnvelopeErrorApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatUssdControlEnvelopeError*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatTimerExpirationEnvelope::KLtsyDispatchSatTimerExpirationEnvelopeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatTimerExpirationEnvelope*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatTerminalRsp::KLtsyDispatchSatTerminalRspApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatTerminalRsp*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatMenuSelectionEnvelope::KLtsyDispatchSatMenuSelectionEnvelopeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatMenuSelectionEnvelope*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatEventDownloadEnvelope::KLtsyDispatchSatEventDownloadEnvelopeApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatEventDownloadEnvelope*>
+												(iLtsyDispatchSatHandler);
+		break;
+	case MLtsyDispatchSatGetUssdControlSupported::KLtsyDispatchSatGetUssdControlSupportedApiId:
+		aDispatchInterface = static_cast<MLtsyDispatchSatGetUssdControlSupported*>
+												(iLtsyDispatchSatHandler);
+		break;
+	default:
+		return TSYLOGSETEXITERR(KErrNotFound);
+		} // switch (aDispatchInterfaceId)
+
+	return TSYLOGSETEXITERR(KErrNone);
+	} // CLtsyFactoryV1::GetDispatchHandler
+
+TBool CLtsyFactoryV1::IsDispatchInterfaceSupported(TInt aFuncUnitId, TLtsyDispatchInterfaceApiId aDispatchApiId)
+	{
+	switch(aFuncUnitId)
+	    {
+	  case KDispatchCallControlFuncUnitId:
+	    return iLtsyDispatchCallControlHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchPhoneFuncUnitId:
+	    return iLtsyDispatchPhoneHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchSecurityFuncUnitId:
+	    return iLtsyDispatchSecurityHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchPhonebookEnFuncUnitId:
+	    return iLtsyDispatchPhonebookEnHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchCellBroadcastFuncUnitId:
+	    return iLtsyDispatchCellBroadcastHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchPhonebookOnFuncUnitId:
+	    return iLtsyDispatchPhonebookOnHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchPhonebookFuncUnitId:
+	    return iLtsyDispatchPhonebookHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchSimFuncUnitId:
+	    return iLtsyDispatchSimHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchSmsFuncUnitId:
+	    return iLtsyDispatchSmsHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchCallControlMultipartyFuncUnitId:
+	    return iLtsyDispatchCallControlMultipartyHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchSupplementaryServicesFuncUnitId:
+	    return iLtsyDispatchSupplementaryServicesHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchPacketServicesFuncUnitId:
+	    return iLtsyDispatchPacketServicesHandler->IsInterfaceSupported(aDispatchApiId);
+	  case KDispatchSatFuncUnitId:
+	    return iLtsyDispatchSatHandler->IsInterfaceSupported(aDispatchApiId);
+	  default:
+	    return EFalse;
+	    }
+	}
+
+void CLtsyFactoryV1::IsCallbackIndicatorSupported(TInt aFuncUnitId, TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask)
+	{
+	switch(aFuncUnitId)
+	    {
+	  case KDispatchCallControlFuncUnitId:
+	    iLtsyDispatchCallControlHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchPhoneFuncUnitId:
+	    iLtsyDispatchPhoneHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchSecurityFuncUnitId:
+	    iLtsyDispatchSecurityHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchPhonebookEnFuncUnitId:
+	    iLtsyDispatchPhonebookEnHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchCellBroadcastFuncUnitId:
+	    iLtsyDispatchCellBroadcastHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchPhonebookOnFuncUnitId:
+	    iLtsyDispatchPhonebookOnHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchPhonebookFuncUnitId:
+	    iLtsyDispatchPhonebookHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchSimFuncUnitId:
+	    iLtsyDispatchSimHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchSmsFuncUnitId:
+	    iLtsyDispatchSmsHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchCallControlMultipartyFuncUnitId:
+	    iLtsyDispatchCallControlMultipartyHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchSupplementaryServicesFuncUnitId:
+	    iLtsyDispatchSupplementaryServicesHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchPacketServicesFuncUnitId:
+	    iLtsyDispatchPacketServicesHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  case KDispatchSatFuncUnitId:
+	    iLtsyDispatchSatHandler->IsCallbackIndicatorSupported(aIdGroup, aIndIdBitMask);
+	    break;
+	  default:
+		  aIndIdBitMask = 0;//no support
+		 break;
+	    }
+	}
+
+CTsySatMessagingBase* CLtsyFactoryV1::GetSatMessagingService(MCtsySatService& /*aSatMessagingService*/)
+	{
+		return NULL;
+	}
+
+/**
+ * Called by the CTSY Dispatcher to inform this object that it can clean itself up.
+ */
+void CLtsyFactoryV1::Release()
+	{
+	TSYLOGENTRYEXIT;
+	delete this;
+	} // CLtsyFactoryV1::Release
+
+/**
+ * Creates an instance of an object implementing the MLtsyFactoryBase interface.
+ * ConstructL() must be called on the object returned before it is used.
+ */
+EXPORT_C MLtsyFactoryBase* LTsyFactoryL()
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyFactoryV1* factory = new (ELeave) CLtsyFactoryV1;
+	return factory;
+	} // LTsyFactoryL
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsypacketserviceshandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,995 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPacketServicesHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+#include <pcktcs.h>
+#include <ctsy/ltsy/ltsylogger.h>
+
+#include "commengine.h"
+#include "tsyconfg.h"
+#include "cltsypacketserviceshandler.h"
+#include "ltsymacros.h"
+#include "tsyconfg.h"
+#include "mslogger.h"
+#include "atgprsattach.h"
+#include "atgprsdetach.h"
+#include "atgprsntwkregstatus.h"
+#include "atgprsconfig.h"
+#include "initialisepdpcontext.h"
+#include "atgprscontextactivate.h"
+#include "activatecontextandgetaddr.h"
+#include "atgprscontextdeactivate.h"
+#include "atgprscontextdelete.h"
+#include "atgprsqosprofile.h"
+#include "asynchelperrequest.h"
+#include "atgprsntwkregstatuschange.h"
+
+CLtsyPacketServicesHandler::CLtsyPacketServicesHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+	CGlobalPhonemanager* aGloblePhone)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback),
+	iGloblePhone(aGloblePhone)
+	{
+	}
+	
+CLtsyPacketServicesHandler::~CLtsyPacketServicesHandler()
+	{
+	if(iAsyncHelperRequest)
+		{
+		delete iAsyncHelperRequest;
+		iAsyncHelperRequest = NULL;
+		}
+	if(iNtwkRegStatusChange)
+		{
+		delete iNtwkRegStatusChange;
+		iNtwkRegStatusChange = NULL;
+		}
+	}
+
+CLtsyPacketServicesHandler* CLtsyPacketServicesHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+	CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPacketServicesHandler* self = new (ELeave) CLtsyPacketServicesHandler(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CLtsyPacketServicesHandler* CLtsyPacketServicesHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+		CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPacketServicesHandler* self=
+			CLtsyPacketServicesHandler::NewLC(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CLtsyPacketServicesHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	iAsyncHelperRequest = CAsyncHelperRequest::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iInitialisePdpContext = CInitialisePdpContext::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+	iNtwkRegStatusChange = CATGprsNtwkRegStatusChange::NewL((*iGloblePhone), iCtsyDispatcherCallback);	
+	} // CLtsyPacketServicesHandler::ConstructL
+
+TBool CLtsyPacketServicesHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		case KLtsyDispatchPacketServicesPacketAttachApiId: 
+			return ETrue;
+		case KLtsyDispatchPacketServicesGetPacketAttachModeApiId: 
+			return ETrue;	
+		case KLtsyDispatchPacketServicesGetPacketNetworkRegistrationStatusApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesPacketDetachApiId: 
+			return ETrue;
+		case KLtsyDispatchPacketServicesSetPdpContextConfigApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesModifyActivePdpContextApiId: 
+			return EFalse;			
+		case KLtsyDispatchPacketServicesInitialisePdpContextApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesDeletePdpContextApiId: 
+			return ETrue;
+		case KLtsyDispatchPacketServicesSetPacketAttachModeApiId: 
+			return EFalse;	
+		case KLtsyDispatchPacketServicesNotifyPacketStatusChangeApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesSetDefaultPdpContextR99R4ParamsApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesActivatePdpContextApiId: 
+			return ETrue;
+		case KLtsyDispatchPacketServicesSetPdpContextQosGprsApiId: 
+			return ETrue;
+		case KLtsyDispatchPacketServicesSetPdpContextQosR99R4ApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesSetPdpContextQosR5ApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesRejectNetworkInitiatedContextActivationRequestApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesDeactivatePdpContextApiId: 
+			return ETrue;
+		case KLtsyDispatchPacketServicesAddPacketFilterApiId: 
+			return EFalse;
+		case KLtsyDispatchPacketServicesGetStatusApiId: 
+			return ETrue;			
+		case KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId: 
+			return EFalse;
+		case KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId: 
+			return EFalse;			
+		case KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId: 
+			return EFalse;
+		case KLtsyDispatchPacketServicesInitialiseMbmsContextApiId: 
+			return EFalse;			
+		case KLtsyDispatchPacketServicesGetMbmsNetworkServiceStatusApiId: 
+			return EFalse;			
+		case KLtsyDispatchPacketServicesUpdateMbmsMonitorServiceListApiId: 
+			return EFalse;			
+		case KLtsyDispatchPacketServicesUpdateMbmsSessionListApiId: 
+			return EFalse;			
+		case KLtsyDispatchPacketServicesRemovePacketFilterApiId: 
+			return EFalse;			
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyPacketServicesHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+ * @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+ * @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask =   KLtsyDispatchPacketServicesNotifyQosProfileChangedIndId |
+						  KLtsyDispatchPacketServicesNotifyRatTransferCapsChangeIndId |
+						  KLtsyDispatchPacketServicesNotifyPacketDynamicCapsChangeIndId |
+						  KLtsyDispatchPacketServicesNotifyPdpContextAddedIndId |
+						  KLtsyDispatchPacketServicesNotifyNetworkInitiatedContextActivationRequestIndId |
+						  KLtsyDispatchPacketServicesNotifyPdpContextConfigChangedIndId |
+						  KLtsyDispatchPacketServicesNotifyPdpContextStatusChangeIndId |
+						  KLtsyDispatchPacketServicesNotifyPacketNetworkRegistrationStatusIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	}
+
+
+TInt CLtsyPacketServicesHandler::HandlePacketAttachReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesPacketAttachComp()
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+    LOGTEXTREL(_L8("pkt:attach"));
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		CATGprsAttach* ATGprsAttach = CATGprsAttach::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATGprsAttach);
+		ATGprsAttach->StartRequest();
+		}
+	else
+	    {
+	    LOGTEXTREL2(_L8("pkt:err(%d) in attach"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandlePacketAttachReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleGetPacketAttachModeReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetPacketAttachModeComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNone;
+	iAsyncHelperRequest->SetRequestId(MLtsyDispatchPacketServicesGetPacketAttachMode::KLtsyDispatchPacketServicesGetPacketAttachModeApiId);
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetPacketAttachModeReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleGetPacketNetworkRegistrationStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetPacketNetworkRegistrationStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		CATGprsNtwkRegStatus* ATGprsNtwkRegStatus = CATGprsNtwkRegStatus::NewL(*iGloblePhone,
+				                                          iCtsyDispatcherCallback,
+				                                          *iNtwkRegStatusChange);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATGprsNtwkRegStatus);
+		ATGprsNtwkRegStatus->StartRequest();
+		}
+	else
+	    {
+	    LOGTEXTREL2(_L8("pkt:err(%d) in GetPacketNetworkRegistrationStatus"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetPacketNetworkRegistrationStatusReqL
+
+
+TInt CLtsyPacketServicesHandler::HandlePacketDetachReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesPacketDetachComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+    LOGTEXTREL(_L8("pkt:detach"));
+
+    TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		CATGprsDetach* ATGprsDetach = CATGprsDetach::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATGprsDetach);
+		ATGprsDetach->StartRequest();
+		}
+	else
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in detach"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandlePacketDetachReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleSetPdpContextConfigReqL(const TDesC& aContextId,
+		const TDesC8& aAccessPointName,
+		const RPacketContext::TProtocolType aPdpType,
+		const TDesC8& aPdpAddress,
+		const TDesC8& aPcoBuffer)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPdpContextConfigComp()
+ *
+ * @param contextId The context name, the descriptor should be TBuf<10>
+ * @param iAccessPointName The access name which identifies the GGSN to be used
+ * @param iPdpType The protocol type
+ * @param iPdpAddress The PDP address for this context
+ * @param aPcoBuffer The pco buffer
+ * 
+ * The purpose of the protocol configuration options (PCO) is to transfer external network protocol options 
+ * associated with a PDP context activation, and transfer additional (protocol) data 
+ * (e.g. configuration parameters, error codes or messages/events) associated with an external protocol 
+ * or an application.
+ * The protocol configuration options (PCO) is a type 4 information element with a minimum length of 3 
+ * octets and a maximum length of 253 octets
+ * In order to generate the PCO buffer a TTlvStruct object is being used. The TTlvStruct wraps the buffers  
+ * inserted to the PCO and identifies the buffers with given IDs.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+    LOGTEXTREL2(_L8("pkt:setconfig,APN>%S<"), &aAccessPointName);
+	TInt ret = KErrNotSupported;	
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		TInt tmp = GetContext(aContextId);
+		if(tmp >= 0)
+			{
+			iGloblePhone->iContextList[tmp]->iDefContextConfigGPRS.iAccessPointName = aAccessPointName;
+			iGloblePhone->iContextList[tmp]->iDefContextConfigGPRS.iPdpType = aPdpType;
+			iGloblePhone->iContextList[tmp]->iDefContextConfigGPRS.iPdpAddress = aPdpAddress;
+			iGloblePhone->iContextList[tmp]->iDefContextConfigGPRS.iProtocolConfigOption.iMiscBuffer = aPcoBuffer;
+			
+						
+			CATGPRSSetConfig* ATGPRSSetConfig = CATGPRSSetConfig::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+			iGloblePhone->iEventSignalActive = ETrue;
+			ATGPRSSetConfig->SetContext(iGloblePhone->iContextList[tmp]->iContextID);
+			iGloblePhone->SetActiveRequest(ATGPRSSetConfig);
+			ATGPRSSetConfig->StartRequest();
+			}
+		else
+		    {
+	        LOGTEXTREL2(_L8("pkt:err(%d) in setconfig, not found"), tmp);
+		    }
+		}
+	else
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in setconfig"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleSetPdpContextConfigReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleModifyActivePdpContextReqL(const TDesC& /*aContextName*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesModifyActivePdpContextComp()
+ *
+ * @param aContextName Context name for which the modification is intended
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;	
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleModifyActivePdpContextReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleInitialisePdpContextReqL(const TDesC& aPrimaryContextName, const TDesC& /*aSecondaryContextName*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesInitialisePdpContextComp()
+ *
+ * @param aPrimaryContextName Primary context name in the form of a character string, the descriptor should be TBuf<10>
+ * @param aSecondaryContextName Optional secondary context name in the form of a character string, the descriptor should be TBuf<10>
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	LOGTEXT2(_L8("aPrimaryContextName >%S<"), &aPrimaryContextName);
+	LOGTEXTREL2(_L8("pkt:initctxt>%S<"), &aPrimaryContextName);
+	TInt ret = KErrNone;
+	TInt cid = 0;
+	TInt contextCount = iGloblePhone->iContextList.Count();
+	if(contextCount > 0)
+		{
+		for(TInt i = 0;i < contextCount;i++)
+			{
+			if(iGloblePhone->iContextList[i]->iInfo.iName == aPrimaryContextName)
+				{
+		        LOGTEXTREL2(_L8("pkt:err(%d) in initctxt, already existed"), ret);
+				return KErrNotSupported;
+				}
+			}
+		}
+
+	cid = GenerateNewContextCid(aPrimaryContextName);
+	LOGTEXT2(_L8("newcid=%d"),cid);
+	if(cid > MaxNumberOfContexts())
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in initctxt, context number overflow"), ret);
+		return KErrNotSupported;
+	    }
+	
+	TContextInfomation  *tmpContext = new TContextInfomation;
+	tmpContext->iInfo.iName = aPrimaryContextName;
+	tmpContext->iContextID = cid;
+	iGloblePhone->iContextList.Append(tmpContext);
+	LOGTEXT2(_L8("iGloblePhone->iContextList[0]->iContextID=%d"),iGloblePhone->iContextList[0]->iContextID);
+
+	iInitialisePdpContext->SetContext(cid);
+	iInitialisePdpContext->StartRequest();
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleInitialisePdpContextReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleDeletePdpContextReqL(const TDesC& aContextName)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesDeletePdpContextComp()
+ *
+ * @param aContextName the context name to be deleted, , the descriptor should be TBuf<10>
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	LOGTEXTREL2(_L8("pkt:delete aContextName:\t%S"),&aContextName);
+	
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		TInt tmp = -1;
+		tmp = GetContext(aContextName);
+		if(tmp >= 0)
+			{		
+			CATGprsContextDelete* ATGprsContextDelete = CATGprsContextDelete::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+			iGloblePhone->iEventSignalActive = ETrue;
+			ATGprsContextDelete->SetContext(iGloblePhone->iContextList[tmp]->iContextID);
+			iGloblePhone->SetActiveRequest(ATGprsContextDelete);
+			ATGprsContextDelete->StartRequest();
+			}
+		else
+			{
+            LOGTEXTREL2(_L8("pkt:err(%d) in deletectxt, not found"), tmp);
+			ret = KErrNotFound;
+			}
+		}
+	else
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in deletectxt"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleDeletePdpContextReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleSetPacketAttachModeReqL(RPacketService::TAttachMode /*aAttachMode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPacketAttachModeComp()
+ *
+ * @param aAttachMode the attach mode due to be set.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleSetPacketAttachModeReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleNotifyPacketStatusChangeReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesNotifyPacketStatusChangeComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleNotifyPacketStatusChangeReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleSetDefaultPdpContextGprsParamsReqL(const RPacketContext::TContextConfigGPRS& aContextConfigGprs)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetDefaultPdpContextParamsComp()
+ *
+ * @param aContextConfigGprs Default GPRS parameters
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = 0;
+	SetDefaultContextConfigGPRS(&aContextConfigGprs);
+	iAsyncHelperRequest->SetRequestId(KLtsyDispatchPacketServicesSetDefaultPdpContextGprsParamsApiId);
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleSetDefaultPdpContextGprsParamsReqL
+
+TInt CLtsyPacketServicesHandler::HandleSetDefaultPdpContextR99R4ParamsReqL(const RPacketContext::TContextConfigR99_R4& /*aContextConfigR99R4*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetDefaultPdpContextParamsComp()
+ *
+ * @param aContextConfigR99R4 Default R99/R4 parameters
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleSetDefaultPdpContextR99R4ParamsReqL
+
+
+
+TInt CLtsyPacketServicesHandler::HandleActivatePdpContextReqL(const TDesC& aContextName)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesActivatePdpContextComp()
+ *
+ * @param aContextName The context name.	 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+    LOGTEXTREL(_L8("pkt:activatectxt"));
+	TInt ret = KErrNotSupported;	
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		TInt tmp = GetContext(aContextName);
+		if(tmp >= 0)
+			{		
+			CActivatContextAndGetAddr* ActivatContextAndGetAddr = CActivatContextAndGetAddr::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+			iGloblePhone->iEventSignalActive = ETrue;
+			ActivatContextAndGetAddr->SetContext(iGloblePhone->iContextList[tmp]->iContextID);
+			iGloblePhone->SetActiveRequest(ActivatContextAndGetAddr);
+			ActivatContextAndGetAddr->StartRequest();
+			}
+		}
+	else
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in activatectxt"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleActivatePdpContextReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleSetPdpContextQosGprsReqL(const TDesC& aContextName, const RPacketQoS::TQoSGPRSRequested& aQoSConfig)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPdpContextQosComp()
+ *
+ * @param aContextName the name of the context.
+ * @param aQoSConfig the QoS configuration parameters. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+    LOGTEXTREL(_L8("pkt:setctxtQos"));
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		TInt tmp = GetContext(aContextName);
+		if(tmp >= 0)
+			{		
+			CATGprsSetProfileReq* ATGprsSetProfileReq = CATGprsSetProfileReq::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+			iGloblePhone->iEventSignalActive = ETrue;
+			iGloblePhone->iContextList[tmp]->iQoSConfig = aQoSConfig;
+			ATGprsSetProfileReq->SetContext(iGloblePhone->iContextList[tmp]->iContextID);
+			iGloblePhone->SetActiveRequest(ATGprsSetProfileReq);
+			ATGprsSetProfileReq->StartRequest();
+			}
+		}
+	else
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in setctxtQos"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleSetPdpContextQosGprsReqL
+
+TInt CLtsyPacketServicesHandler::HandleSetPdpContextQosR99R4ReqL(const TDesC& aContextName, const RPacketQoS::TQoSR99_R4Requested& /*aQoSConfig*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPdpContextQosComp()
+ *
+ * @param aContextName The name of the context.
+ * @param aQoSConfig The QoS configuration parameters. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+    TSYLOGENTRYEXIT;
+    
+    RPacketQoS::TQoSGPRSRequested qosGprsReq;
+    qosGprsReq.iReqPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+    qosGprsReq.iMinPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+    qosGprsReq.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+    qosGprsReq.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+    qosGprsReq.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+    qosGprsReq.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+    qosGprsReq.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+    qosGprsReq.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+    qosGprsReq.iReqMeanThroughput = RPacketQoS::EMeanThroughputBestEffort;
+    qosGprsReq.iMinMeanThroughput = RPacketQoS::EMeanThroughputBestEffort;
+
+    return HandleSetPdpContextQosGprsReqL(aContextName, qosGprsReq);
+    } // CLtsyPacketServicesHandler::HandleSetPdpContextQosR99R4ReqL
+
+TInt CLtsyPacketServicesHandler::HandleSetPdpContextQosR5ReqL(const TDesC& aContextName, const RPacketQoS::TQoSR5Requested& /*aQoSConfig*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPdpContextQosComp()
+ *
+ * @param aContextName The name of the context.
+ * @param aQoSConfig The QoS configuration parameters. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+    TSYLOGENTRYEXIT;
+    
+    RPacketQoS::TQoSGPRSRequested qosGprsReq;
+    qosGprsReq.iReqPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+    qosGprsReq.iMinPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+    qosGprsReq.iReqDelay = RPacketQoS::EUnspecifiedDelayClass;
+    qosGprsReq.iMinDelay = RPacketQoS::EUnspecifiedDelayClass;
+    qosGprsReq.iReqReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+    qosGprsReq.iMinReliability = RPacketQoS::EUnspecifiedReliabilityClass;
+    qosGprsReq.iReqPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+    qosGprsReq.iMinPeakThroughput = RPacketQoS::EUnspecifiedPeakThroughput;
+    qosGprsReq.iReqMeanThroughput = RPacketQoS::EMeanThroughputBestEffort;
+    qosGprsReq.iMinMeanThroughput = RPacketQoS::EMeanThroughputBestEffort;
+
+    return HandleSetPdpContextQosGprsReqL(aContextName, qosGprsReq);
+    } // CLtsyPacketServicesHandler::HandleSetPdpContextQosR5ReqL
+	
+
+
+TInt CLtsyPacketServicesHandler::HandleRejectNetworkInitiatedContextActivationRequestReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesRejectNetworkInitiatedContextActivationRequestComp()
+ * 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleRejectNetworkInitiatedContextActivationRequestReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleDeactivatePdpContextReqL(const TDesC& aContextName)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesDeactivatePdpContextComp()
+ *
+ * @param aContextName The context name that is to be deactivated.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+    LOGTEXTREL2(_L8("pkt:deact ctxt>%S<"),&aContextName);
+	TInt ret = KErrNotSupported;
+
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(KErrNone == ret)
+		{
+		TInt tmp = GetContext(aContextName);
+		if(tmp >= 0)
+			{	
+			CATGprsContextDeactivate* ATGprsContextDeactivate = CATGprsContextDeactivate::NewL(*iGloblePhone, iCtsyDispatcherCallback);
+			iGloblePhone->iEventSignalActive = ETrue;
+			ATGprsContextDeactivate->SetContext(iGloblePhone->iContextList[tmp]->iContextID);
+			iGloblePhone->SetActiveRequest(ATGprsContextDeactivate);
+			ATGprsContextDeactivate->StartRequest();
+			ret = KErrNone;
+			}
+		else
+		    {
+	        LOGTEXTREL2(_L8("pkt:err(%d) in deact ctxt, not found"), tmp);
+		    ret = KErrNotFound;
+		    }
+		}
+	else
+	    {
+        LOGTEXTREL2(_L8("pkt:err(%d) in deact ctxt"), ret);
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleDeactivatePdpContextReqL
+
+TInt CLtsyPacketServicesHandler::HandleAddPacketFilterSyncL(const TDesC& /*aContextName*/,  CArrayFixFlat<RPacketContext::TPacketFilterV2>& /*aContextFilter*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPdpContextConfigComp
+ * 
+ * @param aContextName The name of the context.
+ * @param aContextFilter An array contains up to eight filters to be used
+ * for configuring the secondary context.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleAddPacketFilterSyncL
+
+
+TInt CLtsyPacketServicesHandler::HandleGetStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetStatus()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = 0;
+	iAsyncHelperRequest->SetRequestId(KLtsyDispatchPacketServicesGetStatusApiId);
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetStatusReqL
+
+TInt CLtsyPacketServicesHandler::HandleGetStaticCapabilitiesReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetStaticCapabilitiesComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = 0;
+	iAsyncHelperRequest->SetRequestId(KLtsyDispatchPacketServicesGetStaticCapabilitiesApiId);
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetStaticCapabilitiesReqL
+
+TInt CLtsyPacketServicesHandler::HandleGetMaxNoMonitoredServiceListsReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetMaxNoMonitoredServiceListsComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = 0;
+	iAsyncHelperRequest->SetRequestId(KLtsyDispatchPacketServicesGetMaxNoMonitoredServiceListsApiId);
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetMaxNoMonitoredServiceListsReqL
+
+TInt CLtsyPacketServicesHandler::HandleGetMaxNoActiveServicesReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetMaxNoActiveServicesComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = 0;
+	iAsyncHelperRequest->SetRequestId(KLtsyDispatchPacketServicesGetMaxNoActiveServicesApiId);
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetMaxNoActiveServicesReqL
+
+TInt CLtsyPacketServicesHandler::HandleInitialiseMbmsContextReqL(const TDesC& /*aContextName*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesInitialiseMbmsContextComp()
+ *
+ * @param aContextName The context name in the form of a character string 
+ * the maximum length of the descriptor should not exceed KMaxInfoName.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleInitialiseMbmsContextReqL
+
+TInt CLtsyPacketServicesHandler::HandleGetMbmsNetworkServiceStatusReqL(TBool /*aAttemptAttach*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesGetMbmsNetworkServiceStatusComp()
+ * 
+ * @param aAttemptAttach If a GMM attached is to be perfomed.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleGetMbmsNetworkServiceStatusReqL
+
+TInt CLtsyPacketServicesHandler::HandleUpdateMbmsMonitorServiceListsReqL(TMbmsAction /*aAction*/, const CPcktMbmsMonitoredServiceList& /*aServiceList*/, const CPcktMbmsMonitoredServiceList& /*aChangeList*/)
+/**
+ * It is a request call that is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesUpdateMbmsMonitorServiceListComp()
+ * 
+ * @param aAction The MBMS action (add, remove or remove all).
+ * @param aServiceList The current MBMS monitor service availability list as held by the CTSY.
+ * @param aChangeList The list of entries to be changed as per the action. (e.g. the action = Add,
+ * the change list will contain entries to be added to the MBMS monitor service availability list)
+ *
+ * @return KErrNone on success, otherwise another error code indicating the
+ * failure.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleUpdateMbmsMonitorServiceListsReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleUpdateMbmsSessionListReqL(const TDesC& /*aContextName*/, TMbmsAction /*aAction*/, TMbmsSessionId /*aSessionId*/, const TMbmsSessionIdList& /*aServiceList*/)
+/**
+ * It is a request call that is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesUpdateMbmsSessionListComp()
+ * 
+ * @param aContextName The MBMS context name in the form of a character string.
+ * @param aAction The action to be performed (add, remove or remove all).
+ * @param aSessionId The MBMS session identifier which needs to be received or removed.
+ * @param aServiceList The MBMS services table as held by the CTSY.
+ *
+ * @return KErrNone on success, otherwise another error code indicating the
+ * failure.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleUpdateMbmsSessionListReqL
+
+
+TInt CLtsyPacketServicesHandler::HandleRemovePacketFilterSyncL(const TDesC& /*aContextName*/, TInt /*aFilterId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPacketServicesSetPdpContextConfigComp
+ * 
+ * @param aContextName The name of the context.
+ * @param aFilterId The filter Id to be removed.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPacketServicesHandler::HandleRemovePacketFilterSyncL
+
+TInt CLtsyPacketServicesHandler::MaxNumberOfContexts()
+/**
+ * This function returns the maximum number of contexts that the phone supports.
+ */
+    {
+    return iGloblePhone->iPhoneStatus.iGprsMaxNumContexts;
+    }
+TInt CLtsyPacketServicesHandler::GetContext(const TDesC& aName)
+/**
+ * This function returns a specific context
+ * @param aCount context to Retrieve in linked list.
+ */
+    {
+    TInt index = -1;
+    TInt count = iGloblePhone->iContextList.Count();
+    for(TInt i = 0; i < count; i++)
+    	{
+    	if(0 ==(iGloblePhone->iContextList[i]->iInfo.iName.Compare(aName)))
+    		{
+    		index = i;
+    		}
+    	}
+    
+    LOGTEXT3(_L8("[Ltsy Pkt] iContext->ContextName() >%S<, index=%d"), &aName, index);
+    return index;
+    }
+
+TInt CLtsyPacketServicesHandler::GenerateNewContextCid(const TDesC& /*aName*/)
+/**
+ * This function generates a unique context name and the first not taken cid number.
+ * There is a 1 to 1 mapping between this Cid and the one in the phone. 
+ * In order to do this we need to check all existing Cids, since they may not
+ * be in conical order and there can be holes in the list(3,1,4,6,5) we need 
+ * to loop around and find the lowest that we can use to create a name and a new
+ * Cid.
+ * @param aName New name that is generated.
+ * @param aCid New context id.
+ */
+    {
+    TInt lowestAvailableCid = 1;
+    TInt count = iGloblePhone->iContextList.Count();
+    if(count != 0 )
+        {
+        // There can be gaps between the Cids that the tsy has, so get the
+        // Cid number between them, if any. This nested for loop will find 
+        // the lowest available cid there is.
+        for(TInt k = 0; k < count;k++)
+            {
+            for(TInt i = 0; i < count;i++)
+                {
+                if(iGloblePhone->iContextList[i]->iContextID == lowestAvailableCid)
+                    ++lowestAvailableCid;
+                }
+            }
+        }
+    return lowestAvailableCid;
+    }
+
+void CLtsyPacketServicesHandler::SetDefaultContextConfigGPRS(const RPacketContext::TContextConfigGPRS* aContextConfig)
+/**
+ * This function sets the default context configuration.
+ *
+ * @param aContextConfigV01 Set default context configuration.
+ */
+    {
+    iDefContextConfigGPRS.iPdpType = aContextConfig->iPdpType;
+    iDefContextConfigGPRS.iAccessPointName.Copy(aContextConfig->iAccessPointName);
+    iDefContextConfigGPRS.iPdpAddress.Copy(aContextConfig->iPdpAddress);
+    iDefContextConfigGPRS.iPdpCompression = aContextConfig->iPdpCompression;
+    iDefContextConfigGPRS.iAnonymousAccessReqd = aContextConfig->iAnonymousAccessReqd;
+    }
+//
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonebookenhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,198 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhonebookEnHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+
+
+#include "cltsyphonebookenhandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+#include "globalphonemanager.h"
+#include "atphbkengetinfo.h"
+#include "atphbkenread.h"
+#include "atphbkenreadall.h"
+
+CLtsyPhonebookEnHandler::CLtsyPhonebookEnHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	:iCtsyDispatcherCallback(aCtsyDispatcherCallback),iGloblePhone(aGloblePhone)
+
+	{
+	}
+
+	
+CLtsyPhonebookEnHandler::~CLtsyPhonebookEnHandler()
+	{
+	}
+
+
+CLtsyPhonebookEnHandler* CLtsyPhonebookEnHandler::NewLC(
+		CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhonebookEnHandler* self = new (ELeave) CLtsyPhonebookEnHandler(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyPhonebookEnHandler* CLtsyPhonebookEnHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhonebookEnHandler* self=
+			CLtsyPhonebookEnHandler::NewLC(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyPhonebookEnHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsyPhonebookEnHandler::ConstructL
+
+TBool CLtsyPhonebookEnHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		case  KLtsyDispatchPhonebookEnStoreGetInfoApiId:
+			return ETrue;
+		case KLtsyDispatchPhonebookEnStoreReadAllApiId:
+			return ETrue;
+		case KLtsyDispatchPhonebookEnStoreReadEntryApiId:
+			return ETrue;
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyPhonebookEnHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsyPhonebookEnHandler::HandleStoreGetInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookEnStoreGetInfoComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkEnGetInfo* atPhbkEnGetInfo = CAtPhbkEnGetInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkEnGetInfo);
+		atPhbkEnGetInfo->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookEnHandler::HandleStoreGetInfoReqL
+
+
+TInt CLtsyPhonebookEnHandler::HandleStoreReadAllReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookEnStoreReadAllComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkEnReadAll* atPhbkEnReadAll = CAtPhbkEnReadAll::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkEnReadAll);
+		atPhbkEnReadAll->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookEnHandler::HandleStoreReadAllReqL
+
+
+TInt CLtsyPhonebookEnHandler::HandleStoreReadEntryReqL(TInt aIndex)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookEnStoreReadEntryComp()
+ *
+ * @param aIndex index of the EN entry.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkEnRead* atPhbkEnRead = CAtPhbkEnRead::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkEnRead);
+		atPhbkEnRead->SetIndex(aIndex);
+		atPhbkEnRead->StartRequest();
+	    }
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookEnHandler::HandleStoreReadEntryReqL
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonebookhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,570 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhonebookHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+#include <mpbutil.h>
+#include <etelmm.h>
+
+
+#include "cltsyphonebookhandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+#include "globalphonemanager.h"
+#include "atsmsstoreinfo.h"
+#include "atsmsstorewrite.h"
+#include "atsmsstoreread.h"
+#include "atsmsstoredelete.h"
+#include "atsmsstorereadall.h"
+#include "atphbkgetphonestoreinfo.h"
+#include "atphbkstoreinitialise.h"
+#include "atphbkstorewrite.h"
+#include "atphbkstoreread.h"
+#include "atphbkstorecache.h"
+#include "atphbkstoredelete.h"
+
+
+CLtsyPhonebookHandler::CLtsyPhonebookHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+    :iCtsyDispatcherCallback(aCtsyDispatcherCallback),iGloblePhone(aGloblePhone)
+	{
+	}
+
+	
+CLtsyPhonebookHandler::~CLtsyPhonebookHandler()
+	{
+
+	}
+
+
+CLtsyPhonebookHandler* CLtsyPhonebookHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhonebookHandler* self = new (ELeave) CLtsyPhonebookHandler(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyPhonebookHandler* CLtsyPhonebookHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhonebookHandler* self=
+			CLtsyPhonebookHandler::NewLC(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyPhonebookHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	} // CLtsyPhonebookHandler::ConstructL
+
+TBool CLtsyPhonebookHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried.
+ * @return indication whether interface is supported or not.
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		case KLtsyDispatchPhonebookStoreReadEntryApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookStoreDeleteEntryApiId: 
+		 	return ETrue;	
+		case KLtsyDispatchPhonebookStoreCacheApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookStoreCacheCancelApiId: 
+			return ETrue;		
+//		case KLtsyDispatchPhonebookStoreGetPhonebookInfoApiId: 
+//			return ETrue;	
+		case KLtsyDispatchPhonebookStoreInitialiseApiId: 
+			return ETrue;			
+		case KLtsyDispatchPhonebookStoreDeleteAllApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookStoreWriteEntryApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookGetPhoneStoreInfoApiId: 
+			return ETrue;		
+		case KLtsyDispatchPhonebookSmsStoreReadAllApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookSmsStoreDeleteEntryApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookSmsStoreDeleteAllApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookSmsStoreGetInfoApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhonebookSmsStoreReadEntryApiId: 
+			return ETrue;		
+		case KLtsyDispatchPhonebookSmsStoreWriteEntryApiId: 
+			return ETrue;	
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyPhonebookHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1.
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	}
+
+
+TInt CLtsyPhonebookHandler::HandleStoreReadEntryReqL(DispatcherPhonebook::TPhonebook aPhonebook, TInt aIndex, TInt aNumberOfSlots)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreReadEntryComp()
+ *
+ * @param aPhonebook The phonebook to read entries from.
+ * @param aIndex Specifies the index to start reading from, must be >= 1.
+ * @param aNumSlots Specifies the number of slots to read, must be >= 1 and <= total number of slots.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ * 
+ * @see RMobilePhoneBookStore::Read()
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	if((aPhonebook != DispatcherPhonebook::EIccAdn)&&
+			(aPhonebook != DispatcherPhonebook::EIccAdn))
+		{
+		return TSYLOGSETEXITERR(KErrNotSupported);
+		}
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkStoreRead* atPhbkStoreRead = CAtPhbkStoreRead::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkStoreRead);
+		atPhbkStoreRead->SetPhonebookType(aPhonebook);
+		atPhbkStoreRead->SetReadParam(aIndex,aNumberOfSlots);
+		atPhbkStoreRead->StartRequest();
+	    }
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreReadEntryReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreDeleteEntryReqL(DispatcherPhonebook::TPhonebook aPhonebook, TInt aIndex)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreDeleteEntryComp()
+ *
+ * @param aPhonebook The phonebook to delete an entry from.
+ * @param aIndex The entry index in the phonebook to delete.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ * 
+ * @see RMobilePhoneBookStore::Delete() 
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	if((aPhonebook != DispatcherPhonebook::EIccAdn)&&
+			(aPhonebook != DispatcherPhonebook::EIccAdn))
+		{
+		return TSYLOGSETEXITERR(KErrNotSupported);
+		}
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkStoreDelete* atPhbkStoreDelete = CAtPhbkStoreDelete::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkStoreDelete);
+		atPhbkStoreDelete->SetPhonebookType(aPhonebook);
+		atPhbkStoreDelete->SetDeleteIndex(aIndex);
+		atPhbkStoreDelete->StartRequest();
+	    }
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreDeleteEntryReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreCacheReqL(DispatcherPhonebook::TPhonebook aPhonebook)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreCacheComp()
+ *
+ * @param aPhonebook The phonebook to cache.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	if((aPhonebook != DispatcherPhonebook::EIccAdn)&&
+			(aPhonebook != DispatcherPhonebook::EIccAdn))
+		{
+		return TSYLOGSETEXITERR(KErrNotSupported);
+		}
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkStoreCache* atPhbkStoreCache = CAtPhbkStoreCache::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkStoreCache);
+		atPhbkStoreCache->SetPhonebookType(aPhonebook);
+		atPhbkStoreCache->StartRequest();
+	    }
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreCacheReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreGetPhonebookInfoReqL(DispatcherPhonebook::TPhonebook /*aPhonebook*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreGetPhonebookInfoComp()
+ *
+ * @param aPhonebook The phonebook to retrieve the information from.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ * 
+ * @see RMobilePhoneBookStore::GetInfo() 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreGetPhonebookInfoReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreInitialiseReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreInitialiseComp()
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+    TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkStoreInitialise* atPhbkStoreInitialise = CAtPhbkStoreInitialise::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkStoreInitialise);
+		atPhbkStoreInitialise->StartRequest();
+	    }
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreInitialiseReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreDeleteAllReqL(DispatcherPhonebook::TPhonebook /*aPhonebook*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreDeleteAllComp()
+ *
+ * @param aPhonebook The phonebook to delete all entries from.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ * 
+ * @see RMobilePhoneBookStore::DeleteAll() 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreDeleteAllReqL
+
+
+TInt CLtsyPhonebookHandler::HandleSmsStoreReadAllReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookSmsStoreReadAllComp().
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsStoreReadAll* atSmsStoreReadAll = CAtSmsStoreReadAll::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsStoreReadAll);
+		atSmsStoreReadAll->StartRequest();
+	    }
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleSmsStoreReadAllReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreWriteEntryReqL(DispatcherPhonebook::TPhonebook aPhonebook, const TDesC8& aEntry)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreWriteEntryComp()
+ *
+ * @param aPhonebook The phonebook to be written to.
+ * @param aEntry The entry to be written, this is coded as a TLV, this can be decoded either
+ * directly via a CPhoneBookBuffer() or via the CPhoneBookEntry::InternalizeFromTlvEntry() utility.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ * 
+ * @see RMobilePhoneBookStore::Write()
+ * @see CPhoneBookBuffer()
+ * @see CPhoneBookEntry::InternalizeFromTlvEntry()
+ */
+	{
+	TSYLOGENTRYEXIT;
+	if((aPhonebook != DispatcherPhonebook::EIccAdn)&&
+			(aPhonebook != DispatcherPhonebook::EIccAdn))
+		{
+		return TSYLOGSETEXITERR(KErrNotSupported);
+		}
+	
+    TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkStoreWrite* atPhbkStoreWrite = CAtPhbkStoreWrite::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkStoreWrite);
+		atPhbkStoreWrite->SetPhonebookType(aPhonebook);
+		atPhbkStoreWrite->SetPhonebookEntryL(aEntry);
+		atPhbkStoreWrite->StartRequest();
+	    }              
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreWriteEntryReqL
+
+
+TInt CLtsyPhonebookHandler::HandleGetPhoneStoreInfoReqL(const TDesC& aStoreName)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookGetPhoneStoreInfoComp()
+ *
+ * @param aStoreName The store to retrieve the information from.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ * 
+ * @see RMobilePhone::GetPhoneStoreInfo()
+ */
+	{
+	TSYLOGENTRYEXIT;
+	if((aStoreName.CompareF(KETelIccFdnPhoneBook) != KErrNone)
+		&&(aStoreName.CompareF(KETelIccAdnPhoneBook) != KErrNone)
+		&&(aStoreName.CompareF(KETelIccSmsStore) != KErrNone))
+		{
+		return TSYLOGSETEXITERR(KErrNotSupported);
+		}
+	
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtPhbkGetPhoneStoreInfo* atPhbkGetPhoneStoreInfo =CAtPhbkGetPhoneStoreInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atPhbkGetPhoneStoreInfo);
+		atPhbkGetPhoneStoreInfo->SetPhoneStoreParam(aStoreName);
+		atPhbkGetPhoneStoreInfo->StartRequest();
+	    }
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleGetPhoneStoreInfoReqL
+
+
+TInt CLtsyPhonebookHandler::HandleSmsStoreDeleteEntryReqL(TInt aIndex)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookSmsStoreDeleteEntryComp().
+ *
+ * @param aIndex index of the entry to be deleted from the SMS store.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsStoreDelete* atSmsStoreDelete = CAtSmsStoreDelete::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsStoreDelete);
+		atSmsStoreDelete->SetDelIndex(aIndex);
+		atSmsStoreDelete->StartRequest();
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleSmsStoreDeleteEntryReqL
+
+
+TInt CLtsyPhonebookHandler::HandleSmsStoreDeleteAllReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookSmsStoreDeleteAllComp().
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsStoreDeleteAll* atSmsStoreDeleteAll = CAtSmsStoreDeleteAll::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsStoreDeleteAll);
+		atSmsStoreDeleteAll->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleSmsStoreDeleteAllReqL
+
+
+TInt CLtsyPhonebookHandler::HandleSmsStoreGetInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookSmsStoreGetInfoComp().
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsStoreInfo* atSmsStoreInfo = CAtSmsStoreInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsStoreInfo);
+		atSmsStoreInfo->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleSmsStoreGetInfoReqL
+
+
+TInt CLtsyPhonebookHandler::HandleSmsStoreReadEntryReqL(TInt aIndex)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookSmsStoreReadEntryComp().
+ *
+ * @param aIndex index of the entry to be read.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsStoreRead* atSmsStoreRead = CAtSmsStoreRead::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsStoreRead);
+		atSmsStoreRead->SetMsgIndex(aIndex);
+		atSmsStoreRead->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleSmsStoreReadEntryReqL
+
+
+TInt CLtsyPhonebookHandler::HandleSmsStoreWriteEntryReqL(const RMobileSmsStore::TMobileGsmSmsEntryV1& aMobileGsmEntry)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookSmsStoreWriteEntryComp().
+ *
+ * @param aMobileGsmEntry Defines contents of a fixed-size GSM SMS entry to be stored.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsStoreWrite* atSmsStoreWrite = CAtSmsStoreWrite::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsStoreWrite);
+		atSmsStoreWrite->SeGsmSmsEntry(aMobileGsmEntry);
+		atSmsStoreWrite->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleSmsStoreWriteEntryReqL
+
+
+TInt CLtsyPhonebookHandler::HandleStoreCacheCancelReqL(DispatcherPhonebook::TPhonebook /*aPhonebook*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookStoreCacheCancel()
+ *
+ * @param aPhonebook The phonebook to cancel the pending cache.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookHandler::HandleStoreCacheCancelReqL
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonebookonhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,288 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhonebookOnHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+
+
+#include "cltsyphonebookonhandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsyPhonebookOnHandler::CLtsyPhonebookOnHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+	
+CLtsyPhonebookOnHandler::~CLtsyPhonebookOnHandler()
+	{
+	}
+
+
+CLtsyPhonebookOnHandler* CLtsyPhonebookOnHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhonebookOnHandler* self = new (ELeave) CLtsyPhonebookOnHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyPhonebookOnHandler* CLtsyPhonebookOnHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhonebookOnHandler* self=
+			CLtsyPhonebookOnHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyPhonebookOnHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsyPhonebookOnHandler::ConstructL
+
+TBool CLtsyPhonebookOnHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+
+	
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyPhonebookOnHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreReadReqL(TInt /*aIndex*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreReadComp
+ *
+ * @param aIndex index of the entry.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreReadReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreDeleteAllReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreDeleteAllComp
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreDeleteAllReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreReadEntryReqL(TInt /*aIndex*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreReadEntryComp
+ *
+ * @param aIndex index of the ON entry.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreReadEntryReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreGetInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreGetInfoComp
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreGetInfoReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreGetReadStoreSizeReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreGetReadStoreSizeComp
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreGetReadStoreSizeReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreDeleteEntryReqL(TInt /*aIndex*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreDeleteEntryComp
+ *
+ * @param aIndex index of the ON entry.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreDeleteEntryReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreWriteEntryReqL(const RMobileONStore::TMobileONEntryV1& /*aMobileOnEntry*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreWriteEntryComp
+ *
+ * @param aMobileOnEntry defines contents of a fixed-size ON entry to be stored.  
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreWriteEntryReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreWriteReqL(const RMobileONStore::TMobileONEntryV1& /*aMobileOnEntry*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreWriteComp
+ *
+ * @param aMobileOnEntry defines contents of a fixed-size ON entry to be stored.  
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreWriteReqL
+
+
+TInt CLtsyPhonebookOnHandler::HandleStoreGetStoreSizeReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhonebookOnStoreGetStoreSizeComp
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhonebookOnHandler::HandleStoreGetStoreSizeReqL
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsyphonehandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1218 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsyPhoneHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+#include <etelmm.h>
+#include <ctsy/ltsy/ltsylogger.h>
+#include <ctsy/ltsy/mltsydispatchphoneinterface.h>
+
+#include "cltsyphonehandler.h"
+#include "ltsymacros.h"
+#include "atgetmodemstatus.h"
+#include "atgetnetworkregistrationstatus.h"
+#include "atgetsimstatusready.h"
+#include "atgetnetworkinfo.h"
+#include "atgetsignalstrength.h"
+#include "atgetbatteryinfo.h"
+#include "atdetectnetwork.h"
+#include "getphoneid.h"
+#include "initializephone.h"
+#include "mslogger.h"
+#include "athangup.h"
+#include "getoperatorname.h"
+#include "atselectnetworkmode.h"
+#include "atselectnetwork.h"
+#include "atgetphonecellinfo.h"
+#include "atgetcellinfo.h"
+#include "atsetnotifycell.h"
+#include "asynchelperrequest.h"
+#include "atnetworkregstatuschange.h"
+#include "atnotifycellinfo.h"
+#include "notifybatteryandsignal.h"
+#include "getfdnstatus.h"
+#include "getcurrentnetworkinfo.h"
+#include "atgetphonecellinfo.h"
+
+CLtsyPhoneHandler::CLtsyPhoneHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback),iGloblePhone(aGloblePhone)
+	{
+	}
+
+	
+CLtsyPhoneHandler::~CLtsyPhoneHandler()
+	{
+	if(iAsyncHelperRequest)
+		{
+		delete iAsyncHelperRequest;
+		iAsyncHelperRequest = NULL;
+		}	
+	if(iNetworkRegStatusChange)
+		{
+		delete iNetworkRegStatusChange;
+		iNetworkRegStatusChange = NULL;
+		}
+	if(iNotifyCellInfo)
+		{
+		delete iNotifyCellInfo;
+		iNotifyCellInfo = NULL;
+		}
+	if(iNotifyBatteryAndSignal)
+		{
+		delete iNotifyBatteryAndSignal;
+		iNotifyBatteryAndSignal = NULL;
+		}
+	if(iInitializePhone)
+		{
+		delete iInitializePhone;
+		iInitializePhone = NULL;
+		}
+	if(iATDetectNetwork)
+		{
+		delete iATDetectNetwork;
+		iATDetectNetwork = NULL;
+		}
+	}
+
+
+CLtsyPhoneHandler* CLtsyPhoneHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhoneHandler* self = new (ELeave) CLtsyPhoneHandler(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsyPhoneHandler* CLtsyPhoneHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback,
+		CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsyPhoneHandler* self=
+			CLtsyPhoneHandler::NewLC(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsyPhoneHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	//for temp
+	iNetworkRegStatusChange = CATNetworkRegStatusChange::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iAsyncHelperRequest = CAsyncHelperRequest::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iNotifyCellInfo = CATNotifyCellInfo::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iNotifyBatteryAndSignal = CNotifyBatteryAndSignal::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iInitializePhone = CInitializePhone::NewL(*iGloblePhone,
+			                                  iCtsyDispatcherCallback,
+			                                  *iNetworkRegStatusChange,
+			                                  *iNotifyBatteryAndSignal);
+	iATDetectNetwork  = CATDetectNetwork::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+	iATSelectNetwork  = CATSelectNetwork::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+	} // CLtsyPhoneHandler::ConstructL
+
+TBool CLtsyPhoneHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		case KLtsyDispatchPhoneBootNotifyModemStatusReadyApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetFdnStatusApiId: 
+			return ETrue; 
+		case KLtsyDispatchPhoneGetHomeNetworkApiId: 
+			return ETrue;	
+		case KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneSimRefreshRegisterApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetServiceProviderNameApiId: 
+			return ETrue; //Not finished
+		case KLtsyDispatchPhoneGetPhoneIdApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetDetectedNetworksApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetDetectedNetworksCancelApiId: 
+			return ETrue; //
+		case KLtsyDispatchPhoneSelectNetworkApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneSelectNetworkCancelApiId: 
+			return ETrue; //KErrNotSupported
+		case KLtsyDispatchPhoneSetNetworkSelectionSettingApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetCurrentNetworkInfoApiId: 
+			return ETrue; //Finished ?
+		case KLtsyDispatchPhoneGetNetworkModeApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetNitzInfoApiId: 
+			return ETrue; 
+		case KLtsyDispatchPhoneGetSignalStrengthApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetBatteryInfoApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneNspsWakeupApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneSetSystemNetworkModeApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneGetCurrentSystemNetworkModesApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneResetNetServerApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneSetAlwaysOnModeApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneSetDriveModeApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneGetHspaStatusApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneSetHspaStatusApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneGetNetworkProviderNameApiId: 
+			return ETrue;  
+		case KLtsyDispatchPhoneGetOperatorNameApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetCellInfoApiId: 
+			return ETrue;  
+		case KLtsyDispatchPhoneRegisterCellInfoChangeNotificationApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetPhoneCellInfoApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetUsimServiceSupportApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneGetCurrentActiveUsimApplicationApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneTerminateAllCallsApiId: 
+			return ETrue;
+		case KLtsyDispatchPhoneGetSystemNetworkBandApiId: 
+			return EFalse;
+		case KLtsyDispatchPhoneSetSystemNetworkBandApiId: 
+			return EFalse;
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsyPhoneHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1.
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask =   KLtsyDispatchPhoneNotifyNetworkModeChangeIndId |
+						  KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId |
+						  KLtsyDispatchPhoneNotifySignalStrengthChangeIndId |
+						  KLtsyDispatchPhoneNotifyNetworkRegistrationStatusChangeIndId |
+						  KLtsyDispatchPhoneNotifyNitzInfoChangeIndId |
+						  KLtsyDispatchPhoneNotifyBatteryInfoChangeIndId |
+						  KLtsyDispatchPhoneNotifyCurrentNetworkChangeIndId |
+						  KLtsyDispatchPhoneNotifyRfStatusChangeIndId |
+						  KLtsyDispatchPhoneNotifyCellInfoChangeIndId ;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	
+	}
+
+TInt CLtsyPhoneHandler::HandleGetFdnStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetFdnStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CGetFdnStatus* GetFdnStatus  = CGetFdnStatus::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(GetFdnStatus);
+		GetFdnStatus->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetFdnStatusReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetNetworkRegistrationStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetNetworkRegistrationStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId);
+		iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CATNetworkRegistration* atNetworkRegStatus  = CATNetworkRegistration::NewL(*iGloblePhone,
+				                                                                   iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atNetworkRegStatus);
+		atNetworkRegStatus->SetIpcRequestCompleteObserver(this);
+		atNetworkRegStatus->SetIpcId(KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId);
+		iNetworkRegStatusChange->Disable();
+		atNetworkRegStatus->StartRequest();
+		}
+	 
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetNetworkRegistrationStatusReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetHomeNetworkReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetHomeNetworkComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetHomeNetworkApiId);
+        iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CATNetworkInfo* ATNetworkInfo  = CATNetworkInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATNetworkInfo);
+		ATNetworkInfo->SetToGetHomeNwk();
+		ATNetworkInfo->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetHomeNetworkReqL
+
+
+TInt CLtsyPhoneHandler::HandleBootNotifyModemStatusReadyReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneBootNotifyModemStatusReadyComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+    // This function is the entry of phone bootup
+	// Let's get the phone bootup
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneNotInitialised)
+		{
+		iGloblePhone->iPhoneStatus.iInitStatus = EPhoneInitialising;
+		iGloblePhone->iEventSignalActive = ETrue;
+		iInitializePhone->StartRequest();
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CATGetModemStatus* ATGetModemStatus = CATGetModemStatus::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATGetModemStatus);
+		ATGetModemStatus->StartRequest();
+		}	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleBootNotifyModemStatusReadyReqL
+
+
+TInt CLtsyPhoneHandler::HandleBootNotifySimStatusReadyReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneBootNotifySimStatusReadyComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneBootNotifySimStatusReadyApiId);
+        iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CATSIMCard* ATSIMCard  = CATSIMCard::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATSIMCard);
+		ATSIMCard->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleBootNotifySimStatusReadyReqL
+
+TInt CLtsyPhoneHandler::HandleSimRefreshRegisterReqL(TUint16 /*aFilesToRegister*/)
+/**
+ * @param aFilesToRegister  Bitmask containing list of files to register for refresh indications.
+ * The list of possible files is specified in TCacheFileTypes.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneSimRefreshRegisterApiId);
+        iInitializePhone->ExecutePendingRequest();   
+        ret = KErrNone;
+		}
+	else if(ret == EPhoneInitialised)
+		{
+		iAsyncHelperRequest->SetRequestId(KLtsyDispatchPhoneSimRefreshRegisterApiId);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSimRefreshRegisterReqL
+
+TInt CLtsyPhoneHandler::HandleGetServiceProviderNameReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetServiceProviderNameComp()
+ *
+ = * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	//TInt ret = KErrNotSupported;
+	TInt ret = 0;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CGetOperatorNmae* GetOperatorName  = CGetOperatorNmae::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		GetOperatorName->SetRequestTypeL(KLtsyDispatchPhoneGetServiceProviderNameApiId);
+		iGloblePhone->SetActiveRequest(GetOperatorName);
+		GetOperatorName->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetServiceProviderNameReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetPhoneIdReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetPhoneIdComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	//TInt ret = KErrNotSupported;
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CGetPhoneID* GetPhoneID  = CGetPhoneID::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(GetPhoneID);
+		GetPhoneID->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetPhoneIdReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetDetectedNetworksReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetDetectedNetworksComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	//TInt ret = KErrNotSupported;
+	TInt ret = 0;
+	
+	ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		iGloblePhone->iEventSignalActive = ETrue;
+		iATDetectNetwork->StartRequest();
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	
+	} // CLtsyPhoneHandler::HandleGetDetectedNetworksReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetDetectedNetworksCancelReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetDetectedNetworksCancelComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	//TInt ret = KErrNotSupported;
+	TInt ret = 0;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if((ret == KErrInUse)&&(iATDetectNetwork->iCommandRunning))
+		{
+		if(iATDetectNetwork->iCommandCancel)
+			{
+			ret = KErrNotSupported;
+			}
+		else
+			{
+		    iATDetectNetwork->CancelCommand();
+		    ret = KErrNone;
+			}
+		}
+	else if(ret == KErrNone)
+		{
+		iAsyncHelperRequest->SetRequestId(KLtsyDispatchPhoneGetDetectedNetworksCancelApiId);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetDetectedNetworksCancelReqL
+
+
+TInt CLtsyPhoneHandler::HandleSelectNetworkReqL(TBool aIsManual, const RMobilePhone::TMobilePhoneNetworkManualSelection& aNetworkManualSelection)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSelectNetworkComp()
+ *
+ * @param aIsManual Specifies whether phone should use a manual or automatic network selection method.
+ * @param aNetworkManualSelection If aIsManual==ETrue, then this parameter contain the user's manually selected network.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	if(!aIsManual)
+		{
+		return KErrNotSupported;
+		}
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		iGloblePhone->iEventSignalActive = ETrue;
+		iATSelectNetwork->SetNetworkSelection(aNetworkManualSelection);
+		iATSelectNetwork->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSelectNetworkReqL
+
+
+TInt CLtsyPhoneHandler::HandleSelectNetworkCancelReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSelectNetworkCancelComp()
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = 0;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if((ret == KErrInUse)&&(iATSelectNetwork->iCommandRunning))
+		{
+		if(iATSelectNetwork->iCommandCancel)
+			{
+			ret = KErrNotSupported;
+			}
+		else
+			{
+			iATSelectNetwork->CancelCommand();
+		    ret = KErrNone;
+			}
+		}
+	else if(ret == KErrNone)
+		{
+		iAsyncHelperRequest->SetRequestId(KLtsyDispatchPhoneSelectNetworkCancelApiId);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSelectNetworkCancelReqL
+
+
+TInt CLtsyPhoneHandler::HandleSetNetworkSelectionSettingReqL(const RMobilePhone::TMobilePhoneNetworkSelectionV1& aPhoneNetworkSelection)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSetNetworkSelectionSettingComp()
+ *
+ * @param aPhoneNetworkSelection The network selection to be set.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	TInt networkSelection = -1;
+	switch (aPhoneNetworkSelection.iMethod)
+		{
+	case RMobilePhone::ENetworkSelectionAutomatic:
+	    networkSelection = 0;
+		break;
+	case RMobilePhone::ENetworkSelectionManual:
+	    networkSelection = 1;
+		break;
+	default:
+	    networkSelection = 0;
+		break;
+		}
+	
+	if(networkSelection != -1)
+		{
+		ret = iGloblePhone->CheckGlobalPhoneStatus();
+		if(ret == KErrNone)
+			{
+			CATSelectNetworkMode* ATSelectNetworkMode  = CATSelectNetworkMode::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+			iGloblePhone->iEventSignalActive = ETrue;
+			iGloblePhone->SetActiveRequest(ATSelectNetworkMode);
+			ATSelectNetworkMode->SetNetworkSelection(networkSelection);
+			ATSelectNetworkMode->StartRequest();
+			ret = KErrNone;
+			}
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSetNetworkSelectionSettingReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetCurrentNetworkInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetCurrentNetworkInfoComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetCurrentNetworkInfoApiId);
+        iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CGetCurrentNetworkInfo* ATNetworkInfo  = CGetCurrentNetworkInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATNetworkInfo);
+		ATNetworkInfo->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetCurrentNetworkInfoReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetNetworkModeReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetNetworkModeComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetNetworkModeApiId);
+        iInitializePhone->ExecutePendingRequest();   	
+		ret = KErrNone;
+		}
+	else if(ret == EPhoneInitialised)
+		{
+		iAsyncHelperRequest->SetRequestId(KLtsyDispatchPhoneGetNetworkModeApiId);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetNetworkModeReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetNitzInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetNitzInfoComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetNitzInfoApiId);
+        iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == EPhoneInitialised)
+		{
+		iAsyncHelperRequest->SetRequestId(KLtsyDispatchPhoneGetNitzInfoApiId);
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetNITZInfoReqL()
+
+
+TInt CLtsyPhoneHandler::HandleGetSignalStrengthReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetSignalStrengthComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetSignalStrengthApiId);
+        iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CATGetSignal* ATGetSignal  = CATGetSignal::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATGetSignal);
+		ATGetSignal->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetSignalStrengthReqL()
+
+
+TInt CLtsyPhoneHandler::HandleGetBatteryInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetBatteryInfoComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == EPhoneInitialising)
+		{
+		iInitializePhone->AppendIpcRequestToPendingListL(KLtsyDispatchPhoneGetBatteryInfoApiId);
+        iInitializePhone->ExecutePendingRequest();   
+		ret = KErrNone;
+		}
+	else if(ret == KErrNone)
+		{
+		CATGetBattery* ATGetBattery  = CATGetBattery::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(ATGetBattery);
+		ATGetBattery->StartRequest();
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetBatteryInfoReqL
+
+
+TInt CLtsyPhoneHandler::HandleNspsWakeupReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneNspsWakeupComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleNspsWakeupReqL
+
+
+TInt CLtsyPhoneHandler::HandleSetSystemNetworkModeReqL(RMmCustomAPI::TNetworkModeCaps /*aMode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSetSystemNetworkModeComp()
+ *
+ * @param aMode Specifies the mode to set the system network to.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSetSystemNetworkModeReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetCurrentSystemNetworkModesReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetCurrentSystemNetworkModesComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = 0;
+	iAsyncHelperRequest->SetRequestId(KLtsyDispatchPhoneGetCurrentSystemNetworkModesApiId);
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetCurrentSystemNetworkModesReqL
+
+
+TInt CLtsyPhoneHandler::HandleResetNetServerReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneResetNetServerComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleResetNetServerReqL
+
+
+TInt CLtsyPhoneHandler::HandleSetAlwaysOnModeReqL(RMmCustomAPI::TSetAlwaysOnMode /*aMode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSetAlwaysOnModeComp()
+ *
+ * @param aMode The new "always on" mode to set, can be
+ *               RMmCustomAPI::EAlwaysModeVPLMN for VPLMN (Visited Public Land Mobile Network) always on,
+ *               RMmCustomAPI::EAlwaysModeHPLMN for HPLMN (Home Public Land Mobile Network) always on,
+ *               RMmCustomAPI::EAlwaysModeBoth for VPLMN and HPLMN always on,
+ *               RMmCustomAPI::EAlwaysModeNeither for neither VPLMN mor HPLMN always on.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSetAlwaysOnModeReqL
+
+
+TInt CLtsyPhoneHandler::HandleSetDriveModeReqL(RMmCustomAPI::TSetDriveMode /*aMode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSetDriveModeComp()
+ *
+ * @param aMode The new mode to set (RMmCustomAPI::EDeactivateDriveMode for deactivate drive mode
+ *               or RMmCustomAPI::EActivateDriveMode to activate drive mode).
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSetDriveModeReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetHspaStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetHspaStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetHspaStatusReqL
+
+
+TInt CLtsyPhoneHandler::HandleSetHspaStatusReqL(RMmCustomAPI::THSxPAStatus /*aStatus*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSetHspaStatusComp()
+ *
+ * @param aStatus The new HSxPA status (enable or disable).
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleSetHspaStatusReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetNetworkProviderNameReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetNetworkProviderNameComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CGetOperatorNmae* GetOperatorName  = CGetOperatorNmae::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		GetOperatorName->SetRequestTypeL(KLtsyDispatchPhoneGetNetworkProviderNameApiId);
+		iGloblePhone->SetActiveRequest(GetOperatorName);
+		GetOperatorName->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetNetworkProviderNameReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetOperatorNameReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetOperatorNameComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CGetOperatorNmae* GetOperatorName  = CGetOperatorNmae::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		GetOperatorName->SetRequestTypeL(KLtsyDispatchPhoneGetOperatorNameApiId);
+		iGloblePhone->SetActiveRequest(GetOperatorName);
+		GetOperatorName->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetOperatorNameReqL
+
+
+TInt CLtsyPhoneHandler::HandleGetCellInfoReqL()
+/**
+ * This request is completed by invoking one of the 
+ * CCtsyDispatcherCallback::CallbackPhoneGetCellInfoComp().
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CATGetCellInfo* atGetCellInfo  = CATGetCellInfo::NewL(*iGloblePhone,
+				                                              iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atGetCellInfo);
+		atGetCellInfo->SetIpcId(KLtsyDispatchPhoneGetCellInfoApiId);
+		atGetCellInfo->SetIpcRequestCompleteObserver(this);
+		iNotifyCellInfo->Disable();
+		atGetCellInfo->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetCellInfoReqL
+
+TInt CLtsyPhoneHandler::HandleRegisterCellInfoChangeNotificationReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneRegisterCellInfoChangeNotificationComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	//TInt ret = KErrNotSupported;
+	TInt ret = KErrNone;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CATSetNotifyCellInfo* atSetNotifyCellInfo  = CATSetNotifyCellInfo::NewL(*iGloblePhone,
+				                                                                iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSetNotifyCellInfo);
+		atSetNotifyCellInfo->SetIpcId(KLtsyDispatchPhoneRegisterCellInfoChangeNotificationApiId);
+		atSetNotifyCellInfo->SetIpcRequestCompleteObserver(this);
+		atSetNotifyCellInfo->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleRegisterCellInfoChangeNotificationReqL 
+
+TInt CLtsyPhoneHandler::HandleGetPhoneCellInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetPhoneCellInfoComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CATGetPhoneCellInfo* atGetPhoneCellInfo  = CATGetPhoneCellInfo::NewL(*iGloblePhone,
+				                                                             iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atGetPhoneCellInfo);
+		atGetPhoneCellInfo->SetIpcRequestCompleteObserver(this);
+		atGetPhoneCellInfo->SetIpcId(KLtsyDispatchPhoneGetPhoneCellInfoApiId);
+		// disable to get the notification as we may get the incorrect response after CATGetPhoneCellInfo command was issued
+		iNotifyCellInfo->Disable();
+		atGetPhoneCellInfo->StartRequest();
+		}
+	else if (ret == KErrInUse)
+		{
+		// as dispather will post two IPC requests(KLtsyDispatchPhoneRegisterCellInfoChangeNotificationApiId and KLtsyDispatchPhoneGetPhoneCellInfoApiId)
+		// together, so we need store one and then execute this AT command after previous one was complete
+		iPendingIpcId = KLtsyDispatchPhoneGetPhoneCellInfoApiId;
+		CRequestBase* activeReq = iGloblePhone->CurrentActiveRequest();
+		if(activeReq)
+		    {
+		    if(activeReq->IpcId() == KLtsyDispatchPhoneRegisterCellInfoChangeNotificationApiId)
+		        {
+		        ret = KErrNone;
+		        }
+		    }
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetPhoneCellInfoReqL
+
+TInt CLtsyPhoneHandler::HandleGetGetUsimServiceSupportReqL(TInt /*aApplicationNumber*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetUsimServiceSupportComp()
+ * 
+ * @param aApplicationNumber The application number to check support for in the USIM.
+ * 
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetGetUsimServiceSupportReqL
+
+TInt CLtsyPhoneHandler::HandleGetCurrentActiveUsimApplicationReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetCurrentActiveUsimApplicationComp()
+ * 
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetCurrentActiveUsimApplicationReqL
+  
+TInt CLtsyPhoneHandler::HandleTerminateAllCallsReqL(TInt /*aCallId*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneTerminateAllCallsComp()
+ * 
+ * @param aCallId if a call is in the connecting state then this parameter will contain the id of that call, else 0.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	LOGTEXT(_L8("[Ltsy Phone]  Starting CLtsyPhoneHandler::HandleTerminateAllCallsReqL()"));
+	
+	TInt ret = KErrNotSupported;
+	ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if(ret == KErrNone)
+		{
+		CATHangUp* cHangUp = CATHangUp::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(cHangUp);
+		cHangUp->SetHangupOperator(CATHangUp::ERMobilePhoneAPI);
+		cHangUp->StartRequest();
+		}
+	return ret;
+	} // CLtsyPhoneHandler::HandleTerminateAllCallsReqL
+
+TInt CLtsyPhoneHandler::HandleGetSystemNetworkBandReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneGetSystemNetworkBandComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetSystemNetworkBandReqL
+
+TInt CLtsyPhoneHandler::HandleSetSystemNetworkBandReqL(RMmCustomAPI::TBandSelection /*aBand*/, RMmCustomAPI::TNetworkModeCaps /*aMode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackPhoneSetSystemNetworkBandComp()
+ * 
+ * @param aBand the requested band
+ * @param aMode the requested mode
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsyPhoneHandler::HandleGetSystemNetworkBandReqL
+
+void CLtsyPhoneHandler::NotifyIpcRequestComplete(TInt aIpcId)
+/**
+ * This function was called by some IPC request after it complete the request 
+ * 
+ * If there are one more AT commands which need some interactions among them, the logic control should be put here.
+ * 
+ * @param aIpcId The IPC request Id
+ * 
+ * @return void
+ */
+    {
+    if(aIpcId == KLtsyDispatchPhoneRegisterCellInfoChangeNotificationApiId)
+        {
+        if(iPendingIpcId == KLtsyDispatchPhoneGetPhoneCellInfoApiId)
+            {
+            iGloblePhone->DeleteLastActiveRequest();
+            CATGetPhoneCellInfo* getPhoneCellInfo = NULL;
+            TRAPD(err,getPhoneCellInfo  = CATGetPhoneCellInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback));
+            if(err != KErrNone)
+                {
+                RMobilePhone::TMobilePhoneCellInfoV9 cellInfo; 
+                iCtsyDispatcherCallback.CallbackPhoneGetPhoneCellInfoComp(err,cellInfo);
+                }
+            else
+                {
+                iGloblePhone->iEventSignalActive = ETrue;
+                iGloblePhone->SetActiveRequest(getPhoneCellInfo);
+                getPhoneCellInfo->SetIpcRequestCompleteObserver(this);
+                getPhoneCellInfo->SetIpcId(KLtsyDispatchPhoneGetPhoneCellInfoApiId);
+                getPhoneCellInfo->StartRequest();
+                iPendingIpcId = -1;
+                }
+            }
+        }
+    else if(aIpcId == KLtsyDispatchPhoneGetPhoneCellInfoApiId)
+        {
+        // enable to receive the notificaiton of cell info changed
+        iNotifyCellInfo->Enable();
+        }
+    else if(aIpcId == KLtsyDispatchPhoneGetCellInfoApiId)
+        {
+        iNotifyCellInfo->Enable();
+        }
+    else if(aIpcId == KLtsyDispatchPhoneGetNetworkRegistrationStatusApiId)
+        {
+        iNetworkRegStatusChange->Enable();
+        }
+    }
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsysathandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,717 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySatHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+#include <satcs.h>
+
+
+
+#include "cltsysathandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsySatHandler::CLtsySatHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+	
+CLtsySatHandler::~CLtsySatHandler()
+	{
+	}
+
+
+CLtsySatHandler* CLtsySatHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySatHandler* self = new (ELeave) CLtsySatHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsySatHandler* CLtsySatHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySatHandler* self=
+			CLtsySatHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsySatHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsySatHandler::ConstructL
+
+TBool CLtsySatHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsySatHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *  
+ * @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+ * @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsySatHandler::HandleSmsDeliverReportReqL(const TDesC8& /*aSmsDeliverReportTpdu*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aSmsDeliverReportTpdu The SMS-DELIVER-REPORT TPDU element to be contained in a 
+ * RP-ERROR-PDU (negative acknowledgement) or RP-ACK-PDU (a positive acknowledgement) to a
+ * SMS DELIVER or SMS STATUS REPORT.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleSmsDeliverReportReqL
+
+
+TInt CLtsySatHandler::HandleGetImageInstanceReqL(TUint8 /*aEfImgRecordNumber*/, TUint8 /*aInstanceNumberInEfImgRecord*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetImageInstanceComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ * 
+ * @param aEfImgRecordNumber 			The record number of the icons EF(Img) record for the 
+ * 										icon image instance being retrieved. 
+ * @param aInstanceNumberInEfImgRecord 	The record number of the icon instance, in the icons EF(Img) record
+ * 										for the icon image instance being retrieved. 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;    
+	//TSYLOGENTRYEXITARGS(_L8("aEfImgRecordNumber=%d, aInstanceNumberInEfImgRecord=%d"), aEfImgRecordNumber, aInstanceNumberInEfImgRecord);
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetImageInstanceReqL
+
+TInt CLtsySatHandler::HandleGetIconDataReqL(TUint8 /*aEfImgRecordNumber*/, const TDesC8& /*aSimFilePath*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetIconDataComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEfImgRecordNumber 	EF(img) record number of the icon to retrieve. 
+ * @param aSimFilePath 			The full file path to the EF(Img). 
+ * 								Bytes 	0-1 MF 			(0x3F00)
+ * 								Bytes	2-3 DF(Telecom) (0x7F10) 
+ * 								Bytes	4-5 DF(Graphics)(0x5F50)
+ * 								Bytes	6-7 EF(Ef(Img)) 	(0x4F20)
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	//TSYLOGENTRYEXITARGS(_L8("aEfImgRecordNumber=%d"), aEfImgRecordNumber);
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetIconDataReqL
+
+
+TInt CLtsySatHandler::HandleGetClutReqL(TUint8 /*aEfImgRecordNumber*/, TUint8 /*aInstanceNumberInEfImgRecord*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetClutComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEfImgRecordNumber 			The record number of the icons EF(Img) record for the 
+ * 										CLUT being retrieved. 
+ * @param aInstanceNumberInEfImgRecord 	The record number of the icon instance, in the icons EF(Img) record
+ * 										for the CLUT being retrieved. 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	//TSYLOGENTRYEXITARGS(_L8("aEfImgRecordNumber=%d, aInstanceNumberInEfImgRecord=%d"), aEfImgRecordNumber, aInstanceNumberInEfImgRecord);
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetClutReqL
+
+
+TInt CLtsySatHandler::HandleGetDefaultBearerCapabilityReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetDefaultBearerCapabilityComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetDefaultBearerCapabilityReqL
+
+
+TInt CLtsySatHandler::HandleGetSmsPpDownloadSupportedReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetSmsPpDownloadSupportedComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetSmsPpDownloadSupportedReqL
+
+
+TInt CLtsySatHandler::HandleGetSmsControlActivatedReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetSmsControlActivatedComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetSmsControlActivatedReqL
+
+
+TInt CLtsySatHandler::HandleCellBroadcastEnvelopeReqL(const TDesC8& /*aEnvelope*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEnvelope BER-TLV encoded data containing an (CELL BROADCAST DOWNLOAD) ENVELOPE command.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleCellBroadcastEnvelopeReqL
+
+TInt CLtsySatHandler::HandleGetAccessTechnologyReqL()
+/**
+* This request is completed by invoking
+* CCtsyDispatcherCallback::CallbackSatGetAccessTechnologyComp
+*
+* This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+*
+* @return KErrNone on success, KErrNotSupported if this request is not supported,
+* or another error code to indicate the failure otherwise.
+*/
+	{
+	TSYLOGENTRYEXIT;
+	
+	TInt ret = KErrNotSupported;
+	
+	// TODO: Add implementation here.......
+	
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetAccessTechnologyReqL
+
+TInt CLtsySatHandler::HandleTimingAdvanceReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatTimingAdvanceComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleTimingAdvanceReqL
+
+
+TInt CLtsySatHandler::HandleSmControlResponseDataReqL(TUint8 /*aResult*/, const TDesC8& /*aRpDestinationAddress*/, const TDesC8& /*aTpDestinationAddress*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aResult MO short message control result the SIM gives to the ME concerning whether to 
+ * allow, bar or modify the proposed short message, encoded as defined in "3GPP TS 11.10-4, 27.22.8 MO SHORT MESSAGE CONTROL BY SIM"
+ * @param aRpDestinationAddress RP Destination Address of the Service Centre to which the ME is proposing to send the short message.
+ * If the address data is not present (zero length), then assume the RP Destination Address of the Service Centre is not to be modified.
+ * @param aTpDestinationAddress TP Destination Address to which the ME is proposing to send the short message.
+ * If the address data is not present (zero length), then assume the TP Destination Address is not to be modified.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleSmControlResponseDataReqL
+
+
+TInt CLtsySatHandler::HandleProvideLocationInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatProvideLocationInfoComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleProvideLocationInfoReqL
+
+
+TInt CLtsySatHandler::HandleSetPollingIntervalReqL(TUint8 /*aPollingInterval*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatSetPollingIntervalComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aPollingInterval The polling interval in seconds indicating how often the 
+ * terminal sends STATUS commands related to Proactive Polling 
+ * (zero indicates Polling should be turned off)
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleSetPollingIntervalReqL
+
+
+TInt CLtsySatHandler::HandleSmsPpDownloadEnvelopeReqL(const TDesC8& /*aEnvelope*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEnvelope BER-TLV encoded data containing an (SMS-PP DOWNLOAD) ENVELOPE command.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleSmsPpDownloadEnvelopeReqL
+
+
+TInt CLtsySatHandler::HandleLocalInformationNmrReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatLocalInformationNmrComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleLocalInformationNmrReqL
+
+
+TInt CLtsySatHandler::HandleGetUssdControlSupportedReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatGetUssdControlSupportedComp
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleGetUssdControlSupportedReqL
+
+
+TInt CLtsySatHandler::HandleCallAndSmsControlEnvelopeReqL(const TDesC8& /*aEnvelope*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEnvelope BER-TLV encoded data containing a Call Control or MO SMS control by SIM ENVELOPE command
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleCallAndSmsControlEnvelopeReqL
+
+
+TInt CLtsySatHandler::HandleRefreshAllowedReqL(const TDesC8& /*aRefreshFileList*/, const TDesC8& /*aAid*/, TUint16 /*aTsyCache*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatRefreshAllowed
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aRefreshFileList The list of files (full path) that have been changed by the UICC (see ETSI 102 221 or ETSI 151 011) 
+ * @param aAid Indicates the application on the UICC to be refreshed (as defined ETSI TS 101 220) . 
+ * @param aTsyCache Bit field of files that are cached in SIM ATK TSY (examine using CSatNotificationsTsy::TCachedSimAtkFiles) 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleRefreshAllowedReqL
+
+
+TInt CLtsySatHandler::HandleReadyReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatReady
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * A call to this function indicates that the CTSY is ready to receive proactive commands from the LTSY. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleReadyReqL
+
+
+TInt CLtsySatHandler::HandlePCmdNotificationReqL(TUint8 /*aPCmdType*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aPCmdType The number of the proactive command for which notification is being requested (e.g. KSetUpMenu),
+ *  as defined in ETSI 102 223 etc.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandlePCmdNotificationReqL
+
+
+TInt CLtsySatHandler::HandleUssdControlEnvelopeErrorReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatUssdControlEnvelopeError
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleUssdControlEnvelopeErrorReqL
+
+
+TInt CLtsySatHandler::HandleTimerExpirationEnvelopeReqL(const TDesC8& /*aEnvelope*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEnvelope BER-TLV encoded Timer expiration ENVELOPE command
+ * see "ETSI TS 102 223" under "ENVELOPE commands" "Timer expiration" 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleTimerExpirationEnvelopeReqL
+
+
+TInt CLtsySatHandler::HandleTerminalRspReqL(const TDesC8& /*aTerminalRsp*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSatTerminalRsp
+ * 
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ * 
+ * @param aTerminalRsp The terminal response TLV as formatted in "ETSI TS 102 223" Under "Structure of TERMINAL RESPONSE"
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleTerminalRspReqL
+
+
+TInt CLtsySatHandler::HandleMenuSelectionEnvelopeReqL(const TDesC8& /*aEnvelope*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEnvelope BER-TLV encoded Envelope comprising a notification from
+ * the ME that the user has either requested help about, or has selected a menu item
+ * that was previously provided by the SIM application via the SETUP MENU proactive
+ * command. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleMenuSelectionEnvelopeReqL
+
+
+TInt CLtsySatHandler::HandleEventDownloadEnvelopeReqL(const TDesC8& /*aEnvelope*/)
+/**
+ * This request has no associated callback.
+ *
+ * This API is optional and should only be used if the licensee wishes to including the Dispatcher beneath their own SIM ATK TSY.
+ *
+ * @param aEnvelope BER-TLV encoded Event Download ENVELOPE command
+ * see "ETSI TS 102 223" under "ENVELOPE commands" "Event Download" 
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySatHandler::HandleEventDownloadSyncL
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsysecurityhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,374 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySecurityHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+#include "cltsysecurityhandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsySecurityHandler::CLtsySecurityHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+	
+CLtsySecurityHandler::~CLtsySecurityHandler()
+	{
+	}
+
+
+CLtsySecurityHandler* CLtsySecurityHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySecurityHandler* self = new (ELeave) CLtsySecurityHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsySecurityHandler* CLtsySecurityHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySecurityHandler* self=
+			CLtsySecurityHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsySecurityHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsySecurityHandler::ConstructL
+
+TBool CLtsySecurityHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsySecurityHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsySecurityHandler::HandleGetSecurityCodeInfoReqL(RMobilePhone::TMobilePhoneSecurityCode /*aSecCode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityGetSecurityCodeInfoComp()
+ *
+ * @param aSecCode Security code.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleGetSecurityCodeInfoReqL
+
+
+TInt CLtsySecurityHandler::HandleGetLockInfoReqL(RMobilePhone::TMobilePhoneLock /*aLockType*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityGetLockInfoComp()
+ *
+ * @param aLockType Phone lock type.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleGetLockInfoReqL
+
+
+TInt CLtsySecurityHandler::HandleAbortSecurityCodeReqL(RMobilePhone::TMobilePhoneSecurityCode /*aSecCode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityAbortSecurityCodeComp()
+ *
+ * @param aSecCode Security code.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleAbortSecurityCodeReqL
+
+
+TInt CLtsySecurityHandler::HandleGetCurrentActivePinReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityGetCurrentActivePinComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleGetCurrentActivePinReqL
+
+
+TInt CLtsySecurityHandler::HandleSetLockSettingReqL(RMobilePhone::TMobilePhoneLock /*aLock*/, RMobilePhone::TMobilePhoneLockSetting /*aSetting*/, const TDesC& /*aPassword*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecuritySetLockSettingComp()
+ *
+ * @param aLock The lock to change.
+ * @param aSetting The new settings for the lock.
+ * @param aPassword The password paramaters.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleSetLockSettingReqL
+
+
+TInt CLtsySecurityHandler::HandleVerifySecurityCodeReqL(
+		RMobilePhone::TMobilePhoneSecurityCode /*aSecCode*/,
+		const RMobilePhone::TCodeAndUnblockCode& /*aCodes*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityVerifySecurityCodeComp()
+ *
+ * @param aSecCode Security code.
+ * @param aCodes Code and unblock code.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleVerifySecurityCodeReqL
+
+TInt CLtsySecurityHandler::HandleGetPin1DisableSupportedReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityGetPin1DisableSupportedComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleGetPin1DisableSupportedReqL
+
+TInt CLtsySecurityHandler::HandleCheckSecurityCodeReqL(DispatcherSecurity::TSecurityCodeId /*aSecCodeID*/, const TDes& /*aSecCode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityCheckSecurityCodeComp()
+ *
+ * @param aSecCodeID Code ID.
+ * @param aSecCode Security code (maximum length = KMaxMobilePasswordSize).
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleCheckSecurityCodeReqL
+
+
+TInt CLtsySecurityHandler::HandleDisablePhoneLockReqL(const TDesC& /*aSecCode*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityDisablePhoneLockComp()
+ *
+ * @param aSecCode Security password (maximum length = KMaxMobilePasswordSize).
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleDisablePhoneLockReqL
+
+
+TInt CLtsySecurityHandler::HandleGetCipheringInfoReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityGetCipheringInfoComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleGetCipheringInfoReqL
+
+
+TInt CLtsySecurityHandler::HandleIsSecurityCodeBlockedReqL(DispatcherSecurity::TSecurityCodeId /*aSecCodeID*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityIsSecurityCodeBlockedComp()
+ *
+ * @param aSecCodeID Code ID.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleIsSecurityCodeBlockedReqL
+
+TInt CLtsySecurityHandler::HandleCheckSecurityCodeCancelReqL(DispatcherSecurity::TSecurityCodeId /*aSecCodeID*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSecurityCheckSecurityCodeCancelComp()
+ *
+ * @param aCodeID Code ID.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySecurityHandler::HandleCheckSecurityCodeCancelReqL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsysimhandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,732 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySimHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+
+
+#include "cltsysimhandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsySimHandler::CLtsySimHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+	
+CLtsySimHandler::~CLtsySimHandler()
+	{
+	}
+
+
+CLtsySimHandler* CLtsySimHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySimHandler* self = new (ELeave) CLtsySimHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsySimHandler* CLtsySimHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySimHandler* self=
+			CLtsySimHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsySimHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsySimHandler::ConstructL
+
+TBool CLtsySimHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried.
+ * @return indication whether interface is supported or not.
+ */
+	{
+
+	
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsySimHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1.
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsySimHandler::HandleGetApnControlListServiceStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetApnControlListServiceStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetApnControlListServiceStatusReqL
+
+
+TInt CLtsySimHandler::HandleDeleteApnNameReqL(TUint32 /*aIndex*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimDeleteApnNameComp()
+ *
+ * @param aIndex The index of the entry to delete.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleDeleteApnNameReqL
+
+
+TInt CLtsySimHandler::HandleEnumerateApnEntriesReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimEnumerateApnEntriesComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleEnumerateApnEntriesReqL
+
+
+TInt CLtsySimHandler::HandleChangeSecurityCodeReqL(RMobilePhone::TMobilePhoneSecurityCode /*aSecCode*/,
+												   const RMobilePhone::TMobilePhonePasswordChangeV1& /*aPasswds*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimChangeSecurityCodeComp()
+ *
+ * @param aSecCode The security code to be changed.
+ * @param aPasswds The old and the new values of the security code.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleChangeSecurityCodeReqL
+
+
+TInt CLtsySimHandler::HandleSetFdnSettingReqL(RMobilePhone::TMobilePhoneFdnSetting /*aFdnSetting*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSetFdnSettingComp()
+ *
+ * @param aFdnSetting The FDN setting.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSetFdnSettingReqL
+
+
+TInt CLtsySimHandler::HandleGetCustomerServiceProfileReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetCustomerServiceProfileComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetCustomerServiceProfileReqL
+
+
+TInt CLtsySimHandler::HandleGetSubscriberIdReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetSubscriberIdComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetSubscriberIdReqL
+
+
+TInt CLtsySimHandler::HandleAppendApnNameReqL(const RMobilePhone::TAPNEntryV3& /*aEntry*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimAppendApnNameComp()
+ *
+ * @param aEntry The entry to append to the APN list.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleAppendApnNameReqL
+
+
+TInt CLtsySimHandler::HandleGetActiveIccApplicationTypeReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetActiveIccApplicationTypeComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetActiveIccApplicationTypeReqL
+
+
+TInt CLtsySimHandler::HandleSetIccMessageWaitingIndicatorsReqL(const RMobilePhone::TMobilePhoneMessageWaitingV1& /*aIndicators*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSetIccMessageWaitingIndicatorsComp()
+ *
+ * @param aIndicators The message waiting indicators to set.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSetIccMessageWaitingIndicatorsReqL
+
+
+TInt CLtsySimHandler::HandleSetApnControlListServiceStatusReqL(RMobilePhone::TAPNControlListServiceStatus /*aStatus*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSetApnControlListServiceStatusComp()
+ *
+ * @param aStatus The service status to set.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSetApnControlListServiceStatusReqL
+
+
+TInt CLtsySimHandler::HandleGetApnNameReqL(TUint32 /*aIndex*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetApnNameComp()
+ *
+ * @param aIndex The index of the APN entry to get from LTSY.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetApnNameReqL
+
+
+TInt CLtsySimHandler::HandleSimRefreshDoneReqL(TInt /*aError*/)
+/**
+ * This request has no associated callback.
+ *
+ * @param aError The error which has occured during a SIM refresh, KErrNone if no error.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSimRefreshDoneSyncL
+
+TInt CLtsySimHandler::HandleGetServiceTableReqL(
+							RMobilePhone::TMobilePhoneServiceTable /*aServiceTable*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetServiceTableComp()
+ * 
+ * @param aServiceTable Service table to get information about.
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+
+
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetServiceTableReqL
+
+TInt CLtsySimHandler::HandleGetIccMessageWaitingIndicatorsReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetIccMessageWaitingIndicatorsComp()
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise. 
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+	
+	//TO DO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetIccMessageWaitingIndicatorsReqL
+
+TInt CLtsySimHandler::HandleSimLockActivateReqL(const TDesC& /*aPassword*/, RMmCustomAPI::TLockNumber /*aLockNumber*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSimLockActivateComp()
+ *
+ * @param aPassword The password used for the SIM Lock activation.
+ * @param aLockNumber The lock number that defines SIM Lock types.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+	
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSimLockActivateReqL
+
+
+TInt CLtsySimHandler::HandleSimLockDeActivateReqL(const TDesC& /*aPassword*/, RMmCustomAPI::TLockNumber /*aLockNumber*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSimLockDeActivateComp()
+ *
+ * @param aPassword The password used for the SIM Lock deactivation.
+ * @param aLockNumber The lock number that defines SIM Lock types.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+	
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSimLockDeActivateReqL
+
+
+TInt CLtsySimHandler::HandleGetAnswerToResetReqL(const TDesC8& /*aAnswerToReset*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetAnswerToResetComp()
+ *
+ * @param aAnswerToReset The answer to reset information which contains details of the request.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+	
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetAnswerToResetReqL
+
+
+TInt CLtsySimHandler::HandleGetSimCardReaderStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetSimCardReaderStatusComp()
+ *
+ * @param aSimCardReaderStatus The sim card reader status information which contains details of the request.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+	
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetSimCardReaderStatusReqL
+
+
+TInt CLtsySimHandler::HandleGetSimAuthenticationEapSimDataReqL(const TDesC8& /*aRandomParameters*/, TInt /*aRFStateInfo*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetSimAuthenticationEapSimDataComp()
+ *
+ * @param aRandomParameters The random parameters from the client.
+ * @param aRFStateInfo The RF state info.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+	
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetSimAuthenticationEapSimDataReqL
+
+TInt CLtsySimHandler::HandleGetSimAuthenticationEapAkaDataReqL(const TDesC8& /*aRandomParameters*/, const TDesC8& /*aAUTN*/, TInt /*aRFStateInfo*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimGetSimAuthenticationEapAkaDataComp()
+ *
+ * @param aRandomParameters The random parameters from the client.
+ * @param aAUTN The AUTN parameter. AUTN is an authentication value generated by
+ *        the Authentication Centre, which, together with the random parameters, authenticates the server to the peer, 128 bits.
+ * @param aRFStateInfo The RF state info.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	//TO DO: Add implementation here.......
+	
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleGetSimAuthenticationEapAkaDataReqL
+
+
+TInt CLtsySimHandler::HandlePowerSimOffReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimPowerSimOffComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandlePowerSimOffReqL
+
+
+TInt CLtsySimHandler::HandlePowerSimOnReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimPowerSimOnComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandlePowerSimOnReqL
+
+TInt CLtsySimHandler::HandleReadSimFileReqL(const TDesC8& /*aPath*/, TUint16 /*aOffset*/, TUint16 /*aSize*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimReadSimFileComp()
+ *
+ * @param aPath The absolute file path of the SIM file in the file system of the SIM.
+ * see ETSI TS 131 102 Under "Files of USIM"
+ * @param aOffset The value of the Offset, the offset is related with the type of SIM file being read.
+ * @param aSize The amount of bytes to be read from the SIM file.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleReadSimFileReqL
+
+TInt CLtsySimHandler::HandleSimSendApduRequestReqL(TUint8 /*aServiceType*/, TUint8 /*aCardReaderNumber*/, TUint8 /*aApplicationType*/, const TDesC8& /*aCommandData*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSendApduRequestComp()
+ *
+ * @param aServiceType The value for the service type of the request.
+ * @param aCardReaderNumber The value for the card reader number of the request.
+ * @param aApplicationType The value for the application type of the request.
+ * @param aCommandData The transparent data to be conveyed to the Baseband.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSimSendApduRequestReqL
+
+TInt CLtsySimHandler::HandleSimSendApduRequestV2ReqL(TUint8 /*aCardReaderId*/, const TDesC8& /*aCommandData*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSendApduRequestV2Comp()
+ *
+ * @param aCardReaderId The value for the card reader Id of the request.
+ * @param aCommandData The transparent data to be conveyed to the Baseband.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSimSendApduRequestV2ReqL
+
+
+TInt CLtsySimHandler::HandleSimWarmResetReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSimWarmResetComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSimWarmResetReqL
+
+
+TInt CLtsySimHandler::HandleSetSimMessageStatusReadReqL(const TTime& /*aTimestamp*/, TInt /*aTimezoneDiff*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSimSetSimMessageStatusRead()
+ *
+ * No error code is returned to the ETel client - if no SMS message with matching timestamp is identified
+ * on the SIM then this error will be silently ignored.
+ *
+ * @param aTimestamp timestamp that uniquely identifies a particular message in the message store.
+ * @param aTimezoneDiff the difference, expressed in quarters of an hour, between the service centre local time and GMT
+ *
+ * @return KErrNone on success, otherwise another error code indicating the
+ * failure.
+ * 
+ * @see RMmCustomAPI::SetSimMessageStatusRead()
+ **/
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySimHandler::HandleSetSimMessageStatusReadReqL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsysmshandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,450 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySmsHandler/
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+
+
+#include "cltsysmshandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+#include "globalphonemanager.h"
+#include "atmessagestoreinfo.h"
+#include "atsmssend.h"
+#include "atsmsreceive.h"
+#include "atsmsack.h"
+#include "mslogger.h"
+#include "asynchelperrequest.h"
+CLtsySmsHandler::CLtsySmsHandler(CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	:iCtsyDispatcherCallback(aCtsyDispatcherCallback),iGloblePhone(aGloblePhone)
+	{
+	
+	}
+
+	
+CLtsySmsHandler::~CLtsySmsHandler()
+	{
+	if ( iAtSmsReceive )
+		{
+	    delete iAtSmsReceive;
+		}
+	}
+
+
+CLtsySmsHandler* CLtsySmsHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySmsHandler* self = new (ELeave) CLtsySmsHandler(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsySmsHandler* CLtsySmsHandler::NewL(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback,CGlobalPhonemanager* aGloblePhone)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySmsHandler* self=
+			CLtsySmsHandler::NewLC(aCtsyDispatcherCallback,aGloblePhone);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsySmsHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	iAsyncHelperRequest = CAsyncHelperRequest::NewL((*iGloblePhone), iCtsyDispatcherCallback);
+	iAtSmsReceive = CAtSmsReceive::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+	iAtSmsReceive->StartRequest();
+
+	} // CLtsySmsHandler::ConstructL
+
+TBool CLtsySmsHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried
+ * @return indication whether interface is supported or not
+ */
+	{
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY 
+		case KLtsyDispatchSmsGetSmsStoreInfoApiId:
+		    return ETrue;
+		case KLtsyDispatchSmsNackSmsStoredApiId:
+			return ETrue;
+		case KLtsyDispatchSmsAckSmsStoredApiId:
+			return ETrue;
+		case KLtsyDispatchSmsSendSmsMessageApiId:
+			return ETrue;
+		case KLtsyDispatchSmsSetMoSmsBearerApiId:
+			return ETrue;
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsySmsHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup aIdGroup, TUint32& aIndIdBitMask)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchSmsNotifyReceiveSmsMessageIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	
+	}
+
+
+TInt CLtsySmsHandler::HandleSendSatSmsReqL( const TDesC8& /*aSmsTpdu*/,
+		   RMobileSmsMessaging::TMobileSmsDataFormat /*aDataFormat*/,
+		   const RMobilePhone::TMobileAddress& /*aGsmServiceCentre*/,
+		   TBool /*aMoreMessages*/
+		  )
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsSendSatSmsComp
+ *
+ * @param aDestination The mobile telephone number.
+ * @param aSmsTpdu The SMS TPDU.
+ * @param aDataFormat The SMS data format.
+ * @param aGsmServiceCentre The service centre number.
+ * @param aMore  This indicates whether the client is going to send another SMS immediately 
+	                 after this one.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleSendSatSmsReqL
+
+
+TInt CLtsySmsHandler::HandleGetSmsStoreInfoReqL(/* TODO: Add correct parameteres here */)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsGetSmsStoreInfoComp
+ *
+ * @param TODO: Add parameter in-source documentation here
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtMessageStoreInfo* atMessageStoreInfo = CAtMessageStoreInfo::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atMessageStoreInfo);
+		atMessageStoreInfo->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleGetSmsStoreInfoReqL
+
+
+TInt CLtsySmsHandler::HandleGetSmspListReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsGetSmspListComp
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleGetSmspListReqL
+
+
+TInt CLtsySmsHandler::HandleNackSmsStoredReqL(const TDesC8& aMsgPtr, TInt /*aRpCause*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsNackSmsStoredComp
+ *
+ * @param aMsgPtr Reference to TPDU data.
+ * @param aRpCause RP cause.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsNack* atSmsNack = CAtSmsNack::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		atSmsNack->SetNackTpdu(aMsgPtr);
+		iGloblePhone->SetActiveRequest(atSmsNack);
+		atSmsNack->StartRequest();
+		}
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleNackSmsStoredReqL
+
+TInt CLtsySmsHandler::HandleNackSmsStoredReqL( TInt /*aRpCause*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsNackSmsStoredComp
+ *
+ * @param aMsgPtr Reference to TPDU data.
+ * @param aRpCause RP cause.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+    {
+    TSYLOGENTRYEXIT;
+
+    TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+    if( KErrNone == ret )
+        {
+        CAtSmsNack* atSmsNack = CAtSmsNack::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+        //Setting Port active
+        iGloblePhone->iEventSignalActive = ETrue;
+        //atSmsNack->SetNackTpdu(aMsgPtr);
+        iGloblePhone->SetActiveRequest(atSmsNack);
+        atSmsNack->StartRequest();
+        }
+
+    return TSYLOGSETEXITERR(ret);
+    } // CLtsySmsHandler::HandleNackSmsStoredReqL
+
+TInt CLtsySmsHandler::HandleAckSmsStoredReqL(const TDesC8& /*aMsgPtr*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsAckSmsStoredComp
+ *
+ * @param aMsgPtr Contains the TPDU defined for a SMS-DELIVER-REPORT.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsAck* atSmsAck = CAtSmsAck::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsAck);
+		atSmsAck->StartRequest();
+		}
+	
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleAckSmsStoredReqL
+
+TInt CLtsySmsHandler::HandleAckSmsStoredReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsAckSmsStoredComp
+ *
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+    {
+    TSYLOGENTRYEXIT;
+
+    TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+    if( KErrNone == ret )
+        {
+        CAtSmsAck* atSmsAck = CAtSmsAck::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+        //Setting Port active
+        iGloblePhone->iEventSignalActive = ETrue;
+        iGloblePhone->SetActiveRequest(atSmsAck);
+        atSmsAck->StartRequest();
+        }
+    
+    return TSYLOGSETEXITERR(ret);
+    }
+
+TInt CLtsySmsHandler::HandleResumeSmsReceptionReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsResumeSmsReceptionComp
+ *
+ * @param TODO: Add parameter in-source documentation here
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleResumeSmsReceptionReqL
+
+
+TInt CLtsySmsHandler::HandleSendSmsMessageReqL( const RMobilePhone::TMobileAddress& aDestination,
+	     									    const TDesC8& aSmsTpdu,
+	     									    RMobileSmsMessaging::TMobileSmsDataFormat aDataFormat,
+	     										const RMobilePhone::TMobileAddress& aGsmServiceCentre,
+	     										TBool aMoreMessages
+	   										   ) 
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsSendSmsMessageComp
+ *
+ * @param aDestination The mobile telephone number.
+ * @param aSmsTpdu The SMS TPDU.
+ * @param aDataFormat The SMS data format.
+ * @param aGsmServiceCentre The service centre number.
+ * @param aMore This indicates whether the client is going to send another SMS immediately 
+	            after this one. 
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	if(aSmsTpdu.Length() > KGsmTpduSize)
+		{
+		return TSYLOGSETEXITERR(KErrArgument);
+		}
+	TSmsSendParam msgParam;
+	msgParam.iDataFormat = aDataFormat;
+	msgParam.iDestination = aDestination;
+	msgParam.iSmsTpdu = aSmsTpdu;
+	msgParam.iGsmServiceCentre = aGsmServiceCentre;
+	msgParam.iMoreMessages = aMoreMessages;
+	TInt ret = iGloblePhone->CheckGlobalPhoneStatus();
+	if( KErrNone == ret )
+		{
+		CAtSmsSend* atSmsSend = CAtSmsSend::NewL(*iGloblePhone,iCtsyDispatcherCallback);
+		//Setting Port active
+		iGloblePhone->iEventSignalActive = ETrue;
+		iGloblePhone->SetActiveRequest(atSmsSend);
+		atSmsSend->SetMessageParam(msgParam);
+		atSmsSend->StartRequest();
+		}
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleSendSmsMessageReqL
+
+TInt CLtsySmsHandler::HandleSendSmsMessageNoFdnCheckReqL( const RMobilePhone::TMobileAddress& /*aDestination*/,
+	     												  const TDesC8& /*aSmsTpdu*/,
+	     												  RMobileSmsMessaging::TMobileSmsDataFormat /*aDataFormat*/,
+	     												  const RMobilePhone::TMobileAddress& /*aGsmServiceCentre*/,
+	     												  TBool /*aMoreMessages*/
+	   													) 
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsSendSmsMessageNoFdnCheckComp
+ *
+ * @param aDestination The mobile telephone number.
+ * @param aSmsTpdu The SMS TPDU.
+ * @param aDataFormat The SMS data format.
+ * @param aGsmServiceCentre The service centre number.
+ * @param aMore This indicates whether the client is going to send another SMS immediately 
+	            after this one. 
+	                 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+	
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleSendSmsMessageNoFdnCheckReqL
+
+TInt CLtsySmsHandler::HandleSetMoSmsBearerReqL(RMobileSmsMessaging::TMobileSmsBearer /*aBearer*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsSetMoSmsBearerComp
+ *
+ * 
+ * @param aBearer The SMS bearer.
+ * 
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNone;
+	iAsyncHelperRequest->SetRequestId(MLtsyDispatchSmsSetMoSmsBearer::KLtsyDispatchSmsSetMoSmsBearerApiId);
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleSetMoSmsBearerReqL
+
+
+TInt CLtsySmsHandler::HandleStoreSmspListEntryReqL(const RMobileSmsMessaging::TMobileSmspEntryV1& /*aSmsParam*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSmsStoreSmspListEntryComp
+ *
+ * @param aSmsParam Defines a set of SMS parameters.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNone;
+
+	// TODO: Add implementation here.......
+
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySmsHandler::HandleStoreSmspListReqL
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/handler/src/cltsysupplementaryserviceshandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,415 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CLtsySupplementaryServicesHandler
+
+#include <ctsy/ltsy/cctsydispatchercallback.h>
+#include <mmtsy_ipcdefs.h>
+
+
+
+#include "cltsysupplementaryserviceshandler.h"
+#include <ctsy/ltsy/ltsylogger.h>
+#include "ltsymacros.h"
+
+
+
+CLtsySupplementaryServicesHandler::CLtsySupplementaryServicesHandler(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	: iCtsyDispatcherCallback(aCtsyDispatcherCallback)
+	{
+	}
+
+	
+CLtsySupplementaryServicesHandler::~CLtsySupplementaryServicesHandler()
+	{
+	}
+
+
+CLtsySupplementaryServicesHandler* CLtsySupplementaryServicesHandler::NewLC(
+	CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySupplementaryServicesHandler* self = new (ELeave) CLtsySupplementaryServicesHandler(aCtsyDispatcherCallback);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+
+CLtsySupplementaryServicesHandler* CLtsySupplementaryServicesHandler::NewL(CCtsyDispatcherCallback& aCtsyDispatcherCallback)
+	{
+	TSYLOGENTRYEXIT;
+	CLtsySupplementaryServicesHandler* self=
+			CLtsySupplementaryServicesHandler::NewLC(aCtsyDispatcherCallback);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+
+void CLtsySupplementaryServicesHandler::ConstructL()
+/**
+ * Second phase constructor.
+ */
+	{
+	TSYLOGENTRYEXIT;
+	
+	
+	} // CLtsySupplementaryServicesHandler::ConstructL
+
+TBool CLtsySupplementaryServicesHandler::IsInterfaceSupported(TLtsyDispatchInterfaceApiId aDispatchApiId)
+/**
+ * Returns whether a Dispatch Interface APi is supported or not.
+ * 
+ * @param aDispatchApiId Id of Dispatch interface being queried.
+ * @return indication whether interface is supported or not.
+ */
+	{
+
+	switch(aDispatchApiId)
+		{
+		// Insert ApiIds when support is provided in LTSY e.g.
+		// case MLtsyDispatchPhoneBootNotifySimStatusReady::KLtsyDispatchPhoneBootNotifySimStatusReadyApiId: return ETrue;
+		
+		default:
+			return EFalse;
+		}
+	}
+
+void CLtsySupplementaryServicesHandler::IsCallbackIndicatorSupported(TLtsyDispatchIndIdGroup /*aIdGroup*/, TUint32& /*aIndIdBitMask*/)
+/**
+ * Returns the set of callback indicators that are supported.
+ * 
+* @param aIdGroup ID of group that is being queried e.g. aIdGroup=EIndIdGroup1.
+* @param aIndIdBitMask [out] argument that should return a bitmask indicating which indicator callbacks are supported.
+ */
+	{
+
+	//Create bitmask with bitset for each indicator ID that is supported. E.g.
+	/*
+	if(aIdGroup == EIndIdGroup1)
+		aIndIdBitMask = KLtsyDispatchPhoneNotifyNetworkModeChangeIndId | 
+						KLtsyDispatchPhoneNotifyEgprsInfoChangeIndId | 
+						KLtsyDispatchPhoneNotifySignalStrengthChangeIndId;
+	else
+		aIndIdBitMask = 0; //no indicators from other groups supported
+	*/
+	}
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSendNetworkServiceRequestNoFdnCheckReqL(const TDesC& /*aRequest*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSendNetworkServiceRequestNoFdnCheckComp()
+ *
+ * @param aRequest The supplementary services string that was entered by the user and need to be send to the network.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSendNetworkServiceRequestNoFdnCheckReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleGetCallWaitingStatusReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesGetCallWaitingStatusComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleGetCallWaitingStatusReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSendNetworkServiceRequestReqL(const TDesC& /*aRequest*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSendNetworkServiceRequestComp()
+ *
+ * @param aRequest The supplementary services string that was entered by the user and need to be send to the network.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSendNetworkServiceRequestReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleGetCallBarringStatusReqL(RMobilePhone::TMobilePhoneCBCondition /*aCondition*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesGetCallBarringStatusComp()
+ *
+ * @param aCondition The barring conditions to interrogate.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleGetCallBarringStatusReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSetCallBarringStatusReqL(RMobilePhone::TMobilePhoneCBCondition /*aCondition*/,
+        RMobilePhone::TMobilePhoneServiceAction /*aAction*/,
+        RMobilePhone::TMobileService /*aGroup*/,
+        const TDesC& /*aPassword*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSetCallBarringStatusComp()
+ *
+ * @param aCondition the call barring condition to set.
+ * @param aAction the call barring action.
+ * @param aGroup the call barring service group.
+ * @param aPassword the password of the call barring service.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSetCallBarringStatusReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSetCallForwardingStatusReqL(RMobilePhone::TMobilePhoneCFCondition /*aCondition*/,
+		RMobilePhone::TMobileService /*aServiceGroup*/,
+		RMobilePhone::TMobilePhoneServiceAction /*aAction*/,
+		const TDesC& /*aNumber*/,
+		TInt /*aTimeout*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSetCallForwardingStatusComp()
+ *
+ * @param aCondition the call forwarding condition to set.
+ * @param aServiceGroup The basic service group to apply the CF status change to.
+ * @param aAction The action to take.
+ * @param aNumber The forwarding number.
+ * @param aTimeout The time out when aCondition is ECallForwardingNoReply.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSetCallForwardingStatusReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSetCallWaitingStatusReqL(RMobilePhone::TMobileService /*aServiceGroup*/,
+		RMobilePhone::TMobilePhoneServiceAction /*aAction*/) 
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSetCallWaitingStatusComp()
+ *
+ * @param aServiceGroup The service group to change.
+ * @param aAction The action to do with that service group.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSetCallWaitingStatusReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSetSsPasswordReqL(const TDesC& /*aOldPassword*/,
+		const TDesC& /*aNewPassword*/,
+		MLtsyDispatchSupplementaryServicesSetSsPassword::TServiceType /*aService*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSetSsPasswordComp()
+ *
+ * @param aOldPassword The old password.
+ * @param aNewPassword The new password.
+ * @param aService The service.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSetSsPasswordReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleGetCallForwardingStatusReqL(RMobilePhone::TMobilePhoneCFCondition /*aCondition*/, RMobilePhone::TMobileService /*aService*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesGetCallForwardingStatusComp()
+ *
+ * @param aCondition the call forwarding condition.
+ * @param aService The service group.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleGetCallForwardingStatusReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleSendUssdMessageReqL(const TDesC8& /*aData*/, TUint8 /*aDcs*/, 
+		RMobileUssdMessaging::TMobileUssdDataFormat /*aFormat*/, RMobileUssdMessaging::TMobileUssdMessageType /*aType*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSendUssdMessageComp()
+ *
+ * @param aData The data to send in the message.
+ * @param aDcs The data coding scheme of the message.
+ * @param aFormat The message format.
+ * @param aType The message type.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSendUssdMessageReqL
+
+TInt CLtsySupplementaryServicesHandler::HandleSendUssdMessageNoFdnCheckReqL(const TDesC8& /*aData*/, TUint8 /*aDcs*/, 
+		RMobileUssdMessaging::TMobileUssdDataFormat /*aFormat*/, RMobileUssdMessaging::TMobileUssdMessageType /*aType*/)
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSendUssdMessageNoFdnCheckComp()
+ *
+ * @param aData The data to send in the message.
+ * @param aDcs The data coding scheme of the message.
+ * @param aFormat The message format.
+ * @param aType The message type.
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSendUssdMessageNoFdnCheckReqL
+
+TInt CLtsySupplementaryServicesHandler::HandleSendUssdReleaseReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesSendUssdReleaseComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleSendUssdReleaseReqL
+
+
+TInt CLtsySupplementaryServicesHandler::HandleClearBlacklistReqL()
+/**
+ * This request is completed by invoking
+ * CCtsyDispatcherCallback::CallbackSupplementaryServicesClearBlacklistComp()
+ *
+ * @return KErrNone on success, KErrNotSupported if this request is not supported,
+ * or another error code to indicate the failure otherwise.
+ */
+	{
+	TSYLOGENTRYEXIT;
+
+	TInt ret = KErrNotSupported;
+
+	// TODO: Add implementation here.......
+
+	return TSYLOGSETEXITERR(ret);
+	} // CLtsySupplementaryServicesHandler::HandleClearBlacklistReqL
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,54 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+PRJ_EXPORTS
+
+PRJ_TESTEXPORTS
+./te_integration_stltsysuite.iby   				    /epoc32/rom/include/te_integration_stltsysuite.iby
+
+../scripts/te_integration_stltsysuite.script			/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stltsysuite.script
+../scripts/te_integration_stltsysuite.script			/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stltsysuite.script
+
+../testdata/te_integration_stltsysuite.ini				/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stltsysuite.ini	
+../testdata/te_integration_stltsysuite.ini				/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stltsysuite.ini	
+
+../scripts/te_integration_stllsycallcontrol.script	    /epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stllsycallcontrol.script
+../scripts/te_integration_stllsycallcontrol.script		/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stllsycallcontrol.script
+
+../testdata/te_integration_stllsycallcontrol.ini		/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stllsycallcontrol.ini	
+../testdata/te_integration_stllsycallcontrol.ini		/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stllsycallcontrol.ini	
+
+../scripts/te_integration_stltsyphonecontrol.script			/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stltsyphonecontrol.script
+../scripts/te_integration_stltsyphonecontrol.script			/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stltsyphonecontrol.script
+
+../testdata/te_integration_stltsyphonecontrol.ini				/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stltsyphonecontrol.ini	
+../testdata/te_integration_stltsyphonecontrol.ini				/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stltsyphonecontrol.ini	
+
+../scripts/te_integration_stltsypktcontrol.script			/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stltsypktcontrol.script
+../scripts/te_integration_stltsypktcontrol.script			/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stltsypktcontrol.script
+
+../testdata/te_integration_stltsypktcontrol.ini				/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stltsypktcontrol.ini	
+../testdata/te_integration_stltsypktcontrol.ini				/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stltsypktcontrol.ini
+
+../scripts/te_integration_stllsysmscontrol.script			/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stllsysmscontrol.script
+../scripts/te_integration_stllsysmscontrol.script			/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stllsysmscontrol.script
+
+../testdata/te_integration_stllsysmscontrol.ini				/epoc32/release/winscw/udeb/z/systemtest/stltsy/te_integration_stllsysmscontrol.ini	
+../testdata/te_integration_stllsysmscontrol.ini				/epoc32/release/winscw/urel/z/systemtest/stltsy/te_integration_stllsysmscontrol.ini	
+
+PRJ_MMPFILES
+
+PRJ_TESTMMPFILES
+te_integration_stltsySuite.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/group/te_integration_stltsysuite.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,18 @@
+#ifndef __TE_INTEGRATION_STLTSY_SUITE_IBY__
+#define __TE_INTEGRATION_STLTSY_SUITE_IBY__
+
+#include <testexecute.iby>
+
+file=ABI_DIR\BUILD_DIR\te_integration_stltsySuite.exe		sys\bin\te_integration_stltsySuite.exe
+data=EPOCROOT##Epoc32\winscw\c\TestData\configs\te_integration_stllsycallcontrol.ini TestData\configs\te_integration_stllsycallcontrol.ini
+data=EPOCROOT##Epoc32\winscw\c\TestData\scripts\te_integration_stllsycallcontrol.script TestData\Scripts\te_integration_stllsycallcontrol.script
+
+data=EPOCROOT##Epoc32\winscw\c\TestData\configs\te_integration_stllsysmscontrol.ini TestData\configs\te_integration_stllsysmscontrol.ini
+data=EPOCROOT##Epoc32\winscw\c\TestData\scripts\te_integration_stllsysmscontrol.script TestData\Scripts\te_integration_stllsysmscontrol.script
+
+data=EPOCROOT##Epoc32\winscw\c\TestData\configs\te_integration_stltsyphonecontrol.ini TestData\configs\te_integration_stltsyphonecontrol.ini
+data=EPOCROOT##Epoc32\winscw\c\TestData\scripts\te_integration_stltsyphonecontrol.script TestData\Scripts\te_integration_stltsyphonecontrol.script
+
+data=EPOCROOT##Epoc32\winscw\c\TestData\configs\te_integration_stltsypktcontrol.ini TestData\configs\te_integration_stltsypktcontrol.ini
+data=EPOCROOT##Epoc32\winscw\c\TestData\scripts\te_integration_stltsypktcontrol.script TestData\Scripts\te_integration_stltsypktcontrol.script
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/group/te_integration_stltsysuite.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,155 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET      Te_integration_stltsySuite.exe
+TARGETTYPE  exe
+UID         0x1000007A 0x10287282
+CAPABILITY ALL -TCB
+//Please add any change under here
+USERINCLUDE   ../inc
+USERINCLUDE   ../../atcommand/sms/inc
+
+APP_LAYER_SYSTEMINCLUDE_SYMBIAN
+OS_LAYER_ESTLIB_SYSTEMINCLUDE SYSTEMINCLUDE
+
+
+SOURCEPATH  ../src
+
+SOURCE	            te_integration_stltsysuiteserver.cpp
+SOURCE	            te_integration_stltsysuitestepbase.cpp
+SOURCE              testltsysmscontrolreceivesmscase1step.cpp
+SOURCE              testltsysmscontrolsendsmscase1step.cpp
+SOURCE              testltsymodel.cpp
+SOURCE              testltsyasyncoperation.cpp
+
+//Test phone
+SOURCE              testltsyshareddata.cpp
+SOURCE              testltsyphonestepbase.cpp
+SOURCE              testltsyclosephone.cpp
+SOURCE              testltsyopenphone.cpp
+SOURCE              testltsygetphonebatteryinfo.cpp
+SOURCE              testltsygetphonesignalstrength.cpp
+SOURCE              testltsygetphonebatterycap.cpp
+SOURCE              testltsygetphonesignalcap.cpp
+SOURCE              testltsyphonegetfdnstatus.cpp
+SOURCE              testltsyphonegetnetworkregistrationstatus.cpp
+SOURCE              testltsyphonegetphoneid.cpp
+SOURCE              testltsyphonedetectednetworks.cpp
+SOURCE              testltsyphonedetectednetworkscancel.cpp
+SOURCE              testltsyphonesetnetworkselectionsetting.cpp
+SOURCE              testltsyphoneselectnetwork.cpp
+SOURCE              testltsyphonegethomenetwork.cpp
+SOURCE              testltsyphonegetcurrentnetworkinfo.cpp
+SOURCE              testltsyphonegetcellinfo.cpp
+SOURCE              testltsyphoneregistercellinfochangenotification.cpp
+//Test call 
+SOURCE              testltsycallshareddata.cpp
+SOURCE				testltsycallcontrolbase.cpp
+SOURCE              testltsycallcontroldialhangupcase.cpp
+SOURCE              testltsycallcontrolnotifyincomingcallcase1.cpp
+SOURCE              testltsycallcontrolnotifyincomingcallcase2.cpp
+SOURCE              testltsycallcontrolnotifyincomingcallcase3.cpp
+SOURCE              testltsycallcontrolcustomapiterminateallcalls.cpp
+SOURCE              testltsycallcontrolswapcalls.cpp
+SOURCE              testltsycallcontrolphoneterminateallcalls.cpp
+SOURCE              testltsycallcontroldialemergencycall.cpp
+SOURCE              testltsycallcontroldialbadcall.cpp
+SOURCE              testltsycallcontroldialselfcall.cpp 
+SOURCE              testltsycallcontroldialemergencycallstopallcalls.cpp 
+//Test phone store 
+SOURCE              testltsyphonestoreshareddata.cpp
+//Test packet
+SOURCE              testltsypktshareddata.cpp
+SOURCE              testltsypktteststepbase.cpp
+SOURCE              testltsypktopenpacket.cpp
+SOURCE              testltsypktclosepacket.cpp
+SOURCE              testltsypktopencontext.cpp
+SOURCE              testltsypktinitialsecontext.cpp
+SOURCE              testltsypktclosecontext.cpp
+SOURCE              testltsypktattachnetwork.cpp
+SOURCE              testltsypktdetachnetwork.cpp
+SOURCE              testltsypktactivatecontext.cpp
+SOURCE              testltsypktdeactivatecontext.cpp
+SOURCE              testltsypktdeletecontext.cpp
+SOURCE              testltsypktgetservicestatus.cpp
+SOURCE              testltsypktgetnwkregistrationstatus.cpp
+SOURCE              testltsypktgetcontextconfig.cpp
+SOURCE              testltsypktgetdefaultparams.cpp
+SOURCE              testltsypktsetdefaultparams.cpp
+SOURCE              testltsypktgetcontextinfo.cpp
+SOURCE              testltsypktsetcontextconfig.cpp
+SOURCE              testltsypktopencontextqos.cpp
+SOURCE              testltsypktclosecontextqos.cpp
+SOURCE              testltsypktgetcontextqosprofile.cpp
+SOURCE              testltsypktsetcontextqosprofile.cpp
+SOURCE              testltsypktgetstaticcapabilities.cpp
+SOURCE              testltsypktgetdynamiccapabilities.cpp
+//Test sms 
+SOURCE              testltsysmsatutil.cpp
+SOURCE              testltsysmsshareddata.cpp
+SOURCE              testltsysmsbase.cpp 
+SOURCE              testltsyopensms.cpp
+SOURCE              testltsyopensmsstore.cpp
+SOURCE              testltsyclosesms.cpp
+SOURCE              testltsyclosesmsstore.cpp
+SOURCE              testltsygetmessagestoreinfo.cpp
+SOURCE              testltsysmsstoregetinfo.cpp
+SOURCE              testltsysmssend.cpp
+SOURCE              testltsysmsreceive.cpp
+SOURCE              testltsysmsack.cpp
+SOURCE              testltsysmsnack.cpp 
+SOURCE              testltsysmsdelete.cpp
+SOURCE              testltsysmsdeleteinvalidindex.cpp
+SOURCE              testltsysmsdeleteall.cpp
+SOURCE              testltsysmsread.cpp
+SOURCE              testltsysmsreadinvalidindex.cpp
+SOURCE              testltsysmswrite.cpp
+SOURCE              testltsysmswriteinvalidparam.cpp
+SOURCE              testltsysmsstore.cpp
+SOURCE              testltsysmssendinvalidparam.cpp
+//Test PhoneBook
+SOURCE              testltsyphonestorebase.cpp       
+SOURCE              testltsyphbkopen.cpp
+SOURCE              testltsyphbkclose.cpp
+SOURCE              testltsyphbkgetstoreinfo.cpp
+SOURCE              testltsyphbkdelete.cpp
+SOURCE              testltsyphbkdeleteinvalidindex.cpp
+SOURCE              testltsyphbkwrite.cpp
+SOURCE              testltsyphbkwriteinvalidindex.cpp
+SOURCE              testltsyphbkread.cpp
+SOURCE              testltsyphbkreadinvalidindex.cpp
+
+//Please add your system include under here. 
+//Please add your libraries under here. For example:
+LIBRARY        euser.lib
+LIBRARY			efsrv.lib
+LIBRARY			cntmodel.lib
+LIBRARY			esock.lib
+LIBRARY			etel.lib
+LIBRARY			etelmm.lib
+LIBRARY			etelpckt.lib 
+LIBRARY			commdb.lib
+LIBRARY			commsdat.lib
+LIBRARY			systemtest_commdbutil.lib 
+LIBRARY			testexecuteutils.lib 
+LIBRARY			testexecutelogclient.lib 
+LIBRARY			systemtest_utils.lib 
+LIBRARY			etel3rdparty.lib
+LIBRARY         estor.lib 
+LIBRARY         libc.lib 
+LIBRARY         bafl.lib
+LIBRARY         customapi.lib
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/te_integration_stltsysuitedefs.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+/**
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+* This file define all the common values thoughout your test project
+* 
+*
+*/
+
+
+
+/**
+ @file Te_integration_stltsySuiteDefs.h
+ @internalTechnology
+*/
+#if (!defined __TE_INTEGRATION_STLTSY_SUITEDEFS_H__)
+#define __TE_INTEGRATION_STLTSY_SUITEDEFS_H__
+
+// Please modify below value with your project and must match with your configuration ini file which is required to be modified as well
+_LIT(KTe_integration_stltsySuiteString,"TheString");
+_LIT(KTe_integration_stltsySuiteInt,"TheInt");
+_LIT(KTe_integration_stltsySuiteBool,"TheBool");
+
+// For test step panics
+_LIT(KTe_integration_stltsySuitePanic,"Te_integration_stltsySuite");
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/te_integration_stltsysuiteserver.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+/**
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file Te_integration_stltsySuiteServer.h
+ @internalTechnology
+*/
+
+#if (!defined __TE_INTEGRATION_STLTSY_SERVER_H__)
+#define __TE_INTEGRATION_STLTSY_SERVER_H__
+
+#include <TestExecuteServerBase.h>
+
+// For shared data
+#include "TestLtsySharedData.h"
+
+#include "TestLtsyModel.h"
+
+class CTe_integration_stltsySuite : public CTestServer
+	{
+public:
+	static CTe_integration_stltsySuite* NewL();
+	// Base class pure virtual override
+	virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+	~CTe_integration_stltsySuite();
+
+// Please Add/modify your class members
+private:
+	CTe_integration_stltsySuite();
+	void ConstructL(const TDesC& aName);
+public:
+	CTestLtsySharedData* iSharedData;
+	CTestLtsyModel* iTestModel;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/te_integration_stltsysuitestepbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,51 @@
+/**
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file Te_integration_stltsySuiteStepBase.h
+ @internalTechnology
+*/
+
+#if (!defined __TE_INTEGRATION_STLTSY_STEP_BASE__)
+#define __TE_INTEGRATION_STLTSY_STEP_BASE__
+#include <TestExecuteStepBase.h>
+// Please add your include here if you have 
+
+/****************************************************************************
+* The reason to have a new step base is that it is very much possible
+* that the all individual test steps have project related common variables 
+* and members 
+* and this is the place to define these common variable and members.
+* 
+****************************************************************************/
+class CTe_integration_stltsySuiteStepBase : public CTestStep
+	{
+public:
+	virtual ~CTe_integration_stltsySuiteStepBase();
+	CTe_integration_stltsySuiteStepBase();
+	virtual TVerdict doTestStepPreambleL(); 
+	virtual TVerdict doTestStepPostambleL();
+
+//Please add your class members which will be common to all individual test steps:
+protected:
+	HBufC8*		iReadData;
+	HBufC8*		iWriteData;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyasyncoperation.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,46 @@
+// TestTelephonyAsyncOperation.h
+//
+// Copyright (c) 2004-2008 Symbian Software Ltd.  All rights reserved.
+//
+// Active object derived class for asynchronous operation
+//
+
+
+#if (!defined __TEST_TELEPHONY_ASYNC_OPERATION_H__)
+#define  __TEST_TELEPHONY_ASYNC_OPERATION_H__
+
+// EPOC include
+#include <e32base.h>
+#include <etel3rdparty.h>
+
+/*@{*/
+///constants
+enum TTestAsyncOperation
+	{
+	KNotifyLineStatusChange,
+	};
+/*@}*/
+
+class CTelephonyAsyncOperation : public CActive
+/**
+@internalAll
+@test
+@class CTelephonyAsyncOperation
+
+Active object for executing the asynchronous requests. 
+*/
+	{
+public:
+	CTelephonyAsyncOperation(CTestStep& aTestStep);
+	~CTelephonyAsyncOperation();
+
+	virtual void	DoCancel();
+	virtual void	RunL();
+
+	TInt	SetOperation();
+	
+private:
+	CTestStep&	iTestStep;
+	};
+
+#endif /* __TEST_TELEPHONY_ASYNC_OPERATION_H__ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,113 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolbase.h
+//  
+
+#ifndef TESTLTSYCALLCONTROLBASE_H_
+#define TESTLTSYCALLCONTROLBASE_H_
+
+//System include
+#include "te_integration_stltsysuitestepbase.h"
+#include "testltsycallshareddata.h"
+#include "testltsymodel.h"
+
+
+/**
+ * This is the test step base class of Call Control test 
+ * category which provides methods
+ */
+
+class CTestLtsyCallControlBase : public CTe_integration_stltsySuiteStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	virtual ~CTestLtsyCallControlBase();
+	
+	CTestLtsyCallControlBase(CTestLtsyModel& aModel);
+	
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	
+	virtual TVerdict doTestStepPostambleL();
+	
+	virtual TVerdict doTestStepL();
+	
+	void OpenPhoneL();
+	
+	void OpenLineL();
+	
+	void CloseLine();
+	
+	void OpenCustomAPIL();
+	
+	void CloseCustomAPI();
+	
+	void CustomAPITerminateAllCallsL();
+	
+	void PhoneTerminateAllCallsL();
+	
+	void CreateThirtyPartyTelephonyL();
+
+	void OpenCallOneL();
+	
+	void OpenCallTwoL();
+	
+	void CloseCallOne();
+	
+	void CloseCallTwo();	
+	
+	void DialCallOne();
+	
+	void CallOneDialBadNumberL();
+	
+	void CallOneDialSelfNumberL();
+	
+	void DialCallTwo();
+	
+	void HangupCallOneL();
+	
+	void HangupCallTwoL();
+	
+	void HoldCallOne();
+	
+	void HoldCallTwo();
+	
+	void ResumeCallOne();
+	
+	void ResumeCallTwo();
+	
+	void SwapCallOne();
+	void NotifyCallOne();
+
+	void SwapCallTwo();
+	void NotifyCallTwo();
+	
+	void NotifyIncomingCallOneL();
+	
+	void NotifyIncomingCallTwoL();
+	
+	void AnswerIncomingCallOneL();
+	
+	void AnswerIncomingCallTwoL();
+	
+protected:
+	
+	CTestLtsyModel& iLtsyModel;
+	};
+
+_LIT(KTestLtsyCallControlBase,   "CTestLtsyCallControlBase");
+#endif /*TESTLTSYCALLCONTROLBASE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolcustomapiterminateallcalls.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolcustomapiterminateallcalls.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLCUSTOMAPITERMINATEALLCALLS_H_
+#define TESTLTSYCALLCONTROLCUSTOMAPITERMINATEALLCALLS_H_
+
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlCustomAPITerminateAllCalls : public CTestLtsyCallControlBase
+	{
+	
+public:
+	virtual ~CTestLtsyCallControlCustomAPITerminateAllCalls();
+	
+	CTestLtsyCallControlCustomAPITerminateAllCalls(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyCallControlCustomAPITerminateAllCalls,   "CTestLtsyCallControlCustomAPITerminateAllCalls");
+#endif /*TESTLTSYCALLCONTROLCUSTOMAPITERMINATEALLCALLS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialbadcall.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,36 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolbase.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLDIALBADCALL_H_
+#define TESTLTSYCALLCONTROLDIALBADCALL_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlDialBadCall : public CTestLtsyCallControlBase
+	{
+public:
+	virtual ~CTestLtsyCallControlDialBadCall();
+	
+	CTestLtsyCallControlDialBadCall(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();	
+	};
+
+_LIT(KTestLtsyCallControlDialBadCall,   "CTestLtsyCallControlDialBadCall");
+
+#endif /*TESTLTSYCALLCONTROLDIALBADCALL_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialemergencycall.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontroldialemergencycall.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLDIALEMERGENCYCALL_H_
+#define TESTLTSYCALLCONTROLDIALEMERGENCYCALL_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlDialEmergencyCall : public CTestLtsyCallControlBase
+	{
+	
+public:
+	virtual ~CTestLtsyCallControlDialEmergencyCall();
+	
+	CTestLtsyCallControlDialEmergencyCall(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyCallControlDialEmergencyCall,   "CTestLtsyCallControlDialEmergencyCall");
+
+#endif /*TESTLTSYCALLCONTROLDIALEMERGENCYCALL_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialemergencycallstopallcalls.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontroldialemergencycallstopallcalls.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLDIALEMERGENCYCALLSTOPALLCALLS_H_
+#define TESTLTSYCALLCONTROLDIALEMERGENCYCALLSTOPALLCALLS_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlDialEmergencyCallStopAllCall : public CTestLtsyCallControlBase
+	{
+	
+public:
+	virtual ~CTestLtsyCallControlDialEmergencyCallStopAllCall();
+	
+	CTestLtsyCallControlDialEmergencyCallStopAllCall(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyCallControlDialEmergencyCallStopAllCall,   "CTestLtsyCallControlDialEmergencyCallStopAllCall");
+
+#endif /*TESTLTSYCALLCONTROLDIALEMERGENCYCALLSTOPALLCALLS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialhangupcase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,36 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontroldialhangupcase.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLDIALHANGUPCASE_H_
+#define TESTLTSYCALLCONTROLDIALHANGUPCASE_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlDialHangupCase : public CTestLtsyCallControlBase
+	{
+	
+public:
+	virtual ~CTestLtsyCallControlDialHangupCase();
+	
+	CTestLtsyCallControlDialHangupCase(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyCallControlDialHangupCase,   "CTestLtsyCallControlDialHangupCase");
+#endif /*TESTLTSYCALLCONTROLDIALHANGUPCASE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontroldialselfcall.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontroldialselfcall.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLDIALSELFCALL_H_
+#define TESTLTSYCALLCONTROLDIALSELFCALL_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlDialSelfCall : public CTestLtsyCallControlBase
+	{
+public:
+	virtual ~CTestLtsyCallControlDialSelfCall();
+	
+	CTestLtsyCallControlDialSelfCall(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();	
+	};
+
+_LIT(KTestLtsyCallControlDialSelfCall,   "CTestLtsyCallControlDialSelfCall");
+
+
+#endif /*TESTLTSYCALLCONTROLDIALSELFCALL_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolnotifyincomingcallcase1.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolnotifyincomingcallcase1.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE1_H_
+#define TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE1_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlNotifyIncomingCallCase1 : public CTestLtsyCallControlBase
+	{
+public:
+	virtual ~CTestLtsyCallControlNotifyIncomingCallCase1();
+	
+	CTestLtsyCallControlNotifyIncomingCallCase1(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();	
+	};
+
+_LIT(KTestLtsyCallControlNotifyIncomingCallCase1,   "CTestLtsyCallControlNotifyIncomingCallCase1");
+#endif /*TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE1_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolnotifyincomingcallcase2.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,36 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolnotifyincomingcallcase2.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE2_H_
+#define TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE2_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlNotifyIncomingCallCase2 : public CTestLtsyCallControlBase
+	{
+public:
+	virtual ~CTestLtsyCallControlNotifyIncomingCallCase2();
+	
+	CTestLtsyCallControlNotifyIncomingCallCase2(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();	
+	};
+
+_LIT(KTestLtsyCallControlNotifyIncomingCallCase2,   "CTestLtsyCallControlNotifyIncomingCallCase2");
+
+#endif /*TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE2_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolnotifyincomingcallcase3.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,36 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolnotifyincomingcallcase3.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE3_H_
+#define TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE3_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlNotifyIncomingCallCase3 : public CTestLtsyCallControlBase
+	{
+public:
+	virtual ~CTestLtsyCallControlNotifyIncomingCallCase3();
+	
+	CTestLtsyCallControlNotifyIncomingCallCase3(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();	
+	};
+
+_LIT(KTestLtsyCallControlNotifyIncomingCallCase3,   "CTestLtsyCallControlNotifyIncomingCallCase3");
+
+#endif /*TESTLTSYCALLCONTROLNOTIFYINCOMINGCALLCASE3_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolphoneterminateallcalls.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolphoneterminateallcalls.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLPHONETERMINATEALLCALLS_H_
+#define TESTLTSYCALLCONTROLPHONETERMINATEALLCALLS_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlPhoneTerminateAllCalls : public CTestLtsyCallControlBase
+	{
+	
+public:
+	virtual ~CTestLtsyCallControlPhoneTerminateAllCalls();
+	
+	CTestLtsyCallControlPhoneTerminateAllCalls(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyCallControlPhoneTerminateAllCalls,   "CTestLtsyCallControlPhoneTerminateAllCalls");
+
+#endif /*TESTLTSYCALLCONTROLPHONETERMINATEALLCALLS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallcontrolswapcalls.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,35 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallcontrolswapcalls.h
+// 
+
+#ifndef TESTLTSYCALLCONTROLSWAPCALLS_H_
+#define TESTLTSYCALLCONTROLSWAPCALLS_H_
+
+//user include
+#include "testltsycallcontrolbase.h"
+
+class CTestLtsyCallControlSwapCalls : public CTestLtsyCallControlBase
+	{
+public:
+	virtual ~CTestLtsyCallControlSwapCalls();
+	
+	CTestLtsyCallControlSwapCalls(CTestLtsyModel& aModel);
+	
+protected:
+	virtual TVerdict doTestStepL();		
+	};
+
+_LIT(KTestLtsyCallControlSwapCalls,   "CTestLtsyCallControlSwapCalls");
+#endif /*TESTLTSYCALLCONTROLSWAPCALLS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsycallshareddata.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,62 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsycallshareddata.h
+// 
+
+#ifndef TESTTELEPHONYCALLSHAREDDATA_H
+#define TESTTELEPHONYCALLSHAREDDATA_H
+
+// system include
+#include <e32cmn.h>
+#include <e32base.h>
+#include <etelmm.h>
+#include <etel3rdparty.h>
+#include <RMmCustomAPI.h>
+
+/**
+ * This class defines the shared data related to phone call among test steps.
+ * 
+ */
+
+class CTestLtsyCallSharedData : public CBase
+	{
+/**
+ * @internalAll
+ * @test
+ */	
+	
+public:
+	static CTestLtsyCallSharedData* NewL();
+	virtual ~CTestLtsyCallSharedData();
+	RLine& VoiceLine();
+	RMobileCall& VoiceCallOne();
+	RMobileCall& VoiceCallTwo();
+	RMobileCall& EmergencyCall();
+	RMmCustomAPI& MmCustomAPI();
+	CTelephony*& ThirdPartyTelephony();
+	
+protected:
+	CTestLtsyCallSharedData();
+	void ConstructL();
+	
+private:
+	RLine iVoiceLine;
+	RMobileCall iVoiceCallOne;
+	RMobileCall iVoiceCallTwo;
+	RMobileCall iEmergencyCall;
+	RMmCustomAPI iMmCustomAPI;
+	CTelephony* iThirdPartyTel;
+	};
+
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyclosephone.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,46 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyclosephone.h
+// 
+
+#ifndef TESTTELEPHONYCLOSEPHONE_H_
+#define TESTTELEPHONYCLOSEPHONE_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the step to close the shared phone.
+ * 
+ */
+class CTestLtsyClosePhone : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyClosePhone();
+	CTestLtsyClosePhone(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyClosePhone,   "TestLtsyClosePhone");
+
+#endif /*TESTTELEPHONYCLOSEPHONE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyclosesms.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyclosesms.h
+// 
+
+#ifndef TESTLTSYCLOSESMS_H
+#define TESTLTSYCLOSESMS_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyCloseSms
+ *
+ */
+class CTestLtsyCloseSms : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsyCloseSms();
+	static CTestLtsyCloseSms* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyCloseSms* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyCloseSms(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+private:
+
+	}; // class CTestLtsyCloseSms
+_LIT(KCTestLtsyCloseSms,"CTestLtsyCloseSms");
+
+#endif // TESTLTSYCLOSESMS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyclosesmsstore.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyclosesmsstore.h
+// 
+
+#ifndef TESTLTSYCLOSESMSSTORE_H
+#define TESTLTSYCLOSESMSSTORE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyCloseSmsStore
+ *
+ */
+class CTestLtsyCloseSmsStore : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsyCloseSmsStore();
+	static CTestLtsyCloseSmsStore* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyCloseSmsStore* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyCloseSmsStore(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+private:
+
+	}; // class CTestLtsyCloseSmsStore
+_LIT(KCTestLtsyCloseSmsStore,"CTestLtsyCloseSmsStore");
+
+#endif // TESTLTSYCLOSESMSSTORE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetmessagestoreinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,54 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsygetmessagestoreinfo.h
+// 
+
+#ifndef TESTLTSYGETMESSAGESTOREINFO_H
+#define TESTLTSYGETMESSAGESTOREINFO_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyGetMessageStoreInfo
+ *
+ */
+class CTestLtsyGetMessageStoreInfo : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsyGetMessageStoreInfo();
+	static CTestLtsyGetMessageStoreInfo* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyGetMessageStoreInfo* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyGetMessageStoreInfo(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void GetMessageStoreInfoL();
+	void CheckMessageStoreInfoL();
+private:
+   	RMobilePhoneStore::TMobilePhoneStoreInfoV1       iInfo;	
+
+	}; // class CTestLtsyGetMessageStoreInfo
+_LIT(KCTestLtsyGetMessageStoreInfo,"CTestLtsyGetMessageStoreInfo");
+
+#endif // TESTLTSYGETMESSAGESTOREINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonebatterycap.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,32 @@
+// TestTelephonyGetPhoneBatteryInfo.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyGetPhoneBatteryCap
+
+
+#ifndef TESTTELEPHONYGETPHONEBATTERYCAP_H_
+#define TESTTELEPHONYGETPHONEBATTERYCAP_H_
+
+//user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the function to get battery info
+ * 
+ */
+class CTestLtsyGetPhoneBatteryCap : public CTestLtsyPhoneStepBase  
+/**
+@internalAll
+@test
+*/
+{
+public:
+	CTestLtsyGetPhoneBatteryCap(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyGetPhoneBatteryCap();
+	virtual TVerdict doTestStepL();
+
+};
+
+_LIT(KTestLtsyGetPhoneBatteryCap,           "TestLtsyGetPhoneBatteryCap");
+
+#endif /*TESTTELEPHONYGETPHONEBATTERYCAP_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonebatteryinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,37 @@
+// TestTelephonyGetPhoneBatteryInfo.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyGetPhoneBatteryInfo
+
+
+#ifndef TESTTELEPHONYGETPHONEBATTERYINFO_H_
+#define TESTTELEPHONYGETPHONEBATTERYINFO_H_
+
+//user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the function to get battery info
+ * 
+ */
+class CTestLtsyGetPhoneBatteryInfo : public CTestLtsyPhoneStepBase  
+/**
+@internalAll
+@test
+*/
+{
+public:
+	CTestLtsyGetPhoneBatteryInfo(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyGetPhoneBatteryInfo();
+	virtual TVerdict doTestStepL();
+private:
+	void GetBatteryCaps();
+	void NotifyBatteryInfoChangeL();
+
+private:
+	RMobilePhone::TMobilePhoneBatteryInfoV1      iBatteryInfo;
+};
+
+_LIT(KTestLtsyGetPhoneBatteryInfo,           "TestLtsyGetPhoneBatteryInfo");
+
+#endif /*TESTTELEPHONYGETPHONEBATTERYINFOSTEP_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonesignalcap.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,32 @@
+// TestLtsyGetPhoneSignalCap.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyGetPhoneSignalCap
+
+#ifndef TESTTELEPHONYGETPHONESIGNALCAP_H_
+#define TESTTELEPHONYGETPHONESIGNALCAP_H_
+
+//user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the function to get signal strength
+ * 
+ */
+class CTestLtsyGetPhoneSignalCap : public CTestLtsyPhoneStepBase  
+/**
+@internalAll
+@test
+*/
+{
+public:
+	CTestLtsyGetPhoneSignalCap(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyGetPhoneSignalCap();	
+	virtual TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyGetPhoneSingalCap,          "TestLtsyGetPhoneSingalCap");
+
+#endif /*TESTTELEPHONYGETPHONESIGNALCAP_H_*/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsygetphonesignalstrength.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,39 @@
+// TestTelephonyGetPhoneSingalStrength.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyGetPhoneSingalStrength
+
+#ifndef TESTTELEPHONYGETPHONESIGNALSTRENGTH_H_
+#define TESTTELEPHONYGETPHONESIGNALSTRENGTH_H_
+
+//user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the function to get signal strength
+ * 
+ */
+class CTestLtsyGetPhoneSignalStrength : public CTestLtsyPhoneStepBase  
+/**
+@internalAll
+@test
+*/
+{
+public:
+	CTestLtsyGetPhoneSignalStrength(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyGetPhoneSignalStrength();	
+	virtual TVerdict doTestStepL();
+private:
+	void   GetSignalCaps();
+	void   NotifySignalStrengthChangeL();
+
+private:
+	TInt32                                       iSignalStrength;
+	TInt8                                        iBar;
+};
+
+_LIT(KTestLtsyGetPhoneSingalStrength,          "TestLtsyGetPhoneSingalStrength");
+
+#endif /*TESTTELEPHONYGETPHONESIGNALSTRENGTH_H_*/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsymodel.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,100 @@
+//  TestTelephonyModel.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyModel
+//
+#ifndef TESTTELEPHONYMODEL_H_
+#define TESTTELEPHONYMODEL_H_
+
+// system include
+#include <e32cmn.h>
+#include <e32des8.h>
+#include <etelmm.h>
+#include <etel.h>
+#include <etel3rdparty.h> 
+
+// forward class
+class CTestLtsySharedEnv;
+class CTestLtsyCallSharedData;
+class CTestLtsyPktSharedData;
+class CTestLtsySmsSharedData;
+class CTestLtsyPhoneStoreSharedData;
+
+// define the module name length
+const TUint8 KModuleNameLen = 200;
+
+
+/**
+ * This class acts as a proxy to provide the functions to return the shared data
+ * accross the steps.
+ * 
+ */
+class CTestLtsyModel : public CBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	static CTestLtsyModel* NewL();
+	~CTestLtsyModel();
+	inline CTestLtsySharedEnv& SharedEnv();
+	inline CTestLtsyCallSharedData& CallSharedData();
+	inline CTestLtsyPktSharedData&  PktSharedData();
+	inline CTestLtsySmsSharedData&  SmsSharedData();
+	inline CTestLtsyPhoneStoreSharedData& PhoneStoreSharedData();
+private:
+	void ConstructL();
+private:
+	CTestLtsySharedEnv* iSharedPhoneEnv;
+	CTestLtsyCallSharedData* iCallSharedData;
+	CTestLtsyPktSharedData*  iPktSharedData;
+	CTestLtsySmsSharedData* iSmsSharedData;
+	CTestLtsyPhoneStoreSharedData* iPhoneStoreSharedData;
+	};
+/**
+ * This calss define a shared phone environment
+ * 
+ */
+class CTestLtsySharedEnv : public CBase
+/**
+ * @internalAll
+ * @test
+ */
+    { 
+public:
+    ~CTestLtsySharedEnv();
+	static CTestLtsySharedEnv* NewL();
+    inline RMobilePhone& Phone();
+    inline RTelServer& ETelServer();
+    inline TBool PhoneOpened();
+    inline void IncreasePhoneReference();
+    inline void DecreasePhoneReference();
+    inline TInt PhoneRefCount();
+	void LoadModuleL(const TDesC& aModuleName);
+	void OpenPhoneL(const TDesC& aModuleName);
+	// must be called by client thread if it call OpenPhoneL()
+	void ClosePhone();
+	void CreateTelephonyL();
+	void DestroyTelephony();
+	CTelephony* Telephony();
+private:
+    CTestLtsySharedEnv();
+    void ConstructL();	
+    TBool FindPhoneIndex();
+private:
+	TBuf<KModuleNameLen> iModuleName;
+	RMobilePhone* iSharedPhone;
+	TBool iPhoneInitialized;
+	RTelServer iSharedTelServer;
+	TInt iPhoneRef;
+	TInt iPhoneIndex;
+	CTelephony *iTelephony;
+//	RMmCustomAPI     *iRmmCustomAPI;
+	CActiveScheduler*  iActiveSchaduler;
+//    TBuf<KCommsDbSvrMaxFieldLength> iTsyNameFromCommdb;
+	};	
+
+#include "TestLtsyModel.inl"
+
+#endif /*TESTTELEPHONYMODEL_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsymodel.inl	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,124 @@
+//  TestTelephonyModel.inl
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  The inline function implementation of CTestTelephonyModel
+
+#ifndef TESTTELEPHONYMODEL_INL_
+#define TESTTELEPHONYMODEL_INL_
+
+// user include
+#include "TestLtsyModel.h"
+
+/**
+ * Get the shared phone environment
+ * 
+ */
+CTestLtsySharedEnv& CTestLtsyModel::SharedEnv()
+	{
+	return *iSharedPhoneEnv;
+	}
+
+/**
+ * Get the packet shared data
+ *
+ */
+CTestLtsyPktSharedData& CTestLtsyModel::PktSharedData()
+	{
+	return *iPktSharedData;
+	}
+
+/**
+ * Get the call shared data
+ * 
+ */
+CTestLtsyCallSharedData& CTestLtsyModel::CallSharedData()
+	{
+	return *iCallSharedData;
+	}	
+
+/**
+ * Get the sms shared data
+ * 
+ */
+CTestLtsySmsSharedData& CTestLtsyModel::SmsSharedData()
+	{
+	return *iSmsSharedData;
+	}
+	
+/**
+ * Get the phone store shared data
+ * 
+ */
+
+
+CTestLtsyPhoneStoreSharedData& CTestLtsyModel::PhoneStoreSharedData()
+	{
+	return *iPhoneStoreSharedData; 
+	}
+
+///**
+// * Get the Tsy Adaptor
+// * 
+// */
+//CTestTelephonyTsyAdaptor& CTestLtsySharedEnv::TsyAdaptor()
+//	{
+//	return *iTsyAdaptor;
+//	}
+
+/**
+ * Get the shared phone
+ * 
+ */
+RMobilePhone& CTestLtsySharedEnv::Phone() 
+	{
+	return *iSharedPhone;
+	}
+
+/**
+ * Get the shared ETel server
+ * 
+ */
+RTelServer& CTestLtsySharedEnv::ETelServer() 
+	{
+	return iSharedTelServer;
+	}
+
+/**
+ * Check if the shared phone has arleady been opened before
+ * 
+ */
+TBool CTestLtsySharedEnv::PhoneOpened()
+	{
+	return iPhoneInitialized;
+	}
+
+/**
+ * Increase the shared phone reference number when a client used the shared phone
+ * 
+ */
+void CTestLtsySharedEnv::IncreasePhoneReference()
+	{
+	iPhoneRef++;
+	}
+
+/**
+ * Decrease the shared phone reference number
+ * 
+ */
+void CTestLtsySharedEnv::DecreasePhoneReference()
+	{
+	iPhoneRef--;
+	}
+
+/**
+ * Get the phone reference count
+ * 
+ */
+TInt CTestLtsySharedEnv::PhoneRefCount()
+	{
+	return iPhoneRef;
+	}
+
+#endif /*TESTTELEPHONYMODEL_INL_*/
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyopenphone.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestTelephonyOpenPhone.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyOpenPhone
+//
+#ifndef TESTTELEPHONYOPENPHONE_H_
+#define TESTTELEPHONYOPENPHONE_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyOpenPhone : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyOpenPhone();
+	CTestLtsyOpenPhone(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyOpenPhone,   "TestLtsyOpenPhone");
+#endif /*TESTTELEPHONYOPENPHONE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyopensms.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyopensmsstore.h
+// 
+
+#ifndef TESTLTSYOPENSMS_H
+#define TESTLTSYOPENSMS_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyOpenSms
+ *
+ */
+class CTestLtsyOpenSms : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsyOpenSms();
+	static CTestLtsyOpenSms* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyOpenSms* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyOpenSms(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+private:
+	
+	}; // class CTestLtsyOpenSms
+_LIT(KCTestLtsyOpenSms,"CTestLtsyOpenSms");
+
+#endif // TESTLTSYOPENSMS_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyopensmsstore.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyopensmsstore.h
+// 
+
+#ifndef TESTLTSYOPENSMSSTORE_H
+#define TESTLTSYOPENSMSSTORE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyOpenSmsStore
+ *
+ */
+class CTestLtsyOpenSmsStore : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsyOpenSmsStore();
+	static CTestLtsyOpenSmsStore* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyOpenSmsStore* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyOpenSmsStore(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+private:
+	
+	}; // class CTestLtsyOpenSmsStore
+_LIT(KCTestLtsyOpenSmsStore,"CTestLtsyOpenSmsStore");
+
+#endif // TESTLTSYOPENSMSSTORE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkclose.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkclose.h
+// 
+
+#ifndef TESTLTSYPHBKCLOSE_H
+#define TESTLTSYPHBKCLOSE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkClose
+ *
+ */
+class CTestLtsyPhbkClose : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkClose();
+	static CTestLtsyPhbkClose* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkClose* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkClose(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void ClosePhonebookL();
+private:
+	
+	}; // class CTestLtsyPhbkClose
+_LIT(KCTestLtsyPhbkClose,"CTestLtsyPhbkClose");
+
+#endif // TESTLTSYPHBKCLOSE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkdelete.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkdelete.h
+// 
+
+#ifndef TESTLTSYPHBKDELETE_H
+#define TESTLTSYPHBKDELETE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkDelete
+ *
+ */
+class CTestLtsyPhbkDelete : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkDelete();
+	static CTestLtsyPhbkDelete* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkDelete* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkDelete(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void DeletePhonebookL(TInt aIndex);
+private:
+	
+	}; // class CTestLtsyPhbkDelete
+_LIT(KCTestLtsyPhbkDelete,"CTestLtsyPhbkDelete");
+
+#endif // TESTLTSYPHBKDELETE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkdeleteinvalidindex.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkdeleteinvalidindex.h
+// 
+
+#ifndef TESTLTSYPHBKDELETEINVALIDINDEX_H
+#define TESTLTSYPHBKDELETEINVALIDINDEX_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkDeleteInvalidIndex
+ *
+ */
+class CTestLtsyPhbkDeleteInvalidIndex : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkDeleteInvalidIndex();
+	static CTestLtsyPhbkDeleteInvalidIndex* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkDeleteInvalidIndex* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkDeleteInvalidIndex(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void DeletePhonebookL(TInt aIndex);
+private:
+	
+	}; // class CTestLtsyPhbkDeleteInvalidIndex
+_LIT(KCTestLtsyPhbkDeleteInvalidIndex,"CTestLtsyPhbkDeleteInvalidIndex");
+
+#endif // TESTLTSYPHBKDELETEINVALIDINDEX_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkgetstoreinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkgetstoreinfo.h
+// 
+
+#ifndef TESTLTSYPHBKGETSTOREINFO_H
+#define TESTLTSYPHBKGETSTOREINFO_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkGetStoreInfo
+ *
+ */
+class CTestLtsyPhbkGetStoreInfo : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkGetStoreInfo();
+	static CTestLtsyPhbkGetStoreInfo* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkGetStoreInfo* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkGetStoreInfo(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void GetStoreInfoL();
+private:
+	
+	}; // class CTestLtsyPhbkGetStoreInfo
+_LIT(KCTestLtsyPhbkGetStoreInfo,"CTestLtsyPhbkGetStoreInfo");
+
+#endif // TESTLTSYPHBKGETSTOREINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkopen.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkopen.h
+// 
+
+#ifndef TESTLTSYPHBKOPEN_H
+#define TESTLTSYPHBKOPEN_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkOpen
+ *
+ */
+class CTestLtsyPhbkOpen : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkOpen();
+	static CTestLtsyPhbkOpen* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkOpen* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkOpen(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void OpenPhonebookL();
+private:
+	
+	}; // class CTestLtsyPhbkOpen
+_LIT(KCTestLtsyPhbkOpen,"CTestLtsyPhbkOpen");
+
+#endif // TESTLTSYPHBKOPEN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkread.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkread.h
+// 
+
+#ifndef TESTLTSYPHBKREAD_H
+#define TESTLTSYPHBKREAD_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkRead
+ *
+ */
+class CTestLtsyPhbkRead : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkRead();
+	static CTestLtsyPhbkRead* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkRead* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkRead(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void ReadEntryL(TInt aIndex);
+private:
+	
+	}; // class CTestLtsyPhbkRead
+_LIT(KCTestLtsyPhbkRead,"CTestLtsyPhbkRead");
+
+#endif // TESTLTSYPHBKREAD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkreadinvalidindex.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkreadinvalidindex.h
+// 
+
+#ifndef TESTLTSYPHBKREADINVALIDINDEX_H
+#define TESTLTSYPHBKREADINVALIDINDEX_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkReadInvalidIndex
+ *
+ */
+class CTestLtsyPhbkReadInvalidIndex : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkReadInvalidIndex();
+	static CTestLtsyPhbkReadInvalidIndex* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkReadInvalidIndex* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkReadInvalidIndex(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void ReadEntryL(TInt aIndex);
+private:
+	
+	}; // class CTestLtsyPhbkReadInvalidIndex
+_LIT(KCTestLtsyPhbkReadInvalidIndex,"CTestLtsyPhbkReadInvalidIndex");
+
+#endif // TESTLTSYPHBKREADINVALIDINDEX_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkwrite.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkwrite.h
+// 
+
+#ifndef TESTLTSYPHBKWRITE_H
+#define TESTLTSYPHBKWRITE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkWrite
+ *
+ */
+class CTestLtsyPhbkWrite : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkWrite();
+	static CTestLtsyPhbkWrite* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkWrite* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkWrite(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void WriteEntryL(TInt aIndex);
+private:
+	
+	}; // class CTestLtsyPhbkWrite
+_LIT(KCTestLtsyPhbkWrite,"CTestLtsyPhbkWrite");
+
+#endif // TESTLTSYPHBKWRITE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphbkwriteinvalidindex.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphbkwriteinvalidindex.h
+// 
+
+#ifndef TESTLTSYPHBKWRITEINVALIDINDEX_H
+#define TESTLTSYPHBKWRITEINVALIDINDEX_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsyphonestorebase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsyPhbkWriteInvalidIndex
+ *
+ */
+class CTestLtsyPhbkWriteInvalidIndex : public CTestLtsyPhoneStoreBase
+	{
+public:
+
+	~CTestLtsyPhbkWriteInvalidIndex();
+	static CTestLtsyPhbkWriteInvalidIndex* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsyPhbkWriteInvalidIndex* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsyPhbkWriteInvalidIndex(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void WriteEntryL(TInt aIndex);
+private:
+	
+	}; // class CTestLtsyPhbkWriteInvalidIndex
+_LIT(KCTestLtsyPhbkWriteInvalidIndex,"CTestLtsyPhbkWriteInvalidIndex");
+
+#endif // TESTLTSYPHBKWRITEINVALIDINDEX_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetcellinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyGetCellInfo.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetCellInfo
+//
+#ifndef TESTLTSYPHONEGETCELLINFO_H_
+#define TESTLTSYPHONEGETCELLINFO_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetCellInfo : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetCellInfo();
+	CTestLtsyPhoneGetCellInfo(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetCellInfo,   "TestLtsyPhoneGetCellInfo");
+#endif /*TESTLTSYPHONEGETCELLINFO_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetcurrentnetworkinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyGetCurrentNetworkInfo.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetCurrentNetworkInfo
+//
+#ifndef TESTLTSYPHONEGETCURRENTNWKINFO_H_
+#define TESTLTSYPHONEGETCURRENTNWKINFO_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetCurrentNetworkInfo : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetCurrentNetworkInfo();
+	CTestLtsyPhoneGetCurrentNetworkInfo(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetCurrentNetworkInfo,   "TestLtsyPhoneGetCurrentNetworkInfo");
+#endif /*TESTLTSYPHONEGETCURRENTNWKINFO_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetdetectednetworks.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyGetDetectedNetworks.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetDetectedNetworks
+//
+#ifndef TESTLTSYPHONEGETDETTECTEDNWKS_H_
+#define TESTLTSYPHONEGETDETTECTEDNWKS_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetDetectedNetworks : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetDetectedNetworks();
+	CTestLtsyPhoneGetDetectedNetworks(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetDetectedNetworks,   "TestLtsyPhoneGetDetectedNetworks");
+#endif /*TESTLTSYPHONEGETDETTECTEDNWKS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetdetectednetworkscancel.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyGetDetectedNetworksCancel.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetDetectedNetworksCancel
+//
+#ifndef TESTLTSYPHONEGETDETTECTEDNWKSCANCEL_H_
+#define TESTLTSYPHONEGETDETTECTEDNWKSCANCEL_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetDetectedNetworksCancelCancel : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetDetectedNetworksCancelCancel();
+	CTestLtsyPhoneGetDetectedNetworksCancelCancel(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetDetectedNetworksCancelCancel,   "TestLtsyPhoneGetDetectedNetworksCancel");
+#endif /*TESTLTSYPHONEGETDETTECTEDNWKSCANCEL_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetfdnstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestTelephonyOpenPhone.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetFdnStatus
+//
+#ifndef TESTLTSYPHONEGETFDNSTATUS_H_
+#define TESTLTSYPHONEGETFDNSTATUS_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetFdnStatus : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetFdnStatus();
+	CTestLtsyPhoneGetFdnStatus(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetFdnStatus,   "TestLtsyPhoneGetFdnStatus");
+#endif /*TESTLTSYPHONEGETFDNSTATUS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegethomenetwork.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyGetHomeNetwork.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetHomeNetwork
+//
+#ifndef TESTLTSYPHONEGETHOMENWK_H_
+#define TESTLTSYPHONEGETHOMENWK_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetHomeNetwork : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetHomeNetwork();
+	CTestLtsyPhoneGetHomeNetwork(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetHomeNetwork,   "TestLtsyPhoneGetHomeNetwork");
+#endif /*TESTLTSYPHONEGETHOMENWK_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetnetworkregistrationstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyPhoneGetNetworkRegistrationStatus.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetNetworkRegistrationStatus
+//
+#ifndef TESTLTSYPHONEGETNWKREGISTSTATUS_H_
+#define TESTLTSYPHONEGETNWKREGISTSTATUS_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetNetworkRegistrationStatus : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetNetworkRegistrationStatus();
+	CTestLtsyPhoneGetNetworkRegistrationStatus(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetNetworkRegistrationStatus,   "TestLtsyPhoneGetNetworkRegistrationStatus");
+#endif /*TESTLTSYPHONEGETNWKREGISTSTATUS_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonegetphoneid.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyPhoneGetPhoneID.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetPhoneID
+//
+#ifndef TESTLTSYPHONEGETPHONEID_H_
+#define TESTLTSYPHONEGETPHONEID_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneGetPhoneID : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneGetPhoneID();
+	CTestLtsyPhoneGetPhoneID(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneGetPhoneID,   "TestLtsyPhoneGetPhoneID");
+#endif /*TESTLTSYPHONEGETPHONEID_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphoneregistercellinfochangenotification.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsyRegisterCellInfoChangeNotification.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneRegisterCellInfoChangeNotification
+//
+#ifndef TESTLTSYPHONEREGCELLINFOCHANGENOTIFICTION_H_
+#define TESTLTSYPHONEREGCELLINFOCHANGENOTIFICTION_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneRegisterCellInfoChangeNotification : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneRegisterCellInfoChangeNotification();
+	CTestLtsyPhoneRegisterCellInfoChangeNotification(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneRegisterCellInfoChangeNotification,   "TestLtsyPhoneRegisterCellInfoChangeNotification");
+#endif /*TESTLTSYPHONEREGCELLINFOCHANGENOTIFICTION_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphoneselectnetwork.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsySelectNetwork.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneSelectNetwork
+//
+#ifndef TESTLTSYPHONESELECTNETWORK_H_
+#define TESTLTSYPHONESELECTNETWORK_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneSelectNetwork : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneSelectNetwork();
+	CTestLtsyPhoneSelectNetwork(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneSelectNetwork,   "TestLtsyPhoneSelectNetwork");
+#endif /*TESTLTSYPHONESELECTNETWORK_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonesetnetworkselectionsetting.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,30 @@
+//  TestLtsySetNetworkSelectionSetting.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneSetNetworkSelectionSetting
+//
+#ifndef TESTLTSYPHONESETNWKSETTING_H_
+#define TESTLTSYPHONESETNWKSETTING_H_
+
+// user include
+#include "TestLtsyPhoneStepBase.h"
+
+/**
+ * This class provide the funcition to open a shared phone.
+ * 
+ */
+class CTestLtsyPhoneSetNetworkSelectionSetting : public CTestLtsyPhoneStepBase
+/**
+ * @internalAll
+ * @test
+ */
+{
+public:
+	virtual ~CTestLtsyPhoneSetNetworkSelectionSetting();
+	CTestLtsyPhoneSetNetworkSelectionSetting(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepL();
+};
+
+_LIT(KTestLtsyPhoneSetNetworkSelectionSetting,   "TestLtsyPhoneSetNetworkSelectionSetting");
+#endif /*TESTLTSYPHONESETNWKSETTING_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonestepbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,85 @@
+//  TestTelephonyPktTestStepBase.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyPktTestStepBase
+
+#ifndef TESTLTSYPHONESTEPBASE_H_
+#define TESTLTSYPHONESTEPBASE_H_
+
+
+#include <e32base.h>
+#include <es_sock.h>
+#include <es_enum.h>
+
+// user include
+#include "te_integration_stltsysuitestepbase.h"
+#include "TestLtsyModel.h"
+
+const TInt	KOneSecond = 1000000;
+
+/**
+ * This is the test step base class of phone test 
+ * category which provides methods
+ */
+class CTestLtsyPhoneStepBase : public CTe_integration_stltsySuiteStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+	
+protected:
+	CTestLtsyPhoneStepBase(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPhoneStepBase();
+	
+	RMobilePhone& SharedPhone();
+	
+	void TestOpenPhoneL();
+	void TestClosePhone();
+	void GetFdnStatus();
+	void GetNetworkRegistrationStatus();
+	void GetPhoneId();
+	void GetDetectedNetworksL();
+	void GetDetectedNetworksCancelL(); //NO
+	void SetNetworkSelectionSetting();
+	void SelectNetwork();
+	void SetAndSelectNetwork(); //NO
+	
+	void GetBatteryInfo();
+	void GetBatteryCaps();
+	void NotifyBatteryInfoChange();
+	void GetBatteryStrengthCancel();
+	
+	void GetSignalStrength();
+	void GetSignalCaps();
+	void NotifySignalStrengthChange();
+	void GetSignalStrengthCancel();
+	
+	void GetHomeNetwork();
+	void GetServiceProviderName();//NO
+
+	
+	void GetCurrentNetworkInfo();
+//	void GetNetworkMode();
+	void GetNitzInfo();//no
+	
+//	void GetCurrentSystemNetworkModes();  //RMmCustomAPI
+//	void GetNetworkProviderName(); //RMmCustomAPI
+//	void GetOperatorName();  //RMmCustomAPI
+	void RegisterCellInfoChangeNotification();
+	void GetCellInfo();
+//	void GetPhoneCellInfo(); //RMmCustomAPI
+	
+	
+protected:
+	CTestLtsyModel& iModel;
+	RMobilePhone& iSharedPhone;
+	
+private:
+
+	};
+
+#endif // TESTLTSYPHONESTEPBASE_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonestorebase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsyphonestorebase.h
+// 
+
+#ifndef TESTLTSYPHONESTOREBASE_H_
+#define TESTLTSYPHONESTOREBASE_H_
+
+class CTestLtsyModel;
+// user include
+#include "te_integration_stltsysuitestepbase.h"
+#include "testltsymodel.h"
+
+
+// class declaration
+/**
+ * This class provide the common functionalities related to the PhoneStore
+ * 
+ */
+class CTestLtsyPhoneStoreBase : public CTe_integration_stltsySuiteStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	virtual ~CTestLtsyPhoneStoreBase();
+	         CTestLtsyPhoneStoreBase(CTestLtsyModel& aTestModel);
+protected:
+	TVerdict doTestStepPreambleL();
+	TVerdict doTestStepPostambleL();
+	RMobileONStore& PhoneONStore();
+	RMobileENStore& PhoneENStore();	
+	RMobilePhoneBookStore& PhoneBookStore();
+	void OpenPhoneL();
+
+protected:
+	CTestLtsyModel& iModel;
+	};
+
+#endif /*TESTLTSYPHONESTOREBASE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyphonestoreshareddata.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,38 @@
+// TestTelephonyPhoneStoreSharedData.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyPhoneStoreSharedData
+
+#ifndef TESTTELEPHONYPHONESTORESHAREDDATA_H_
+#define TESTTELEPHONYPHONESTORESHAREDDATA_H_
+// system include
+#include <e32cmn.h>
+#include <e32base.h>
+#include <etelmm.h>
+
+/**
+ * This class defines the shared data of phone store test category between 
+ * different test steps.
+ */
+class CTestLtsyPhoneStoreSharedData : public CBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPhoneStoreSharedData();
+	virtual ~CTestLtsyPhoneStoreSharedData();
+	static CTestLtsyPhoneStoreSharedData* NewL();	
+	RMobileENStore& PhoneENStore();	
+	RMobileONStore& PhoneONStore();	
+	RMobilePhoneBookStore& PhoneBookStore();
+	void   Reset();	
+private:
+	void ConstructL();
+private:
+	RMobileONStore iONStore;
+	RMobileENStore iENStore;
+	RMobilePhoneBookStore iPhBkStore;
+	};
+#endif /*TESTTELEPHONYPHONESTORESHAREDDATA_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktactivatecontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktActivateContext.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktActivateContext
+
+
+#ifndef TESTLTSYPKTACTIVATECONTEXT_H_
+#define TESTLTSYPKTACTIVATECONTEXT_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktActivateContext : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktActivateContext(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktActivateContext();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktActivateContext, "TestLtsyPktActivateContext");
+
+#endif // TESTLTSYPKTACTIVATECONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktattachnetwork.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,35 @@
+//  TestLtsyPktAttachNetwork.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktAttachNetwork
+
+#ifndef TESTLTSYPKTATTACHNETWORK_H_
+#define TESTLTSYPKTATTACHNETWORK_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+// const define
+const TInt KMaxAllowedContextNum = 11;
+
+/**
+ * This is the test step class which calls methods of base class
+ * to attach packet service to network
+ */
+class CTestLtsyPktAttachNetwork : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktAttachNetwork(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktAttachNetwork();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktAttachNetwork, "TestLtsyPktAttachNetwork");
+
+#endif // TESTLTSYPKTATTACHNETWORK_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktclosecontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktCloseContext.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktCloseContext
+
+
+#ifndef TESTLTSYPKTCLOSECONTEXT_H_
+#define TESTLTSYPKTCLOSECONTEXT_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to close packet context
+ */
+class CTestLtsyPktCloseContext : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktCloseContext(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktCloseContext();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktCloseContext, "TestLtsyPktCloseContext");
+
+#endif // TESTLTSYPKTCLOSECONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktclosecontextqos.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktCloseContextQos.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktCloseContextQos
+
+
+#ifndef TESTLTSYPKTCLOSECONTEXTQOS_H_
+#define TESTLTSYPKTCLOSECONTEXTQOS_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet context
+ */
+class CTestLtsyPktCloseContextQos : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktCloseContextQos(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktCloseContextQos();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktCloseContextQos, "TestLtsyPktCloseContextQos");
+
+#endif // TESTLTSYPKTCLOSECONTEXTQOS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktclosepacket.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktClosePacket.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktClosePacket
+
+
+#ifndef TESTLTSYPKTCLOSEPACKET_H_
+#define TESTLTSYPKTCLOSEPACKET_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet service
+ */
+class CTestLtsyPktClosePacket : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktClosePacket(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktClosePacket();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktClosePacket, "TestLtsyPktClosePacket");
+
+#endif // TESTLTSYPKTCLOSEPACKET_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktdeactivatecontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktDeactivateContext.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktDeactivateContext
+
+
+#ifndef TESTLTSYPKTDEACTIVATECONTEXT_H_
+#define TESTLTSYPKTDEACTIVATECONTEXT_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to deactivate a packet context
+ */
+class CTestLtsyPktDeactivateContext : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktDeactivateContext(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktDeactivateContext();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktDeactivateContext, "TestLtsyPktDeactivateContext");
+
+#endif // TESTLTSYPKTDEACTIVATECONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktdeletecontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktDeleteContext.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktDeleteContext
+
+
+#ifndef TESTLTSYPKTDELETECONTEXT_H_
+#define TESTLTSYPKTDELETECONTEXT_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktDeleteContext : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktDeleteContext(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktDeleteContext();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktDeleteContext, "TestLtsyPktDeleteContext");
+
+#endif // TESTLTSYPKTDELETECONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktdetachnetwork.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktDetachNetwork.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktDetachNetwork
+
+
+#ifndef TESTLTSYPKTDETACHNETWORK_H_
+#define TESTLTSYPKTDETACHNETWORK_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to detach packet service from network
+ */
+class CTestLtsyPktDetachNetwork : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktDetachNetwork(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktDetachNetwork();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktDetachNetwork, "TestLtsyPktDetachNetwork");
+
+#endif // TESTLTSYPKTDETACHNETWORK_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetcontextconfig.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetContextConfig.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetContextConfig
+
+
+#ifndef TESTLTSYPKTGETCONTEXTCONFIG_H_
+#define TESTLTSYPKTGETCONTEXTCONFIG_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktGetContextConfig : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetContextConfig(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetContextConfig();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetContextConfig, "TestLtsyPktGetContextConfig");
+
+#endif // TESTLTSYPKTGETCONTEXTCONFIG_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetcontextinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetContextInfo.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetContextInfo
+
+
+#ifndef TESTLTSYPKTGETCONTEXTINFO_H_
+#define TESTLTSYPKTGETCONTEXTINFO_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktGetContextInfo : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetContextInfo(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetContextInfo();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetContextInfo, "TestLtsyPktGetContextInfo");
+
+#endif // TESTLTSYPKTGETCONTEXTINFO_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetcontextqosprofile.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetContextQoSProfile.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetContextQoSProfile
+
+
+#ifndef TESTLTSYPKTGETCONTEXTQOSPROFILE_H_
+#define TESTLTSYPKTGETCONTEXTQOSPROFILE_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktGetContextQoSProfile : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetContextQoSProfile(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetContextQoSProfile();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetContextQoSProfile, "TestLtsyPktGetContextQoSProfile");
+
+#endif // TESTLTSYPKTGETCONTEXTQOSPROFILE_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetdefaultparams.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetDefaultParams.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetDefaultParams
+
+
+#ifndef TESTLTSYPKTGETDEFAULTPARAMS_H_
+#define TESTLTSYPKTGETDEFAULTPARAMS_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktGetDefaultParams : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetDefaultParams(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetDefaultParams();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetDefaultParams, "TestLtsyPktGetDefaultParams");
+
+#endif // TESTLTSYPKTGETDEFAULTPARAMS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetdynamiccapabilities.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetDynamicCapabilities.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetDynamicCapabilities
+
+
+#ifndef TESTLTSYPKTGETDYNAICCAP_H_
+#define TESTLTSYPKTGETDYNAICCAP_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet context
+ */
+class CTestLtsyPktGetDynamicCapabilities : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetDynamicCapabilities(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetDynamicCapabilities();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetDynamicCapabilities, "TestLtsyPktGetDynamicCapabilities");
+
+#endif // TESTLTSYPKTGETDYNAICCAP_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetnwkregistrationstatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktNetworkRegistrationStatus.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktNetworkRegistrationStatus
+
+
+#ifndef TESTLTSYPKTNWKREGSTATUS_H_
+#define TESTLTSYPKTNWKREGSTATUS_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktNetworkRegistrationStatus : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktNetworkRegistrationStatus(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktNetworkRegistrationStatus();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktNetworkRegistrationStatus, "TestLtsyPktNetworkRegistrationStatus");
+
+#endif // TESTLTSYPKTNWKREGSTATUS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetservicestatus.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetServiceStatus.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetServiceStatus
+
+
+#ifndef TESTLTSYPKTGETSERVICESTATUS_H_
+#define TESTLTSYPKTGETSERVICESTATUS_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktGetServiceStatus : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetServiceStatus(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetServiceStatus();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetServiceStatust, "TestLtsyPktGetServiceStatust");
+
+#endif // TESTLTSYPKTGETSERVICESTATUS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktgetstaticcapabilities.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktGetStaticCapabilities.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktGetStaticCapabilities
+
+
+#ifndef TESTLTSYPKTGETSTATICCAP_H_
+#define TESTLTSYPKTGETSTATICCAP_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet context
+ */
+class CTestLtsyPktGetStaticCapabilities : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktGetStaticCapabilities(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktGetStaticCapabilities();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktGetStaticCapabilities, "TestLtsyPktGetStaticCapabilities");
+
+#endif // TESTLTSYPKTGETSTATICCAP_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktinitialisecontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktInitialiseContext.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktInitialiseContext
+
+
+#ifndef TESTLTSYPKTINITIALISECONTEXT_H_
+#define TESTLTSYPKTINITIALISECONTEXT_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet context
+ */
+class CTestLtsyPktInitialiseContext : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktInitialiseContext(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktInitialiseContext();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktInitialiseContext, "TestLtsyPktInitialiseContext");
+
+#endif // TESTLTSYPKTINITIALISECONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktopencontext.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktOpenContext.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktOpenContext
+
+
+#ifndef TESTLTSYPKTOPENCONTEXT_H_
+#define TESTLTSYPKTOPENCONTEXT_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet context
+ */
+class CTestLtsyPktOpenContext : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktOpenContext(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktOpenContext();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktOpenContext, "TestLtsyPktOpenContext");
+
+#endif // TESTLTSYPKTOPENCONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktopencontextqos.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktOpenContextQos.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktOpenContextQos
+
+
+#ifndef TESTLTSYPKTOPENCONTEXTQOS_H_
+#define TESTLTSYPKTOPENCONTEXTQOS_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet context
+ */
+class CTestLtsyPktOpenContextQos : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktOpenContextQos(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktOpenContextQos();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktOpenContextQos, "TestLtsyPktOpenContextQos");
+
+#endif // TESTLTSYPKTOPENCONTEXTQOS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktopenpacket.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktOpenPacket.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktOpenPacket
+
+
+#ifndef TESTLTSYPKTOPENPACKET_H_
+#define TESTLTSYPKTOPENPACKET_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to open packet service
+ */
+class CTestLtsyPktOpenPacket : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktOpenPacket(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktOpenPacket();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktOpenPacket, "TestLtsyPktOpenPacket");
+
+#endif // TESTTELEPHONYPKTACTIVATECONTEXT_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktsetcontextconfig.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktSetContextConfig.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktSetContextConfig
+
+
+#ifndef TESTLTSYPKTSETCONTEXTCONFIG_H_
+#define TESTLTSYPKTSETCONTEXTCONFIG_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktSetContextConfig : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktSetContextConfig(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktSetContextConfig();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktSetContextConfig, "TestLtsyPktSetContextConfig");
+
+#endif // TESTLTSYPKTSETCONTEXTCONFIG_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktsetcontextqosprofile.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktSetContextQoSProfile.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktSetContextQoSProfile
+
+
+#ifndef TESTLTSYPKTSETCONTEXTQOSPROFILE_H_
+#define TESTLTSYPKTSETCONTEXTQOSPROFILE_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktSetContextQoSProfile : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktSetContextQoSProfile(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktSetContextQoSProfile();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktSetContextQoSProfile, "TestLtsyPktSetContextQoSProfile");
+
+#endif // TESTLTSYPKTSETCONTEXTQOSPROFILE_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktsetdefaultparams.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//  TestLtsyPktSetDefaultParams.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktSetDefaultParams
+
+
+#ifndef TESTLTSYPKTSETDEFAULTPARAMS_H_
+#define TESTLTSYPKTSETDEFAULTPARAMS_H_
+
+// user include
+#include "TestLtsyPktTestStepBase.h"
+
+/**
+ * This is the test step class which calls methods of base class
+ * to activate a primary packet context
+ */
+class CTestLtsyPktSetDefaultParams : public CTestLtsyPktTestStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsyPktSetDefaultParams(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktSetDefaultParams();
+	
+protected:
+	TVerdict doTestStepL();
+	};
+
+_LIT(KTestLtsyPktSetDefaultParams, "TestLtsyPktSetDefaultParams");
+
+#endif // TESTLTSYPKTSETDEFAULTPARAMS_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktshareddata.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,61 @@
+// CTestTelephonyPktSharedData.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyPktSharedData
+
+#ifndef TESTTELEPHONYPKTSHAREDDATA_H_
+#define TESTTELEPHONYPKTSHAREDDATA_H_
+
+// system include
+#include <etelqos.h>
+#include <pcktcs.h>
+
+// const define
+const TInt KTFTFiltersGranularity 	= 1;
+const TInt KMaxServiceNum 			= 1;
+const TInt KMaxContextNum 			= 11;
+
+/**
+ * This class defines the shared data of PACKET test category between 
+ * different test steps.
+ */
+class CTestLtsyPktSharedData : public CBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public: 
+	virtual ~CTestLtsyPktSharedData();
+	static CTestLtsyPktSharedData* NewL();	
+private:
+	CTestLtsyPktSharedData();
+	void ConstructL();
+
+public:
+	RPacketService                      iPacket;
+	RPacketService::TStatus             iPacketStatus;
+	RPacketService::TRegistrationStatus iRegistrationStatus;
+	RPacketService::TMSClass            iCurrentMobileStationClass;
+	RPacketService::TMSClass            iMaxMobileStationClass;
+	TUint                               iStaticCaps;
+	RPacketService::TDynamicCapsFlags   iDynamicCaps;
+	RPacketService::TAttachMode         iCurrentAttachMode;
+	TInt                                iNumContexts;
+	TInt                                iMaxContextsAllowed;
+	RPacketContext                      iContext1;
+	RPacketContext                      iContext2;
+	RPacketContext                      iContext3;
+	RPacketService::TContextInfo        iContextInfo;
+	RPacketService::TContextInfo        iContextInfo2;
+	TName                               iContextName;
+	TName                               iContextName1;
+	RPacketContext::TContextStatus      iContextStatus;
+	RPacketQoS                          iQoS;
+	TName                               iQoSName;
+	RPacketQoS::TQoSCapsGPRS        iQoSCapabilities;
+	RPacketQoS::TQoSGPRSRequested   iQoSRequested;
+	RPacketQoS::TQoSGPRSNegotiated  iQoSNegotiated;
+	};
+
+#endif // TESTTELEPHONYPKTSHAREDDATA_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktshareddata.inl	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,57 @@
+//  TestTelephonyPktSharedData.inl
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  The inline function implementation of CTestTelephonyPktSharedData
+
+#ifndef TESTTELEPHONYPKTSHAREDDATA_INL_
+#define TESTTELEPHONYPKTSHAREDDATA_INL_
+
+// user include
+#include "TestLtsyPktSharedData.h"
+
+/**
+ * Get the reference of specified packet context
+ * aServiceIndex - the index in the packet service array
+ * aContextIndex - the index in the packet context array
+ * @return - the reference of the RPacketContext object
+ */
+RPacketContext& CTestLtsyPktSharedData::PacketContext(TInt aServiceIndex, TInt aContextIndex)
+	{
+	return iServices[aServiceIndex].iContexts[aContextIndex].iPktContext;
+	}
+
+/**
+ * Get the reference of specified packet QoS profile
+ * aServiceIndex - the index in the packet service array
+ * aContextIndex - the index in the packet context array
+ * @return - the reference of the QoS profile object
+ */
+RPacketQoS& CTestLtsyPktSharedData::PacketQos(TInt aServiceIndex, TInt aContextIndex)
+	{
+	return iServices[aServiceIndex].iContexts[aContextIndex].iPktQos;
+	}
+
+/**
+ * Get the reference of specified packet service
+ * aServiceIndex - the index in the packet service array
+ * @return - the reference of the RPacketService object
+ */
+RPacketService& CTestLtsyPktSharedData::PacketService(TInt aServiceIndex)
+	{
+	return iServices[aServiceIndex].iPktService;
+	}
+
+/**
+ * Get the reference of specified context data
+ * aServiceIndex - the index in the packet service array
+ * aContextIndex - the index in the packet context array
+ * @return - the reference of the TContextData object
+ */
+CTestLtsyPktSharedData::TContextData& CTestLtsyPktSharedData::ContextData(TInt aServiceIndex, TInt aContextIndex)
+	{
+	return iServices[aServiceIndex].iContexts[aContextIndex];
+	}
+
+#endif /*TESTTELEPHONYPKTSHAREDDATA_INL_*/
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsypktteststepbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,116 @@
+//  TestTelephonyPktTestStepBase.h
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyPktTestStepBase
+
+#ifndef TESTTELEPHONYPKTTESTSTEPBASE_H_
+#define TESTTELEPHONYPKTTESTSTEPBASE_H_
+
+// user include
+#include "te_integration_stltsysuitestepbase.h"
+#include "TestLtsyPktSharedData.h"
+#include "TestLtsyModel.h"
+
+/**
+ * This is the test step base class of PACKET test 
+ * category which provides methods
+ */
+class CTestLtsyPktTestStepBase : public CTe_integration_stltsySuiteStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+protected:
+
+	CTestLtsyPktTestStepBase(CTestLtsyModel& aModel);
+	virtual ~CTestLtsyPktTestStepBase();
+	
+	RMobilePhone& SharedPhone();
+	TBool IsOpenedPktService();
+	
+	void OpenPacketobject();
+	void ClosePacketobject();
+	
+	
+	void DisplayPacketServiceStatus();
+	void DisplayNetworkRegistrationStatus();
+	void DisplayContextInfo();
+	void DisplayContextStatus(RPacketContext::TContextStatus aContextStatus);
+	void DisplayContextStatus(RPacketContext& aContext, RPacketContext::TContextStatus& aContextStatus);
+	
+	void GprsContextAttachTest();
+	void GprsContextDetachTest();
+	
+	void GprsNetWorkTest();
+	
+	void GprsContextSetConfigTest();
+	void GprsContextGetConfigTest();
+	
+	void GprsGetDefaultContextParamsTest();
+	void GprsSetDefaultContextParamsTest();
+	
+	void DisplayStaticCapabilities();
+	void DisplayDynamicCapabilities();
+	
+	void GprsContextActivateTest();
+	void GprsContextDeactivateTest();
+	
+	void GprsSetQoSProfileTest();
+	void GprsGetQoSProfileTest();
+	
+	void NotificationContextAdded();
+	void NotificationContextAddedCancel();
+	
+	void OpenNewContext();
+	void CloseExistContext();
+	
+	void OpenExistingContext();
+	void OpenContextUsingUnknownName();
+	
+	void GprsContextDeleteTest();
+	
+	void GprsInitialiseContext();
+	
+	void NotificationContextStatusChange();
+	void NotificationContextStatusChangeCancel();
+	
+	void OpenNewContextQos();
+	void CloseExistContextQos();
+	
+
+	void GprsContextSetConfigTest1();
+	void GprsContextSetConfigTest2();
+	void GprsContextSetConfigTest3();
+	void GprsContextSetConfigTest4();
+
+	void GprsSetQoSProfileTest1();
+	void GprsSetQoSProfileTest2();
+	void GprsSetQoSProfileTest3();
+	void GprsSetQoSProfileTest4();
+	void GprsSetQoSProfileTest5();
+	void GprsSetQoSProfileTest6();
+	void GprsSetQoSProfileTest7();
+	void GprsSetQoSProfileTest8();
+	void GprsSetQoSProfileTest9();
+	void GprsSetQoSProfileTest10();
+	void GprsSetQoSProfileTest11();
+	void GprsSetQoSProfileTest12();
+	void GprsSetQoSProfileTest13();
+	void GprsSetQoSProfileTest14();
+	void GprsSetQoSProfileTest15();
+	void GprsSetQoSProfileTest16();
+	void GprsSetQoSProfileTest17();
+	void GprsSetQoSProfileTest18();
+	void GprsSetQoSProfileTest19();
+	void GprsSetQoSProfileTest20();
+
+protected:
+	CTestLtsyModel& iModel;
+	RMobilePhone& iSharedPhone;
+	};
+
+#endif // TESTTELEPHONYPKTTESTSTEPBASE_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsyshareddata.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,79 @@
+// TestTelephonySharedData.h
+//
+// Copyright (c) 2003-2008 Symbian Software Ltd.  All rights reserved.
+//
+// This contains TestTelephonySharedData
+#if (!defined __TEST_TELEPHONY_SHARED_DATA_H__)
+#define __TEST_TELEPHONY_SHARED_DATA_H__
+
+// CDMA specific Conditional compilation
+//#include "../../group/configuration.cfg"
+
+// EPOC include
+#include <etelmm.h>
+#include <etel.h>
+#if (defined CDMA_API_ENABLED)
+#include <etelcdma.h>
+#endif
+#include <testexecutestepbase.h>
+
+#include "TestLtsyAsyncOperation.h"
+
+class CTestLtsySharedData : public CBase
+/**
+@internalAll
+@test
+@class CTestLtsySharedData
+
+For creating the shared data object and to access the object across
+the test steps.. 
+*/
+	{
+public:
+	static CTestLtsySharedData*	NewL();
+
+	~CTestLtsySharedData();
+	TInt		OpenPhone(const TName& aTsyName, CTestStep& aTestStep);
+	void		ClosePhone();
+	TInt		ReopenPhone();
+	TBool		PhoneOpened() const { return iPhoneOpened; }
+	CTelephony&	Telephony() const { return *iTelephony; }
+
+protected:
+	CTestLtsySharedData();
+	virtual void	ConstructL();
+
+public:
+	/** Holding Calld Id of line1 */
+	CTelephony::TCallId			iCallId;
+	/** Holding Calld Id of line2 */
+	CTelephony::TCallId			iCallId1;
+	/** Pointer to the RMobileCall object */
+	RMobileCall					iMobileCall;
+	/** Pointer to the RMobileLine object */
+	RMobileLine					iMobileLine;
+	/** Holds the TST name to be loaded */
+	TName						iTSYName;
+	/** For RTelServer connection */
+	TBool						iTelServerConnected;
+	/** For Phone module loading */
+	TBool						iPhoneModuleLoaded;
+	/** For RMobilePhone connection */
+	TBool						iPhoneOpened;
+	/** For RMobilePhone initialization */
+	TBool						iPhoneInitialised;
+	/** For RMobileLine connection */
+	TBool						iLineOpened;
+	/** For RMobileCall connection */
+	TBool						iCallOpened;
+	/** Holds RTelServer */
+	RTelServer					iServer;
+	RMobilePhone				iMobilePhone;
+private:
+	/** Pointer shared CTelephony object */
+	CTelephony*					iTelephony;
+	/** Holds pointer to the ActiveScheduler */
+	CActiveScheduler*			iActiveScheduler;
+};
+
+#endif //__TEST_TELEPHONY_SHARED_DATA_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsack.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsatutil.h
+// 
+
+#ifndef TESTLTSYSMSACK_H
+#define TESTLTSYSMSACK_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsAck
+ *
+ */
+class CTestLtsySmsAck : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsAck();
+	static CTestLtsySmsAck* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsAck* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsAck(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void AckSmsStoredL();
+private:
+
+	}; // class CTestLtsySmsAck
+_LIT(KCTestLtsySmsAck,"CTestLtsySmsAck");
+
+#endif // TESTLTSYSMSACK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsatutil.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,104 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsatutil.h
+// This contains SmsAtUtil which is util for Sms At command
+// 
+
+#ifndef TESTLTSYSMSATUTIL_H
+#define TESTLTSYSMSATUTIL_H
+// system include
+#include <e32std.h>
+#include <e32base.h>
+#include <etelmm.h>
+
+
+/**
+*  SmsAtUtil
+* 
+*/
+class SmsAtUtil : public CBase
+	{
+public:
+	
+	 /**
+	 * Converts aAscii ASCII chars to Semi Octets in aData.
+	 * One ASCII char (8bits in aAscii) is translated to one Semi-Octet (4bits in aData).
+	 * 
+	 * @param aAscii input ascii string
+	 * @param aData  output binary data 
+	 * @return Standard KErr... values 
+	 */	
+	static TInt ConvertAsciiToBinary(const TDesC8& aAscii,TDes8& aData);
+	
+	
+	 /**
+	 * Appends the binary data (aData) onto the end of an ASCII string (aAscii) in ASCII format.
+	 * 
+	 * @param aAscii  an ascii string 
+	 * @param aData   a  binary string 
+	 */
+	static void AppendDataToAscii(TDes8& aAscii,const TDesC8& aData);
+	
+	 /**
+	 * Reads an address from the front of the ASCII string (aAscii) and fills up Address structure (aAddress).
+	 * The address read from the ASCII string is removed from the ASCII string.
+	 * 
+	 * @param aAscii an ascii string 
+	 * @param aAddress  a SCA address
+	 * @return Standard KErr... values
+	 */
+	static TBool IsAddressChar(TChar aChar);
+
+private:
+	
+	 /**
+	 * @param aValue should be an ETSI Numbering-Plan-Identification field
+	 * @return The equivalent RMobilePhone::TMobileNPI value for aValue
+	 */
+	static RMobilePhone::TMobileNPI ConvertNumberingPlan(TInt aValue);
+	
+	 /**
+	 * @param aValue should be an ETSI Type-Of-Number field
+	 * @return The equivalent RMobilePhone::TMobileTON value for aValue
+	 */
+	static RMobilePhone::TMobileTON ConvertTypeOfNumber(TInt aValue); 
+	
+	 /**
+	 * Converts a TInt octet value into ASCII representation and then appends that
+	 * ASCII representation to the end of the given ASCII string.
+	 *
+	 * @param aOctet the octet value to append
+	 * @param aAscii the ASCII string to which aOctet value should be appended
+	 */	
+	static void AppendOctet(TInt aOctet,TDes8& aAscii);
+	
+	 /**
+	 * Returns the equivalent numeric value for a given ASCII address character.
+	 *
+	 * @param aChar the address character to be converted
+	 * @return The numeric value equivalent of the given address character.
+	 */
+	static TInt ConvertAddressChar(TChar aChar);
+	
+	 /**
+	 * Returns the equivalent ASCII address character for a given address value.
+	 *
+	 * @param aBinary the numerix value of the address character to be returned
+	 * @return The ASCII charcater which represents the given address numeric value.
+	 */
+	static TChar ConvertAddressChar(TInt aBinary);
+	
+	};
+
+#endif // TESTLTSYSMSATUTIL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsbase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,60 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the Class CTestLtsySmsBase
+// 
+//
+
+#ifndef TESTLTSYSMSBASE_H_
+#define TESTLTSYSMSBASE_H_
+
+// user include
+class CTestLtsyModel;
+#include "te_integration_stltsysuitestepbase.h"
+#include "testltsymodel.h"
+
+//constant defination
+const TInt16 KMessageLen(165);
+
+// class declaration
+/**
+ * This class provide the common functionalities related to the sms.
+ * 
+ */
+class CTestLtsySmsBase : public CTe_integration_stltsySuiteStepBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	virtual ~CTestLtsySmsBase();
+	CTestLtsySmsBase(CTestLtsyModel& aTestModel);
+protected:
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+	RMobileSmsMessaging& Sms();
+	RMobileSmsStore& SmsStore();
+	void OpenPhoneL();
+	void OpenSmsL();
+	void OpenSmsStoreL();
+	void CloseSmsL();
+	void CloseSmsStoreL();
+	void GetIndex();
+protected:
+	CTestLtsyModel& iModel;
+	TInt iIndexNum;
+	TInt iStoreIndex;
+	};
+
+#endif /*TESTLTSYSMSBASE_H_*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmscontrolreceivesmscase1step.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file CTestLtsySmsControlReceiveSmsCase1Step.h
+ @internalTechnology
+*/
+#if (!defined __CTESTLTSYSMSCONTROLRECEIVESMSCASE1_STEP_H__)
+#define __CTESTLTSYSMSCONTROLRECEIVESMSCASE1_STEP_H__
+#include <TestExecuteStepBase.h>
+#include "te_integration_stltsysuitestepbase.h"
+
+class CCTestLtsySmsControlReceiveSmsCase1Step : public CTe_integration_stltsySuiteStepBase
+	{
+public:
+	CCTestLtsySmsControlReceiveSmsCase1Step();
+	~CCTestLtsySmsControlReceiveSmsCase1Step();
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+
+// Please add/modify your class members here:
+private:
+	};
+
+_LIT(KCTestLtsySmsControlReceiveSmsCase1Step,"CTestLtsySmsControlReceiveSmsCase1Step");
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmscontrolsendsmscase1step.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file CTestLtsySmsControlSendSmsCase1Step.h
+ @internalTechnology
+*/
+#if (!defined __CTESTLTSYSMSCONTROLSENDSMSCASE1_STEP_H__)
+#define __CTESTLTSYSMSCONTROLSENDSMSCASE1_STEP_H__
+#include <TestExecuteStepBase.h>
+#include "te_integration_stltsysuitestepbase.h"
+
+class CCTestLtsySmsControlSendSmsCase1Step : public CTe_integration_stltsySuiteStepBase
+	{
+public:
+	CCTestLtsySmsControlSendSmsCase1Step();
+	~CCTestLtsySmsControlSendSmsCase1Step();
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+
+// Please add/modify your class members here:
+private:
+	};
+
+_LIT(KCTestLtsySmsControlSendSmsCase1Step,"CTestLtsySmsControlSendSmsCase1Step");
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsdelete.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsdeleteall.h
+// 
+
+#ifndef TESTLTSYSMSDELETE_H
+#define TESTLTSYSMSDELETE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsDelete
+ *
+ */
+class CTestLtsySmsDelete : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsDelete();
+	static CTestLtsySmsDelete* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsDelete* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsDelete(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void DeleteSmsL(TInt aIndex);
+private:
+
+	}; // class CTestLtsySmsDelete
+_LIT(KCTestLtsySmsDelete,"CTestLtsySmsDelete");
+
+#endif // TESTLTSYSMSDELETE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsdeleteall.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsdeleteall.h
+// 
+
+#ifndef TESTLTSYSMSDELETEALL_H
+#define TESTLTSYSMSDELETEALL_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsDeleteAll
+ *
+ */
+class CTestLtsySmsDeleteAll : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsDeleteAll();
+	static CTestLtsySmsDeleteAll* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsDeleteAll* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsDeleteAll(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void DeleteAllSmsL();
+private:
+
+	}; // class CTestLtsySmsDeleteAll
+_LIT(KCTestLtsySmsDeleteAll,"CTestLtsySmsDeleteAll");
+
+#endif // TESTLTSYSMSDELETEALL_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsdeleteinvalidindex.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsdeleteinvalidindex.h
+// 
+
+#ifndef TESTLTSYSMSDELETEINVALIDINDEX_H
+#define TESTLTSYSMSDELETEINVALIDINDEX_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsDeleteInvalidIndex
+ *
+ */
+class CTestLtsySmsDeleteInvalidIndex : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsDeleteInvalidIndex();
+	static CTestLtsySmsDeleteInvalidIndex* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsDeleteInvalidIndex* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsDeleteInvalidIndex(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void DeleteSmsL(TInt aIndex);
+private:
+
+	}; // class CTestLtsySmsDeleteInvalidIndex
+_LIT(KCTestLtsySmsDeleteInvalidIndex,"CTestLtsySmsDeleteInvalidIndex");
+
+#endif // TESTLTSYSMSDELETEINVALIDINDEX_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsnack.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsnack.h
+// 
+
+#ifndef TESTLTSYSMSNACK_H
+#define TESTLTSYSMSNACK_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsNack
+ *
+ */
+class CTestLtsySmsNack : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsNack();
+	static CTestLtsySmsNack* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsNack* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsNack(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void NackSmsStoredL();
+private:
+
+	}; // class CTestLtsySmsNack
+_LIT(KCTestLtsySmsNack,"CTestLtsySmsNack");
+
+#endif // TESTLTSYSMSNACK_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsread.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsread.h
+// 
+
+#ifndef TESTLTSYSMSREAD_H
+#define TESTLTSYSMSREAD_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsRead
+ *
+ */
+class CTestLtsySmsRead : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsRead();
+	static CTestLtsySmsRead* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsRead* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsRead(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void ReadSmsL(TInt aIndex);
+private:
+
+	RMobileSmsStore::TMobileGsmSmsEntryV1 iEntryV1;
+	}; // class CTestLtsySmsRead
+_LIT(KCTestLtsySmsRead,"CTestLtsySmsRead");
+
+#endif // TESTLTSYSMSREAD_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsreadinvalidindex.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,53 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsreadinvalidindex.h
+// 
+
+#ifndef TESTLTSYSMSREADINVALIDINDEX_H
+#define TESTLTSYSMSREADINVALIDINDEX_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsReadInvalidIndex
+ *
+ */
+class CTestLtsySmsReadInvalidIndex : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsReadInvalidIndex();
+	static CTestLtsySmsReadInvalidIndex* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsReadInvalidIndex* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsReadInvalidIndex(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void ReadSmsL(TInt aIndex);
+private:
+
+	RMobileSmsStore::TMobileGsmSmsEntryV1 iEntryV1;
+	}; // class CTestLtsySmsReadInvalidIndex
+_LIT(KCTestLtsySmsReadInvalidIndex,"CTestLtsySmsReadInvalidIndex");
+
+#endif // TESTLTSYSMSREADINVALIDINDEX_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsreceive.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,47 @@
+//
+// testltsysmsreceive.h
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#ifndef TESTLTSYSMSRECEIVE_H
+#define TESTLTSYSMSRECEIVE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+
+/**
+ * CTestLtsySmsReceive
+ *
+ */
+class CTestLtsySmsReceive : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsReceive();
+	static CTestLtsySmsReceive* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsReceive* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsReceive(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void ReceiveSmsL();
+private:
+
+	/**
+	*  Receiving message's TPDU
+	*/
+	TBuf8<KMessageLen> iRecvMsg;
+	}; // class CTestLtsySmsReceive
+_LIT(KCTestLtsySmsReceive,"CTestLtsySmsReceive");
+
+#endif // TESTLTSYSMSRECEIVE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmssend.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+//
+// testltsysmssend.h
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#ifndef TESTLTSYSMSSEND_H
+#define TESTLTSYSMSSEND_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsSend
+ *
+ */
+class CTestLtsySmsSend : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsSend();
+	static CTestLtsySmsSend* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsSend* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsSend(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void SendSmsL();
+	void FillSmsAttibutes(const TDesC& aTelNumber);
+private:
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1 iSmsAttr;
+
+	}; // class CTestLtsySmsSend
+_LIT(KCTestLtsySmsSend,"CTestLtsySmsSend");
+
+#endif // TESTLTSYSMSSEND_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmssendinvalidparam.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,47 @@
+//
+// testltsysmssendinvalidparam.h
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#ifndef TESTLTSYSMSSENDINVALIDPARAM_H
+#define TESTLTSYSMSSENDINVALIDPARAM_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsSendInvalidParam
+ *
+ */
+class CTestLtsySmsSendInvalidParam : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsSendInvalidParam();
+	static CTestLtsySmsSendInvalidParam* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsSendInvalidParam* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsSendInvalidParam(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void SendSmsL();
+	void FillSmsAttibutes(const TDesC& aTelNumber);
+	void SendSms1L();
+	void FillSmsAttibutes1(const TDesC& aTelNumber);
+	void SendSms2L();
+	void FillSmsAttibutes2(const TDesC& aTelNumber);
+private:
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1 iSmsAttr;
+	}; // class CTestLtsySmsSendInvalidParam
+_LIT(KCTestLtsySmsSendInvalidParam,"CTestLtsySmsSendInvalidParam");
+
+#endif // TESTLTSYSMSSENDINVALIDPARAM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsshareddata.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,39 @@
+// TestTelephonySmsSharedData.h
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonySmsSharedData
+
+#ifndef TESTTELEPHONYSMSSHAREDDATA_H
+#define TESTTELEPHONYSMSSHAREDDATA_H
+
+// system include
+#include <e32cmn.h>
+#include <e32base.h>
+#include <etelmm.h>
+
+/**
+ * This class defines the shared data of sms test category between 
+ * different test steps.
+ */
+class CTestLtsySmsSharedData : public CBase
+/**
+ * @internalAll
+ * @test
+ */
+	{
+public:
+	CTestLtsySmsSharedData();
+	virtual ~CTestLtsySmsSharedData();
+	static CTestLtsySmsSharedData* NewL();
+	RArray<RMobileSmsMessaging>& SmsMessagingArray();
+	RArray<RMobileSmsStore>& SmsStoreArray();
+	void Reset();
+	void InitializeL();
+private:
+	void ConstructL();
+private:
+	RArray<RMobileSmsMessaging> iMessaging;
+	RArray<RMobileSmsStore> iSmsStore;
+	};
+
+#endif // TESTTELEPHONYSMSSHAREDDATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsstore.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,65 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsstore.h
+// 
+
+#ifndef TESTLTSYSMSSTORE_H
+#define TESTLTSYSMSSTORE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsStore
+ *
+ */
+class CTestLtsySmsStore : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsStore();
+	static CTestLtsySmsStore* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsStore* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsStore(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void StoreSmsL();
+	void ReceiveSmsL();
+	void WriteSmsL();
+	void AckSmsStoredL();
+	void NackSmsStoredL();
+private:
+	void FillWriteSmsAttibutesL(TBuf8<400> aTpdu,RMobilePhone::TMobileAddress  aMsgSca);
+	/**
+	*  Receiving message's attributs
+	*/ 
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 iReceiveAttr;
+	/**
+	*  Receiving message's TPDU
+	*/
+	TBuf8<KMessageLen> iRecvMsg;
+	
+	}; // class CTestLtsySmsStore
+_LIT(KCTestLtsySmsStore,"CTestLtsySmsStore");
+
+#endif // TESTLTSYSMSSTORE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmsstoregetinfo.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,43 @@
+//
+// testltsygetmessagestoreinfo.h
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#ifndef TESTLTSYSMSSTOREGETINFO_H
+#define TESTLTSYSMSSTOREGETINFO_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsStoreGetInfo
+ *
+ */
+class CTestLtsySmsStoreGetInfo : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsStoreGetInfo();
+	static CTestLtsySmsStoreGetInfo* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsStoreGetInfo* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsStoreGetInfo(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void GetSmsStoreInfoL();
+	void CheckSmsStoreInfoL();
+private:
+	RMobilePhoneBookStore::TMobilePhoneBookInfoV1   iInfo;	
+	}; // class CTestLtsySmsStoreGetInfo
+_LIT(KCTestLtsySmsStoreGetInfo,"CTestLtsySmsStoreGetInfo");
+
+#endif // TESTLTSYSMSSTOREGETINFO_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmswrite.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,43 @@
+//
+// testltsysmswrite.h
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#ifndef TESTLTSYSMSWRITE_H
+#define TESTLTSYSMSWRITE_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsWrite
+ *
+ */
+class CTestLtsySmsWrite : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsWrite();
+	static CTestLtsySmsWrite* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsWrite* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsWrite(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void WriteSmsL();
+private:
+
+	void FillWriteSmsAttibutesL(TBuf8<400> aTpdu,RMobilePhone::TMobileAddress  aMsgSca);
+	}; // class CTestLtsySmsWrite
+_LIT(KCTestLtsySmsWrite,"CTestLtsySmsWrite");
+
+#endif // TESTLTSYSMSWRITE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/inc/testltsysmswriteinvalidparam.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,46 @@
+//
+// testltsysmswriteinvalidparam.h
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#ifndef TESTLTSYSMSWRITEINVALIDPARAM_H
+#define TESTLTSYSMSWRITEINVALIDPARAM_H
+
+//system include 
+#include <e32std.h>
+#include <e32base.h>
+
+//user include
+#include "testltsysmsbase.h"
+#include "testltsymodel.h"
+// CLASS DECLARATION
+
+/**
+ * CTestLtsySmsWriteInvalidParam
+ *
+ */
+class CTestLtsySmsWriteInvalidParam : public CTestLtsySmsBase
+	{
+public:
+
+	~CTestLtsySmsWriteInvalidParam();
+	static CTestLtsySmsWriteInvalidParam* NewL(CTestLtsyModel& aTestModel);
+	static CTestLtsySmsWriteInvalidParam* NewLC(CTestLtsyModel& aTestModel);
+	CTestLtsySmsWriteInvalidParam(CTestLtsyModel& aTestModel);
+	void ConstructL();
+protected:	
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepL();
+	virtual TVerdict doTestStepPostambleL();
+	void WriteSmsL();
+	void WriteSms1L();
+	void WriteSms2L();
+	void WriteSms3L();
+	void WriteSms4L();
+private:
+	void FillWriteSmsAttibutesL(TBuf8<400> aTpdu,RMobilePhone::TMobileAddress  aMsgSca);
+	}; // class CTestLtsySmsWriteInvalidParam
+_LIT(KCTestLtsySmsWriteInvalidParam,"CTestLtsySmsWriteInvalidParam");
+
+#endif // TESTLTSYSMSWRITEINVALIDPARAM_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stllsycallcontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,114 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+
+PRINT ************************
+PRINT Start case 1
+PRINT Dial->Hold->Resume->Hold->Resume->Hang up
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlBase
+
+PRINT ************************
+PRINT Start case 2
+PRINT Dial->Hang up->Close
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialHangupCase
+
+PRINT ************************
+PRINT Start case 3
+PRINT Notify incoming call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlNotifyIncomingCallCase1
+
+PRINT ************************
+PRINT Start case 4
+PRINT Dial emergency call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialEmergencyCall
+
+PRINT ************************
+PRINT Start case 5
+PRINT Notify incoming call->Answer->RCustomAPI close all
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlCustomAPITerminateAllCalls
+
+
+PRINT ************************
+PRINT Start case 6
+PRINT Dial one->Dial two->Phone close all
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlPhoneTerminateAllCalls
+
+PRINT ************************
+PRINT Start case 7
+PRINT Notify incoming call 1
+PRINT Answer call 1
+PRINT Notify incoming call 2
+PRINT Answer call 2
+PRINT Hangup call 1->Hangup call 2
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlNotifyIncomingCallCase2
+
+PRINT ************************
+PRINT Start case 8
+PRINT Notify incoming call 1
+PRINT Answer call 1
+PRINT Hold 1
+PRINT Resume 1
+PRINT Hang up 1
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlNotifyIncomingCallCase3
+
+PRINT ************************
+PRINT Start case 9
+PRINT Notify incoming call 1
+PRINT Answer call 1
+PRINT Notify incoming call 2
+PRINT Answer call 2
+PRINT Swap call 1
+PRINT Swap call 2
+PRINT Hang up call 1
+PRINT Hang up call 2
+PRINT Close call 1
+PRINT Close call 2
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlSwapCalls
+
+PRINT ************************
+PRINT Start case 10
+PRINT Dial call number 11
+PRINT Close call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialBadCall
+
+PRINT ************************
+PRINT Start case 11
+PRINT Dial call self number 
+PRINT Close call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialSelfCall
+
+PRINT ************************
+PRINT Start case 12
+PRINT Dial normal call
+PRINT Dial emergency call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialEmergencyCallStopAllCall
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stllsysmscontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite  -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyOpenPhone
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyOpenSms 
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyOpenSmsStore
+RUN_TEST_STEP 20 te_integration_stltsySuite CTestLtsySmsSend 
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyGetMessageStoreInfo
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsStoreGetInfo
+RUN_TEST_STEP 200 te_integration_stltsySuite CTestLtsySmsReceive
+delay 2000
+RUN_TEST_STEP 30 te_integration_stltsySuite CTestLtsySmsAck
+RUN_TEST_STEP 30 te_integration_stltsySuite CTestLtsySmsNack
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsySmsSendInvalidParam
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsRead
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsReadInvalidIndex
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsDelete
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsDeleteInvalidIndex
+delay 5000
+RUN_TEST_STEP 200 te_integration_stltsySuite CTestLtsySmsDeleteAll
+delay 5000
+RUN_TEST_STEP 200 te_integration_stltsySuite CTestLtsySmsStore
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsWrite
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsWriteInvalidParam
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyCloseSms  
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyCloseSmsStore                             
+                             
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsySuite.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,12 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDiallCase1Step c:\testdata\configs\te_integration_stltsySuite.ini Section0
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsySmsControlReceiveSmsCase1Step c:\testdata\configs\te_integration_stltsySuite.ini Section1
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsySmsControlSendSmsCase1Step c:\testdata\configs\te_integration_stltsySuite.ini Section2
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsyphonebook.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,26 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite  -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyOpenPhone
+delay 5000
+RUN_TEST_STEP 120 te_integration_stltsySuite CTestLtsyPhbkGetStoreInfo
+delay 2000
+RUN_TEST_STEP 120 te_integration_stltsySuite CTestLtsyPhbkOpen 
+delay 10000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkDelete 
+delay 2000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkDeleteInvalidIndex
+delay 2000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkWrite      
+delay 1000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkWriteInvalidIndex
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkRead    
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkReadInvalidIndex
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkClose                       
+                           
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsyphonecontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,22 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyOpenPhone
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetFdnStatus
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetNetworkRegistrationStatus
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneSingalCap
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneSingalStrength
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneBatteryCap
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneBatteryInfo
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetCellInfo
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetPhoneID
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneSetNetworkSelectionSetting
+RUN_TEST_STEP 30 te_integration_stltsySuite TestLtsyPhoneSelectNetwork
+//RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyClosePhone
+
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/scripts/te_integration_stltsypktcontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,41 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktOpenPacket
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktAttachNetwork
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktDetachNetwork
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktAttachNetwork
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetStaticCapabilities
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetDynamicCapabilities
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktOpenContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktInitialiseContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktSetContextConfig
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktOpenContextQos
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktSetContextQoSProfile
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktActivateContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 150 te_integration_stltsySuite TestLtsyPktDeactivateContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktCloseContextQos
+RUN_TEST_STEP 100 te_integration_stltsySuite TestLtsyPktDeleteContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktCloseContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktClosePacket
+
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/te_integration_stltsysuiteserver.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,389 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Example file/test code to demonstrate how to develop a TestExecute Server
+// Developers should take this project as a template and substitute their own
+// for (WINS && !EKA2) versions will be xxxServer.Dll and require a thread to be started
+// in the process of the client. The client initialises the server by calling the
+// one and only ordinal.
+// 
+//
+
+/**
+ @file Te_integration_stltsySuiteServer.cpp
+ @internalTechnology
+*/
+
+#include "te_integration_stltsysuiteserver.h"
+#include "testltsysmscontrolreceivesmscase1step.h"
+#include "testltsysmscontrolsendsmscase1step.h"
+#include "testltsycallcontrolbase.h"
+#include "testltsycallcontroldialhangupcase.h"
+#include "testltsycallcontrolnotifyincomingcallcase1.h"
+#include "testltsycallcontrolnotifyincomingcallcase2.h"
+#include "testltsycallcontrolnotifyincomingcallcase3.h"
+#include "testltsycallcontrolswapcalls.h"
+#include "testltsycallcontrolcustomapiterminateallcalls.h"
+#include "testltsycallcontrolphoneterminateallcalls.h"
+#include "testltsycallcontroldialemergencycall.h"
+#include "testltsycallcontroldialbadcall.h"
+#include "testltsycallcontroldialselfcall.h"
+#include "testltsycallcontroldialemergencycallstopallcalls.h"
+
+#include "testltsyopenphone.h"
+#include "testltsyclosephone.h"
+#include "testltsyclosephone.h"
+#include "testltsyopenphone.h"
+#include "testltsygetphonebatteryinfo.h"
+#include "testltsygetphonesignalstrength.h"
+#include "testltsygetphonebatterycap.h"
+#include "testltsygetphonesignalcap.h"
+#include "testltsyphonegetfdnstatus.h"
+#include "testltsyphonegetnetworkregistrationstatus.h"
+#include "testltsyphonegetphoneid.h"
+#include "testltsyphonegetdetectednetworks.h"
+#include "testltsyphonegetdetectednetworkscancel.h"
+#include "testltsyphonesetnetworkselectionsetting.h"
+#include "testltsyphoneselectnetwork.h"
+#include "testltsyphonegethomenetwork.h"
+#include "testltsyphonegetcurrentnetworkinfo.h"
+#include "testltsyphonegetcellinfo.h"
+#include "testltsyphoneregistercellinfochangenotification.h"
+
+
+#include "testltsypktopenpacket.h"
+#include "testltsypktclosepacket.h"
+#include "testltsypktopencontext.h"
+#include "testltsypktinitialisecontext.h"
+#include "testltsypktclosecontext.h"
+#include "testltsypktattachnetwork.h"
+#include "testltsypktdetachnetwork.h"
+#include "testltsypktactivatecontext.h"
+#include "testltsypktdeactivatecontext.h"
+#include "testltsypktdeletecontext.h"
+#include "testltsypktgetservicestatus.h"
+#include "testltsypktgetnwkregistrationstatus.h"
+#include "testltsypktgetcontextconfig.h"
+#include "testltsypktgetdefaultparams.h"
+#include "testltsypktsetdefaultparams.h"
+#include "testltsypktgetcontextinfo.h"
+#include "testltsypktsetcontextconfig.h"
+#include "testltsypktopencontextqos.h"
+#include "testltsypktclosecontextqos.h"
+#include "testltsypktgetcontextqosprofile.h"
+#include "testltsypktsetcontextqosprofile.h"
+#include "testltsypktgetstaticcapabilities.h"
+#include "testltsypktgetdynamiccapabilities.h"
+
+#include "testltsyopensms.h"
+#include "testltsysmssend.h"
+#include "testltsyopensmsstore.h"
+#include "testltsyclosesms.h"
+#include "testltsyclosesmsstore.h"
+#include "testltsygetmessagestoreinfo.h"
+#include "testltsysmsstoregetinfo.h"
+#include "testltsysmsack.h"
+#include "testltsysmsnack.h"
+#include "testltsysmsreceive.h"
+#include "testltsysmssendinvalidparam.h"
+#include "testltsysmsread.h"
+#include "testltsysmsreadinvalidindex.h"
+#include "testltsysmsdelete.h"
+#include "testltsysmsdeleteinvalidindex.h"
+#include "testltsysmsdeleteall.h"
+#include "testltsysmsstore.h"
+#include "testltsysmswrite.h"
+#include "testltsysmswriteinvalidparam.h"
+
+#include "testltsyphbkopen.h"
+#include "testltsyphbkclose.h"
+#include "testltsyphbkgetstoreinfo.h"
+#include "testltsyphbkdelete.h"
+#include "testltsyphbkdeleteinvalidindex.h"
+#include "testltsyphbkwrite.h"
+#include "testltsyphbkwriteinvalidindex.h"
+#include "testltsyphbkread.h"
+#include "testltsyphbkreadinvalidindex.h"
+
+_LIT(KServerName,"Te_integration_stltsySuite");
+CTe_integration_stltsySuite* CTe_integration_stltsySuite::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+	{
+	CTe_integration_stltsySuite * server = new (ELeave) CTe_integration_stltsySuite();
+	CleanupStack::PushL(server);
+
+	server->ConstructL(KServerName);
+	CleanupStack::Pop(server);
+	return server;
+	}
+CTe_integration_stltsySuite::CTe_integration_stltsySuite()
+:	CTestServer()
+,	iSharedData(NULL)
+/**
+Constructor
+*/
+	{
+	}
+
+void CTe_integration_stltsySuite::ConstructL(const TDesC& aName)
+/**
+  Constructs a CTestTelephonySharedData ojbect to 
+  hold the shared data (CTelephony object)
+*/
+	{
+	CTestServer::ConstructL(aName);
+	iSharedData = CTestLtsySharedData::NewL();
+	iTestModel = CTestLtsyModel::NewL();
+	}
+
+CTe_integration_stltsySuite::~CTe_integration_stltsySuite()
+/**
+  Destructor deleting the CTestTelephonySharedData ojbect. 
+*/
+	{
+	delete iSharedData;
+	delete iTestModel;
+	}
+
+// Secure variants much simpler
+// For EKA2, just an E32Main and a MainL()
+LOCAL_C void MainL()
+/**
+ * Secure variant
+ * Much simpler, uses the new Rendezvous() call to sync with the client
+ */
+	{
+	// Leave the hooks in for platform security
+#if (defined __DATA_CAGING__)
+	RProcess().DataCaging(RProcess::EDataCagingOn);
+	RProcess().DataCaging(RProcess::ESecureApiOn);
+#endif
+	CActiveScheduler* sched=NULL;
+	sched=new(ELeave) CActiveScheduler;
+	CActiveScheduler::Install(sched);
+	CTe_integration_stltsySuite* server = NULL;
+	// Create the CTestServer derived server
+	TRAPD(err,server = CTe_integration_stltsySuite::NewL());
+	if(!err)
+		{
+		// Sync with the client and enter the active scheduler
+		RProcess::Rendezvous(KErrNone);
+		sched->Start();
+		}
+	delete server;
+	delete sched;
+	}
+
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+	{
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if(cleanup == NULL)
+		{
+		return KErrNoMemory;
+		}
+	TRAPD(err,MainL());
+	delete cleanup;
+	__UHEAP_MARKEND;
+	return err;
+    }
+
+
+CTestStep* CTe_integration_stltsySuite::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+	{
+	CTestStep* testStep = NULL;
+	
+	  if(aStepName == KCTestLtsySmsControlReceiveSmsCase1Step)
+	      testStep = new CCTestLtsySmsControlReceiveSmsCase1Step();
+	  else if(aStepName == KCTestLtsySmsControlSendSmsCase1Step)
+	      testStep = new CCTestLtsySmsControlSendSmsCase1Step();
+	  else if(aStepName==KTestLtsyOpenPhone)
+		  testStep = new CTestLtsyOpenPhone(*iTestModel);
+	  else if(aStepName==KTestLtsyClosePhone)
+	      testStep = new CTestLtsyClosePhone(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetFdnStatus)
+	      testStep = new CTestLtsyPhoneGetFdnStatus(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetNetworkRegistrationStatus)
+	      testStep = new CTestLtsyPhoneGetNetworkRegistrationStatus(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetPhoneID)
+	      testStep = new CTestLtsyPhoneGetPhoneID(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetDetectedNetworks)
+	      testStep = new CTestLtsyPhoneGetDetectedNetworks(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetDetectedNetworksCancelCancel)
+	      testStep = new CTestLtsyPhoneGetDetectedNetworksCancelCancel(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneSetNetworkSelectionSetting)
+	      testStep = new CTestLtsyPhoneSetNetworkSelectionSetting(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneSelectNetwork)
+	      testStep = new CTestLtsyPhoneSelectNetwork(*iTestModel);
+	  else if(aStepName==KTestLtsyGetPhoneBatteryInfo)
+	      testStep = new CTestLtsyGetPhoneBatteryInfo(*iTestModel);
+	  else if(aStepName==KTestLtsyGetPhoneSingalStrength)
+	      testStep = new CTestLtsyGetPhoneSignalStrength(*iTestModel);
+	  else if(aStepName==KTestLtsyGetPhoneBatteryCap)
+	      testStep = new CTestLtsyGetPhoneBatteryCap(*iTestModel);
+	  else if(aStepName==KTestLtsyGetPhoneSingalCap)
+	      testStep = new CTestLtsyGetPhoneSignalCap(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetHomeNetwork)
+	      testStep = new CTestLtsyPhoneGetHomeNetwork(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetCurrentNetworkInfo)
+	      testStep = new CTestLtsyPhoneGetCurrentNetworkInfo(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneRegisterCellInfoChangeNotification)
+	      testStep = new CTestLtsyPhoneRegisterCellInfoChangeNotification(*iTestModel);
+	  else if(aStepName==KTestLtsyPhoneGetCellInfo)
+	      testStep = new CTestLtsyPhoneGetCellInfo(*iTestModel);
+	  else if(aStepName==KTestLtsyPktActivateContext)
+	      testStep = new CTestLtsyPktActivateContext(*iTestModel);
+	  else if(aStepName==KTestLtsyPktAttachNetwork)
+	      testStep = new CTestLtsyPktAttachNetwork(*iTestModel);
+	  else if(aStepName==KTestLtsyPktCloseContext)
+	      testStep = new CTestLtsyPktCloseContext(*iTestModel);
+	  else if(aStepName==KTestLtsyPktCloseContextQos)
+	      testStep = new CTestLtsyPktCloseContextQos(*iTestModel);
+	  else if(aStepName==KTestLtsyPktClosePacket)
+	      testStep = new CTestLtsyPktClosePacket(*iTestModel);
+	  else if(aStepName==KTestLtsyPktDeactivateContext)
+	      testStep = new CTestLtsyPktDeactivateContext(*iTestModel);
+	  else if(aStepName==KTestLtsyPktDeleteContext)
+	      testStep = new CTestLtsyPktDeleteContext(*iTestModel);
+	  else if(aStepName==KTestLtsyPktDetachNetwork)
+	      testStep = new CTestLtsyPktDetachNetwork(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetContextConfig)
+	      testStep = new CTestLtsyPktGetContextConfig(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetContextInfo)
+	      testStep = new CTestLtsyPktGetContextInfo(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetContextQoSProfile)
+	      testStep = new CTestLtsyPktGetContextQoSProfile(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetDefaultParams)
+	      testStep = new CTestLtsyPktGetDefaultParams(*iTestModel);
+	  else if(aStepName==KTestLtsyPktNetworkRegistrationStatus)
+	      testStep = new CTestLtsyPktNetworkRegistrationStatus(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetServiceStatust)
+	      testStep = new CTestLtsyPktGetServiceStatus(*iTestModel);
+	  else if(aStepName==KTestLtsyPktInitialiseContext)
+	      testStep = new CTestLtsyPktInitialiseContext(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetStaticCapabilities)
+	      testStep = new CTestLtsyPktGetStaticCapabilities(*iTestModel);
+	  else if(aStepName==KTestLtsyPktGetDynamicCapabilities)
+	      testStep = new CTestLtsyPktGetDynamicCapabilities(*iTestModel);
+	  else if(aStepName==KTestLtsyPktOpenContext)
+	      testStep = new CTestLtsyPktOpenContext(*iTestModel);
+	  else if(aStepName==KTestLtsyPktOpenContextQos)
+	      testStep = new CTestLtsyPktOpenContextQos(*iTestModel);
+	  else if(aStepName==KTestLtsyPktOpenPacket)
+	      testStep = new CTestLtsyPktOpenPacket(*iTestModel);
+	  else if(aStepName==KTestLtsyPktSetContextConfig)
+	      testStep = new CTestLtsyPktSetContextConfig(*iTestModel);
+	  else if(aStepName==KTestLtsyPktSetContextQoSProfile)
+	      testStep = new CTestLtsyPktSetContextQoSProfile(*iTestModel);
+	  else if(aStepName==KTestLtsyPktSetDefaultParams)
+	      testStep = new CTestLtsyPktSetDefaultParams(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlNotifyIncomingCallCase1)
+    	 testStep = new CTestLtsyCallControlNotifyIncomingCallCase1(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlDialHangupCase)
+    	 testStep = new CTestLtsyCallControlDialHangupCase(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlNotifyIncomingCallCase2)
+    	 testStep = new CTestLtsyCallControlNotifyIncomingCallCase2(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlNotifyIncomingCallCase3)
+    	 testStep = new CTestLtsyCallControlNotifyIncomingCallCase3(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlSwapCalls)
+    	 testStep = new CTestLtsyCallControlSwapCalls(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlCustomAPITerminateAllCalls)
+    	 testStep = new CTestLtsyCallControlCustomAPITerminateAllCalls(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlPhoneTerminateAllCalls)
+    	 testStep = new CTestLtsyCallControlPhoneTerminateAllCalls(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlDialEmergencyCall)
+    	 testStep = new CTestLtsyCallControlDialEmergencyCall(*iTestModel);
+     else if (aStepName == KTestLtsyCallControlBase)
+    	 testStep = new CTestLtsyCallControlBase(*iTestModel);
+     else if(aStepName == KCTestLtsyOpenSms) 
+       	 testStep = new CTestLtsyOpenSms(*iTestModel);
+        else if(aStepName == KCTestLtsyOpenSmsStore) 
+       	 testStep = new CTestLtsyOpenSmsStore(*iTestModel);
+        else if(aStepName == KCTestLtsySmsSend)
+       	 testStep = new CTestLtsySmsSend(*iTestModel);	
+        else if(aStepName == KCTestLtsyCloseSms) 
+            testStep = new CTestLtsyCloseSms(*iTestModel);
+        else if(aStepName == KCTestLtsyCloseSmsStore) 
+       	 testStep = new CTestLtsyCloseSmsStore(*iTestModel);
+        else if(aStepName == KCTestLtsyGetMessageStoreInfo) 
+            testStep = new CTestLtsyGetMessageStoreInfo(*iTestModel);
+        else if(aStepName == KCTestLtsySmsStoreGetInfo) 
+       	 testStep = new CTestLtsySmsStoreGetInfo(*iTestModel); 
+        else if(aStepName == KCTestLtsySmsReceive) 
+            testStep = new CTestLtsySmsReceive(*iTestModel);
+        else if(aStepName == KCTestLtsySmsAck) 
+            testStep = new CTestLtsySmsAck(*iTestModel);
+        else if(aStepName == KCTestLtsySmsNack) 
+          	 testStep = new CTestLtsySmsNack(*iTestModel);  
+        else if(aStepName == KCTestLtsySmsSendInvalidParam) 
+            testStep = new CTestLtsySmsSendInvalidParam(*iTestModel);  
+        else if(aStepName == KCTestLtsySmsRead) 
+            testStep = new CTestLtsySmsRead(*iTestModel);
+        else if(aStepName == KCTestLtsySmsReadInvalidIndex) 
+         	 testStep = new CTestLtsySmsReadInvalidIndex(*iTestModel); 
+        else if(aStepName == KCTestLtsySmsDelete) 
+                testStep = new CTestLtsySmsDelete(*iTestModel);
+        else if(aStepName == KCTestLtsySmsDeleteInvalidIndex) 
+          	 testStep = new CTestLtsySmsDeleteInvalidIndex(*iTestModel);  
+        else if(aStepName == KCTestLtsySmsDeleteAll) 
+            testStep = new CTestLtsySmsDeleteAll(*iTestModel);  
+        else if(aStepName == KCTestLtsySmsStore) 
+            testStep = new CTestLtsySmsStore(*iTestModel);
+        else if(aStepName == KCTestLtsySmsWrite) 
+            testStep = new CTestLtsySmsWrite(*iTestModel);  
+        else if(aStepName == KCTestLtsySmsWriteInvalidParam) 
+            testStep = new CTestLtsySmsWriteInvalidParam(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkOpen) 
+            testStep = new CTestLtsyPhbkOpen(*iTestModel);
+        else if(aStepName == KCTestLtsyPhbkClose) 
+            testStep = new CTestLtsyPhbkClose(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkGetStoreInfo) 
+            testStep = new CTestLtsyPhbkGetStoreInfo(*iTestModel);  
+        else if(aStepName == KCTestLtsyPhbkDelete) 
+            testStep = new CTestLtsyPhbkDelete(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkDeleteInvalidIndex) 
+            testStep = new CTestLtsyPhbkDeleteInvalidIndex(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkWrite) 
+            testStep = new CTestLtsyPhbkWrite(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkWriteInvalidIndex) 
+            testStep = new CTestLtsyPhbkWriteInvalidIndex(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkRead) 
+            testStep = new CTestLtsyPhbkRead(*iTestModel); 
+        else if(aStepName == KCTestLtsyPhbkReadInvalidIndex) 
+            testStep = new CTestLtsyPhbkReadInvalidIndex(*iTestModel);   	 
+        else if (aStepName == KTestLtsyCallControlDialBadCall)
+    	   testStep = new CTestLtsyCallControlDialBadCall(*iTestModel);
+        else if (aStepName == KTestLtsyCallControlDialSelfCall)
+    	   testStep = new CTestLtsyCallControlDialSelfCall(*iTestModel);
+        else if (aStepName == KTestLtsyCallControlDialEmergencyCallStopAllCall)
+    	    testStep = new CTestLtsyCallControlDialEmergencyCallStopAllCall(*iTestModel);
+	  
+	return testStep;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/te_integration_stltsysuitestepbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,65 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file Te_integration_stltsySuiteStepBase.cpp
+ @internalTechnology
+*/
+
+#include "te_integration_stltsysuitestepbase.h"
+#include "te_integration_stltsysuitedefs.h"
+
+// Device driver constants
+
+TVerdict CTe_integration_stltsySuiteStepBase::doTestStepPreambleL()
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all initialisation common to derived classes in here.
+ * Make it being able to leave if there are any errors here as there's no point in
+ * trying to run a test step if anything fails.
+ * The leave will be picked up by the framework.
+ */
+	{
+
+	// process some common pre setting to test steps then set SetTestStepResult to EFail or Epass.
+	INFO_PRINTF1(_L("Please delete this line or modify me!! I am in doTestStepPreambleL() of the class CTe_integration_stltsySuiteStepBase!"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTe_integration_stltsySuiteStepBase::doTestStepPostambleL()
+/**
+ * @return - TVerdict
+ * Implementation of CTestStep base class virtual
+ * It is used for doing all after test treatment common to derived classes in here.
+ * Make it being able to leave
+ * The leave will be picked up by the framework.
+ */
+	{
+
+	// process some common post setting to test steps then set SetTestStepResult to EFail or Epass.
+	INFO_PRINTF1(_L("Please delete this line or modify me!! I am in doTestStepPostambleL() of the class CTe_integration_stltsySuiteStepBase!"));
+	//SetTestStepResult(EPass);  // or EFail
+	return TestStepResult();
+	}
+
+CTe_integration_stltsySuiteStepBase::~CTe_integration_stltsySuiteStepBase()
+	{
+	}
+
+CTe_integration_stltsySuiteStepBase::CTe_integration_stltsySuiteStepBase()
+	{
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyasyncoperation.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,60 @@
+// TestTelephonyAsyncOperation.cpp
+//
+// Copyright (c) 2004-2007 Symbian Ltd.  All rights reserved.
+//
+// The active object derived class for asynchronous requests
+//
+
+// Epoc includes
+#include <testproperty.h>
+#include <e32property.h>
+#include <sacls.h>
+
+// User includes
+#include "TestLtsyAsyncOperation.h"
+
+CTelephonyAsyncOperation::CTelephonyAsyncOperation(CTestStep& aTestStep)
+/*
+Constructor
+
+Adds the active object to active scheduler.
+
+@param aInt Operation id
+*/
+:	CActive(EPriorityStandard)
+,	iTestStep(aTestStep)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CTelephonyAsyncOperation::~CTelephonyAsyncOperation()
+/*
+Destructor
+*/
+	{
+	}
+
+void CTelephonyAsyncOperation::DoCancel()
+/*
+For canceling the request
+*/
+	{
+	}
+
+void CTelephonyAsyncOperation::RunL()
+/*
+Stop the active scheduler
+*/
+	{
+	CActiveScheduler::Stop();
+	}
+
+TInt CTelephonyAsyncOperation::SetOperation()
+/*
+Set the active object request and start the active scheduler
+*/
+	{
+	SetActive();
+	CActiveScheduler::Start();
+	return iStatus.Int();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,868 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+#include "te_integration_stltsysuitestepbase.h"
+#include "te_integration_stltsysuitedefs.h"
+#include "testltsycallcontrolbase.h"
+
+//const define
+_LIT16(KPhoneTSY, "phonetsy");
+_LIT16(KLtsyTelNumOne, "58848158");
+_LIT16(KLtsyTelNumTwo, "58848157");
+_LIT16(KLtsyBadNumber, "11");
+_LIT16(KLtsySelfNumber, "15901279603");
+
+
+CTestLtsyCallControlBase::CTestLtsyCallControlBase(CTestLtsyModel& aModel) : iLtsyModel(aModel)
+	{
+	
+	}
+
+CTestLtsyCallControlBase::~CTestLtsyCallControlBase()
+	{
+	CloseLine();
+	
+	CloseCallOne();
+	
+	CloseCallTwo();	
+	}
+
+TVerdict CTestLtsyCallControlBase::doTestStepPreambleL()
+	{
+	
+	OpenPhoneL();
+	
+	OpenLineL();
+	
+	OpenCustomAPIL();
+	
+	return EPass;
+	}
+
+TVerdict CTestLtsyCallControlBase::doTestStepPostambleL()
+	{
+	
+	CloseLine();
+	
+	CloseCallOne();
+	
+	CloseCallTwo();
+	
+	CloseCustomAPI();
+	
+	return EPass;
+	}
+
+TVerdict CTestLtsyCallControlBase::doTestStepL()
+	{
+	//Open Call
+	OpenCallOneL();
+	
+	//Dial Call
+	DialCallOne();
+	
+	User::After(1000*1000);
+	
+	//Hold call
+	HoldCallOne();
+	
+	User::After(1000*1000);
+	
+	//Resume call
+	ResumeCallOne();
+	
+	User::After(1000*1000);
+	
+	//Hold call
+	HoldCallOne();
+	
+	User::After(1000*1000);
+	
+	//Resume call
+	ResumeCallOne();
+	
+	User::After(1000*1000);
+	
+	//Hang up call
+	HangupCallOneL();
+	
+	User::After(1000*1000);
+	
+	//Close call
+	CloseCallOne();
+	
+	return EPass;
+	}
+
+void CTestLtsyCallControlBase::OpenPhoneL()
+	{
+	INFO_PRINTF1(_L("starting opne phone"));
+	
+	if (!iLtsyModel.SharedEnv().PhoneOpened())
+		{
+		iLtsyModel.SharedEnv().OpenPhoneL(KPhoneTSY);
+		}
+	}
+
+void CTestLtsyCallControlBase::OpenLineL()
+	{
+	INFO_PRINTF1(_L("starting opne line"));	
+	
+	if (iLtsyModel.SharedEnv().PhoneOpened())
+		{
+		TInt numberLines = 0;
+		User::LeaveIfError(iLtsyModel.SharedEnv().Phone().EnumerateLines(numberLines));
+		RPhone::TLineInfo lineInfo;
+		TBool foundLine = EFalse;
+		for (TInt a = 0; a < numberLines; a++)
+			{
+			User::LeaveIfError(iLtsyModel.SharedEnv().Phone().GetLineInfo(a, lineInfo));
+			if (lineInfo.iLineCapsFlags & RLine::KCapsVoice)
+				{
+				foundLine = ETrue;
+				break;
+				}
+			}
+		if (!foundLine)
+			{
+			INFO_PRINTF1(_L("The phone has opened fail"));	
+			User::Leave(KErrNotFound);
+			}
+		
+		User::LeaveIfError(iLtsyModel.CallSharedData().VoiceLine().Open(iLtsyModel.SharedEnv().Phone(), lineInfo.iName));
+		INFO_PRINTF1(_L("The line open successful"));	
+		}
+	else
+		{
+		INFO_PRINTF1(_L("The phone has opened fail"));	
+		}
+	}
+
+void CTestLtsyCallControlBase::CloseLine()
+	{
+	iLtsyModel.CallSharedData().VoiceLine().Close();
+	}
+
+void CTestLtsyCallControlBase::OpenCustomAPIL()
+	{
+	INFO_PRINTF1(_L("starting opne custom API"));
+	
+	
+	if (iLtsyModel.SharedEnv().PhoneOpened())
+		{
+		User::LeaveIfError(iLtsyModel.CallSharedData().MmCustomAPI().Open(iLtsyModel.SharedEnv().Phone()));
+		INFO_PRINTF1(_L("The custom API open successfully"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("The phone has opened fail"));
+		}
+	}
+
+void CTestLtsyCallControlBase::CloseCustomAPI()
+	{
+	INFO_PRINTF1(_L("starting close custom API"));
+	iLtsyModel.CallSharedData().MmCustomAPI().Close();
+	}
+
+void CTestLtsyCallControlBase::CustomAPITerminateAllCallsL()
+	{
+	INFO_PRINTF1(_L("RCustomAPI start terminate all calls"));
+	
+	TBuf<128> allcall(_L("ALL_CALLS"));
+	TRequestStatus iStatus;
+	iLtsyModel.CallSharedData().MmCustomAPI().TerminateCall(iStatus, allcall);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("RCustomAPI terminate all calls result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() != KErrNone)
+		{
+		User::LeaveIfError(iStatus.Int());
+		}	
+	}
+
+void CTestLtsyCallControlBase::PhoneTerminateAllCallsL()
+	{
+	INFO_PRINTF1(_L("phone start terminate all calls"));
+	
+	TRequestStatus iStatus;
+	iLtsyModel.SharedEnv().Phone().TerminateAllCalls(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("phone terminate all calls result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() != KErrNone)
+		{
+		User::LeaveIfError(iStatus.Int());
+		}		
+	}
+
+//It must open RCustomAPI before create CTelephony
+void CTestLtsyCallControlBase::CreateThirtyPartyTelephonyL()
+	{
+	iLtsyModel.CallSharedData().ThirdPartyTelephony() = CTelephony::NewL();
+	}
+
+void CTestLtsyCallControlBase::DialCallOne()
+	{
+	INFO_PRINTF1(_L("starting dial call one"));
+	INFO_PRINTF2(_L("starting dial number %S..."), &KLtsyTelNumOne);
+	INFO_PRINTF1(_L("If ring please pick up your telephone "));
+	
+	TRequestStatus tDialStatus;
+	TRequestStatus tNotifyStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Dial(tDialStatus, KLtsyTelNumOne);
+	User::WaitForRequest(tDialStatus);
+	
+	INFO_PRINTF3(_L("Dial number %S\t Result = %d"), &KLtsyTelNumOne, tDialStatus.Int());
+	
+	if (tDialStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number first call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number second call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number three call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}		
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}
+	}
+
+void CTestLtsyCallControlBase::CallOneDialBadNumberL()
+	{
+	INFO_PRINTF1(_L("starting dial call one"));
+	INFO_PRINTF2(_L("starting dial bad number %S..."), &KLtsyBadNumber);
+	
+	TRequestStatus tDialStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().Dial(tDialStatus, KLtsyBadNumber);
+	User::WaitForRequest(tDialStatus);	
+	
+	User::LeaveIfError(tDialStatus.Int());
+	}
+
+void CTestLtsyCallControlBase::CallOneDialSelfNumberL()
+	{
+	INFO_PRINTF1(_L("starting dial call one"));
+	INFO_PRINTF2(_L("starting dial bad number %S..."), &KLtsySelfNumber);
+	
+	TRequestStatus tDialStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().Dial(tDialStatus, KLtsySelfNumber);
+	User::WaitForRequest(tDialStatus);	
+	
+	User::LeaveIfError(tDialStatus.Int());	
+	}
+
+void CTestLtsyCallControlBase::DialCallTwo()
+	{
+	INFO_PRINTF1(_L("starting dial call two"));
+	INFO_PRINTF2(_L("starting dial number %S..."), &KLtsyTelNumTwo);
+	
+	TRequestStatus tDialStatus;
+	TRequestStatus tNotifyStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Dial(tDialStatus, KLtsyTelNumTwo);
+	User::WaitForRequest(tDialStatus);
+	
+	INFO_PRINTF3(_L("Dial number %S\t Result = %d"), &KLtsyTelNumTwo, tDialStatus.Int());
+	
+	if (tDialStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number first call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number second call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Dial number three call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Dial call notify call status fail"));
+			return;
+			}		
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}
+	}
+
+void CTestLtsyCallControlBase::HangupCallOneL()
+	{
+	INFO_PRINTF1(_L("starting hang up call one"));
+	
+	TRequestStatus tHangupStatus;
+	TRequestStatus tNotifyStatus;	
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().HangUp(tHangupStatus);
+	User::WaitForRequest(tHangupStatus);
+	
+	INFO_PRINTF2(_L("Hang up call one result = %d"), tHangupStatus.Int());
+	
+	if (tHangupStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		
+		RMobileCall::TMobileCallStatus tCallStatus;
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		User::LeaveIfError(tHangupStatus.Int());
+		}
+	}
+
+void CTestLtsyCallControlBase::HangupCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting hang up call two"));
+	
+	TRequestStatus tHangupStatus;
+	TRequestStatus tNotifyStatus;	
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().HangUp(tHangupStatus);
+	User::WaitForRequest(tHangupStatus);
+	
+	INFO_PRINTF2(_L("Hang up call one result = %d"), tHangupStatus.Int());
+	
+	if (tHangupStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(tNotifyStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		
+		RMobileCall::TMobileCallStatus tCallStatus;
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(tNotifyStatus, tCallStatus);
+		if (tNotifyStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("Hang up notify call status = %d"), tCallStatus);
+			}
+		else
+			{
+			INFO_PRINTF1(_L("Hang up notify call status fail"));
+			User::LeaveIfError(tNotifyStatus.Int());
+			}
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		User::LeaveIfError(tHangupStatus.Int());
+		}	
+	}
+
+void CTestLtsyCallControlBase::CloseCallOne()
+	{
+	INFO_PRINTF1(_L("starting close call one"));
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Close();
+	}
+
+void CTestLtsyCallControlBase::CloseCallTwo()
+	{
+	INFO_PRINTF1(_L("starting close call two"));
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Close();	
+	}
+
+void CTestLtsyCallControlBase::OpenCallOneL()
+	{
+	INFO_PRINTF1(_L("starting open call one"));
+	
+	User::LeaveIfError(iLtsyModel.CallSharedData().VoiceCallOne().OpenNewCall(iLtsyModel.CallSharedData().VoiceLine()));
+	}
+
+void CTestLtsyCallControlBase::OpenCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting open call two"));
+	
+	User::LeaveIfError(iLtsyModel.CallSharedData().VoiceCallTwo().OpenNewCall(iLtsyModel.CallSharedData().VoiceLine()));	
+	}
+
+void CTestLtsyCallControlBase::HoldCallOne()
+	{
+	INFO_PRINTF1(_L("starting hold call one"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	TRequestStatus iCallEvent;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyCallEvent(iCallEvent, tCallEvent);	
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Hold(iStatus);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(_L("Hold call one result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Hold call notify call status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Hold call notify call Event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}
+	}
+
+void CTestLtsyCallControlBase::HoldCallTwo()
+	{
+	INFO_PRINTF1(_L("starting hold call two"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	TRequestStatus iCallEvent;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyCallEvent(iCallEvent, tCallEvent);	
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Hold(iStatus);
+	User::WaitForRequest(iStatus);
+	INFO_PRINTF2(_L("Hold call two result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Hold call notify call status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Hold call notify call Event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}	
+	}
+	
+void CTestLtsyCallControlBase::ResumeCallOne()
+	{
+	INFO_PRINTF1(_L("starting resume call one"));
+	
+	TRequestStatus iStatus;
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	
+	TRequestStatus iCallEvent;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyCallEvent(iCallEvent, tCallEvent);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Resume(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("Resume call one result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Resume call one status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Resume call one call event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}
+	}
+
+void CTestLtsyCallControlBase::ResumeCallTwo()
+	{
+	INFO_PRINTF1(_L("starting resume call two"));
+	
+	TRequestStatus iStatus;
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	
+	TRequestStatus iCallEvent;
+	RMobileCall::TMobileCallEvent tCallEvent;
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyCallEvent(iCallEvent, tCallEvent);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Resume(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("Resume call two result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("Resume call two status = %d"), tCallStatus);
+		
+		User::WaitForRequest(iCallEvent);
+		INFO_PRINTF2(_L("Resume call two call event = %d"), tCallEvent);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyCallEvent);
+		}	
+	}
+
+void CTestLtsyCallControlBase::SwapCallOne()
+	{
+	INFO_PRINTF1(_L("starting swap call one"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().Swap(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("call one swap result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("call one swap status = %d"), tCallStatus);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallOne().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}
+	}
+	
+void CTestLtsyCallControlBase::NotifyCallOne()
+	{
+	INFO_PRINTF1(_L("starting notify call one"));
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	User::WaitForRequest(iCallChangeStatus);
+	INFO_PRINTF3(_L("call one after swap result = %d\tstatus = %d"), iCallChangeStatus.Int(), tCallStatus);	
+	}
+
+void CTestLtsyCallControlBase::NotifyCallTwo()
+	{
+	INFO_PRINTF1(_L("starting notify call two"));
+	
+	TRequestStatus iCallChangeStatus;
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	User::WaitForRequest(iCallChangeStatus);
+	INFO_PRINTF3(_L("call two after swap result = %d\tstatus = %d"), iCallChangeStatus.Int(), tCallStatus);		
+	}
+
+void CTestLtsyCallControlBase::SwapCallTwo()
+	{
+	INFO_PRINTF1(_L("starting swap call two"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().Swap(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("call two swap result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		INFO_PRINTF2(_L("call two swap status = %d"), tCallStatus);
+		}
+	else
+		{
+		iLtsyModel.CallSharedData().VoiceCallTwo().CancelAsyncRequest(EMobileCallNotifyMobileCallStatusChange);
+		}	
+	}
+
+void CTestLtsyCallControlBase::NotifyIncomingCallOneL()
+	{
+	INFO_PRINTF1(_L("starting notify incoming call one"));
+	
+	TName name;
+	TRequestStatus iNotifyIncomingCallStatus;
+	iLtsyModel.CallSharedData().VoiceLine().NotifyIncomingCall(iNotifyIncomingCallStatus, name);
+	User::WaitForRequest(iNotifyIncomingCallStatus);
+	
+	INFO_PRINTF2(_L("Notify incoming call result = %d"), iNotifyIncomingCallStatus.Int());
+	
+	if (iNotifyIncomingCallStatus.Int() == KErrNone)
+		{
+		INFO_PRINTF3(_L("Notify incoming call %S Result = %d"), &name, iNotifyIncomingCallStatus.Int());
+		
+		INFO_PRINTF1(_L("Starting Open Call one for incoming call..."));
+		
+		TInt nRes = iLtsyModel.CallSharedData().VoiceCallOne().OpenExistingCall(iLtsyModel.CallSharedData().VoiceLine(), name);
+
+		//Get Call info
+		RMobileCall::TMobileCallInfoV1 tCallInfo;
+		RMobileCall::TMobileCallInfoV1Pckg tCallInfoPckg(tCallInfo);
+		iLtsyModel.CallSharedData().VoiceCallOne().GetMobileCallInfo(tCallInfoPckg);
+		
+		INFO_PRINTF2(_L("Remote call service(voice=1,data=3,fax=5) = %d"), tCallInfo.iService);
+
+		INFO_PRINTF2(_L("Remote call telnum = %S"), &(tCallInfo.iRemoteParty.iRemoteNumber.iTelNumber));
+		
+		}
+	else
+		{
+		User::LeaveIfError(iNotifyIncomingCallStatus.Int());
+		}
+	}
+
+void CTestLtsyCallControlBase::AnswerIncomingCallOneL()
+	{
+	INFO_PRINTF1(_L("starting answering incoming call one"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallOne().AnswerIncomingCall(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("answering call result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("first answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("second answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		}
+	else
+		{
+		User::LeaveIfError(iStatus.Int());
+		}
+	}
+
+void CTestLtsyCallControlBase::AnswerIncomingCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting answering incoming call two"));
+	
+	TRequestStatus iStatus;
+	TRequestStatus iCallChangeStatus;
+	
+	RMobileCall::TMobileCallStatus tCallStatus;
+	iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+	
+	iLtsyModel.CallSharedData().VoiceCallTwo().AnswerIncomingCall(iStatus);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("answering call result = %d"), iStatus.Int());
+	
+	if (iStatus.Int() == KErrNone)
+		{
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("first answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		iLtsyModel.CallSharedData().VoiceCallTwo().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("second answering call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		
+		iLtsyModel.CallSharedData().VoiceCallOne().NotifyMobileCallStatusChange(iCallChangeStatus, tCallStatus);
+		User::WaitForRequest(iCallChangeStatus);
+		if (iCallChangeStatus.Int() == KErrNone)
+			{
+			INFO_PRINTF2(_L("call one swith call status = %d"), tCallStatus);
+			}
+		else
+			{
+			User::LeaveIfError(iCallChangeStatus.Int());
+			}
+		
+		}
+	else
+		{
+		User::LeaveIfError(iStatus.Int());
+		}	
+	}
+
+void CTestLtsyCallControlBase::NotifyIncomingCallTwoL()
+	{
+	INFO_PRINTF1(_L("starting notify incoming call two"));
+	
+	TName name;
+	TRequestStatus iNotifyIncomingCallStatus;
+	iLtsyModel.CallSharedData().VoiceLine().NotifyIncomingCall(iNotifyIncomingCallStatus, name);
+	User::WaitForRequest(iNotifyIncomingCallStatus);
+	
+	INFO_PRINTF2(_L("Notify incoming call result = %d"), iNotifyIncomingCallStatus.Int());
+	
+	if (iNotifyIncomingCallStatus.Int() == KErrNone)
+		{
+		INFO_PRINTF3(_L("Notify incoming call %S Result = %d"), &name, iNotifyIncomingCallStatus.Int());
+		
+		INFO_PRINTF1(_L("Starting Open Call one for incoming call..."));
+		
+		TInt nRes = iLtsyModel.CallSharedData().VoiceCallTwo().OpenExistingCall(iLtsyModel.CallSharedData().VoiceLine(), name);
+
+		//Get Call info
+		RMobileCall::TMobileCallInfoV1 tCallInfo;
+		RMobileCall::TMobileCallInfoV1Pckg tCallInfoPckg(tCallInfo);
+		iLtsyModel.CallSharedData().VoiceCallTwo().GetMobileCallInfo(tCallInfoPckg);
+		
+		INFO_PRINTF2(_L("Remote call service(voice=1,data=3,fax=5) = %d"), tCallInfo.iService);
+
+		INFO_PRINTF2(_L("Remote call telnum = %S"), &(tCallInfo.iRemoteParty.iRemoteNumber.iTelNumber));
+		
+		}	
+	else
+		{
+		User::LeaveIfError(iNotifyIncomingCallStatus.Int());
+		}
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolcustomapiterminateallcalls.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,67 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+#include "testltsycallcontrolcustomapiterminateallcalls.h"
+
+CTestLtsyCallControlCustomAPITerminateAllCalls::CTestLtsyCallControlCustomAPITerminateAllCalls(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+CTestLtsyCallControlCustomAPITerminateAllCalls::~CTestLtsyCallControlCustomAPITerminateAllCalls()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlCustomAPITerminateAllCalls::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlCustomAPITerminateAllCalls::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,NotifyIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call one"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, AnswerIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call one"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, CustomAPITerminateAllCallsL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when terminat all calls"),err);
+			return TestStepResult();
+			}
+		
+		//Close call
+		CloseCallOne();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialbadcall.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,61 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontroldialbadcall.h"
+
+CTestLtsyCallControlDialBadCall::CTestLtsyCallControlDialBadCall(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+CTestLtsyCallControlDialBadCall::~CTestLtsyCallControlDialBadCall()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlDialBadCall::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlDialBadCall::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		//Open Call
+		TRAPD(err,OpenCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when opne call two"),err);
+			return TestStepResult();
+			}
+				
+		TRAP(err, CallOneDialBadNumber());
+		if (err == KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when dial bad telephone number"),err);
+			return TestStepResult();			
+			}
+						
+		//Close call
+		CloseCallOne();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialemergencycall.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,63 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+#include "testltsycallcontroldialemergencycall.h"
+
+//const define
+_LIT16(KLtsyEmergencyNum, "58848158");
+
+
+CTestLtsyCallControlDialEmergencyCall::CTestLtsyCallControlDialEmergencyCall(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlDialEmergencyCall::~CTestLtsyCallControlDialEmergencyCall()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlDialEmergencyCall::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlDialEmergencyCall::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,iLtsyModel.CallSharedData().EmergencyCall().OpenNewCall(iLtsyModel.CallSharedData().VoiceLine()));
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when open emergency call"),err);
+			return TestStepResult();			
+			}
+		}
+	
+	TRequestStatus iStatus;
+	iLtsyModel.CallSharedData().EmergencyCall().DialEmergencyCall(iStatus, KLtsyEmergencyNum);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("Dial emergency call result = %d"),iStatus.Int());
+	
+	User::After(1000*4000);
+	
+	iLtsyModel.CallSharedData().EmergencyCall().Close();
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialemergencycallstopallcalls.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,76 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontroldialemergencycallstopallcalls.h"
+
+_LIT16(KLtsyEmergencyTelNum, "58848157");
+
+CTestLtsyCallControlDialEmergencyCallStopAllCall::CTestLtsyCallControlDialEmergencyCallStopAllCall(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlDialEmergencyCallStopAllCall::~CTestLtsyCallControlDialEmergencyCallStopAllCall()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlDialEmergencyCallStopAllCall::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlDialEmergencyCallStopAllCall::doTestStepL()"));
+	
+	TRAPD(err,OpenCallOneL());
+	if (err != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF2(_L("The error was %d when opne call one"),err);
+		return TestStepResult();
+		}			
+	
+	DialCallOne();
+	
+	User::After(1000*2000);
+
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,iLtsyModel.CallSharedData().EmergencyCall().OpenNewCall(iLtsyModel.CallSharedData().VoiceLine()));
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when open emergency call"),err);
+			return TestStepResult();			
+			}
+		}	
+	
+	TRequestStatus iStatus;
+	iLtsyModel.CallSharedData().EmergencyCall().DialEmergencyCall(iStatus, KLtsyEmergencyTelNum);
+	User::WaitForRequest(iStatus);
+	
+	INFO_PRINTF2(_L("Dial emergency call result = %d"),iStatus.Int());
+	
+	User::After(1000*4000);
+	
+	iLtsyModel.CallSharedData().EmergencyCall().Close();
+	
+	CloseCallOne();
+	
+	return TestStepResult();
+	}	
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialhangupcase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,66 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontroldialhangupcase.h"
+
+CTestLtsyCallControlDialHangupCase::CTestLtsyCallControlDialHangupCase(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+CTestLtsyCallControlDialHangupCase::~CTestLtsyCallControlDialHangupCase()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlDialHangupCase::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlDialHangupCase::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		//Open Call
+		TRAPD(err,OpenCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when opne call two"),err);
+			return TestStepResult();
+			}
+		
+		DialCallTwo();
+		
+		User::After(1000*1000);
+		
+		//Hang up call
+		TRAP(err, HangupCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when hang up call two"),err);
+			return TestStepResult();
+			}
+		
+		//Close call
+		CloseCallTwo();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontroldialselfcall.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,61 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontroldialselfcall.h"
+
+CTestLtsyCallControlDialSelfCall::CTestLtsyCallControlDialSelfCall(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+CTestLtsyCallControlDialSelfCall::~CTestLtsyCallControlDialSelfCall()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlDialSelfCall::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlDialSelfCall::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		//Open Call
+		TRAPD(err,OpenCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when opne call two"),err);
+			return TestStepResult();
+			}
+				
+		TRAP(err, CallOneDialSelfNumber());
+		if (err == KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when dial bad telephone number"),err);
+			return TestStepResult();			
+			}
+						
+		//Close call
+		CloseCallOne();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolnotifyincomingcallcase1.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,62 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontrolnotifyincomingcallcase1.h"
+
+
+CTestLtsyCallControlNotifyIncomingCallCase1::CTestLtsyCallControlNotifyIncomingCallCase1(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlNotifyIncomingCallCase1::~CTestLtsyCallControlNotifyIncomingCallCase1()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlNotifyIncomingCallCase1::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlNotifyIncomingCallCase1::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,NotifyIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, AnswerIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call"),err);
+			return TestStepResult();
+			}
+		
+		//Close call
+		CloseCallOne();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolnotifyincomingcallcase2.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,100 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontrolnotifyincomingcallcase2.h"
+
+
+CTestLtsyCallControlNotifyIncomingCallCase2::CTestLtsyCallControlNotifyIncomingCallCase2(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlNotifyIncomingCallCase2::~CTestLtsyCallControlNotifyIncomingCallCase2()
+	{
+	
+	}
+
+
+TVerdict CTestLtsyCallControlNotifyIncomingCallCase2::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlNotifyIncomingCallCase2::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,NotifyIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call one"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, AnswerIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call one"),err);
+			return TestStepResult();
+			}
+		
+		User::After(1000*1000);
+		
+		TRAP(err, NotifyIncomingCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call two"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, AnswerIncomingCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call two"),err);
+			return TestStepResult();
+			}		
+		
+		TRAP(err ,HangupCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when hang up call one"),err);
+			return TestStepResult();
+			}	
+		
+		TRAP(err ,HangupCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when hang up call two"),err);
+			return TestStepResult();
+			}			
+		
+		//Close call one
+		CloseCallOne();
+		
+		//Close call two
+		CloseCallTwo();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolnotifyincomingcallcase3.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,77 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontrolnotifyincomingcallcase3.h"
+
+
+CTestLtsyCallControlNotifyIncomingCallCase3::CTestLtsyCallControlNotifyIncomingCallCase3(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlNotifyIncomingCallCase3::~CTestLtsyCallControlNotifyIncomingCallCase3()
+	{
+	
+	}
+
+
+TVerdict CTestLtsyCallControlNotifyIncomingCallCase3::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlNotifyIncomingCallCase3::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,NotifyIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call one"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, AnswerIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call one"),err);
+			return TestStepResult();
+			}
+		
+		User::After(1000*1000);
+		
+		HoldCallOne();
+		
+		ResumeCallOne();
+		
+		TRAP(err, HangupCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when Hang up call one"),err);
+			return TestStepResult();
+			}		
+		
+		//Close call one
+		CloseCallOne();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolphoneterminateallcalls.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,71 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontrolphoneterminateallcalls.h"
+
+CTestLtsyCallControlPhoneTerminateAllCalls::CTestLtsyCallControlPhoneTerminateAllCalls(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlPhoneTerminateAllCalls::~CTestLtsyCallControlPhoneTerminateAllCalls()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlPhoneTerminateAllCalls::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlPhoneTerminateAllCalls::doTestStepL()"));
+	
+	TRAPD(err,OpenCallOneL());
+	if (err != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF2(_L("The error was %d when opne call one"),err);
+		return TestStepResult();
+		}			
+	
+	DialCallOne();
+
+	TRAP(err,OpenCallTwoL());
+	if (err != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF2(_L("The error was %d when opne call two"),err);
+		return TestStepResult();
+		}		
+	
+	DialCallTwo();
+
+	TRAP(err, PhoneTerminateAllCallsL());
+	if (err != KErrNone)
+		{
+		SetTestStepResult(EFail);
+		INFO_PRINTF2(_L("The error was %d when phone terminate all calls"),err);
+		return TestStepResult();			
+		}	
+	
+	CloseCallOne();
+	
+	CloseCallTwo();
+	
+	return TestStepResult();
+	}	
+	
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallcontrolswapcalls.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,109 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsycallcontrolswapcalls.h"
+
+CTestLtsyCallControlSwapCalls::CTestLtsyCallControlSwapCalls(CTestLtsyModel& aModel)
+	: CTestLtsyCallControlBase(aModel)
+	{
+	
+	}
+
+
+CTestLtsyCallControlSwapCalls::~CTestLtsyCallControlSwapCalls()
+	{
+	
+	}
+
+TVerdict CTestLtsyCallControlSwapCalls::doTestStepL()
+	{
+	INFO_PRINTF1(_L("starting CTestLtsyCallControlSwapCalls::doTestStepL()"));
+	
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,NotifyIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call"),err);
+			return TestStepResult();
+			}
+		
+		TRAP(err, AnswerIncomingCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call"),err);
+			return TestStepResult();
+			}
+		
+		User::After(1000*1000);
+		
+		TRAP(err,NotifyIncomingCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when notify incoming call"),err);
+			return TestStepResult();
+			}		
+
+		TRAP(err, AnswerIncomingCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when answer incoming call"),err);
+			return TestStepResult();
+			}		
+		
+		SwapCallOne();
+		
+		NotifyCallTwo();
+		
+		SwapCallTwo();
+		
+		NotifyCallOne();
+		
+		TRAP(err, HangupCallOneL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when hang up call  one"),err);
+			return TestStepResult();			
+			}
+		
+		
+		TRAP(err, HangupCallTwoL());
+		if (err != KErrNone)
+			{
+			SetTestStepResult(EFail);
+			INFO_PRINTF2(_L("The error was %d when hang up call  two"),err);
+			return TestStepResult();			
+			}
+		
+		//Close call
+		CloseCallOne();
+		
+		//Close call
+		CloseCallTwo();
+		}
+	
+	return TestStepResult();
+	}
+
+//End of file
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsycallshareddata.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,81 @@
+// TestTelephonyCallSharedData.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyCallSharedData
+
+// CTSY include
+
+// user include
+#include "testltsycallshareddata.h"
+
+
+CTestLtsyCallSharedData* CTestLtsyCallSharedData::NewL()
+	{
+	CTestLtsyCallSharedData* self = new (ELeave) CTestLtsyCallSharedData;
+	CleanupStack::PushL(self);
+	
+	self->ConstructL();
+	
+	CleanupStack::Pop();
+	return self;
+	}
+
+CTestLtsyCallSharedData::~CTestLtsyCallSharedData()
+	{
+	iVoiceLine.Close();
+	
+	iVoiceCallOne.Close();
+	
+	iVoiceCallTwo.Close();
+	
+	iEmergencyCall.Close();
+	
+	iMmCustomAPI.Close();
+	
+	delete iThirdPartyTel;
+	iThirdPartyTel = NULL;
+	}
+
+
+CTestLtsyCallSharedData::CTestLtsyCallSharedData()
+	{
+	
+	}
+
+
+void CTestLtsyCallSharedData::ConstructL()
+	{
+	
+	}
+
+RLine& CTestLtsyCallSharedData::VoiceLine()
+	{
+	return iVoiceLine;
+	}
+
+RMobileCall& CTestLtsyCallSharedData::VoiceCallOne()
+	{
+	return iVoiceCallOne;
+	}
+
+RMobileCall& CTestLtsyCallSharedData::VoiceCallTwo()
+	{
+	return iVoiceCallTwo;
+	}
+
+RMobileCall& CTestLtsyCallSharedData::EmergencyCall()
+	{
+	return iEmergencyCall;
+	}
+
+RMmCustomAPI& CTestLtsyCallSharedData::MmCustomAPI()
+	{
+	return iMmCustomAPI;
+	}
+
+CTelephony*& CTestLtsyCallSharedData::ThirdPartyTelephony()
+	{
+	return iThirdPartyTel;
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyclosephone.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+//  TestTelephonyClosePhone.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyClosePhone
+
+// user include
+#include "TestLtsyClosePhone.h"
+
+// member functions
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyClosePhone::CTestLtsyClosePhone( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyClosePhone::~CTestLtsyClosePhone()
+	{
+	
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will close the shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyClosePhone::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TestClosePhone();
+		}
+
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyclosesms.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,73 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyclosesms.h"
+
+CTestLtsyCloseSms::CTestLtsyCloseSms(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyCloseSms::~CTestLtsyCloseSms()
+	{
+	}
+
+CTestLtsyCloseSms* CTestLtsyCloseSms::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyCloseSms* self = new (ELeave)CTestLtsyCloseSms(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyCloseSms* CTestLtsyCloseSms::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyCloseSms* self=CTestLtsyCloseSms::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyCloseSms::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyCloseSms::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyCloseSms::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyCloseSms::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyCloseSms::doTestStepL called"));
+	TRAPD(err,CloseSmsL(););
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when close sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyCloseSms::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyCloseSms::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyclosesmsstore.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,73 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyclosesmsstore.h"
+
+CTestLtsyCloseSmsStore::CTestLtsyCloseSmsStore(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyCloseSmsStore::~CTestLtsyCloseSmsStore()
+	{
+	}
+
+CTestLtsyCloseSmsStore* CTestLtsyCloseSmsStore::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyCloseSmsStore* self = new (ELeave)CTestLtsyCloseSmsStore(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyCloseSmsStore* CTestLtsyCloseSmsStore::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyCloseSmsStore* self=CTestLtsyCloseSmsStore::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyCloseSmsStore::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyCloseSmsStore::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyCloseSmsStore::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyCloseSmsStore::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyCloseSmsStore::doTestStepL called"));
+	TRAPD(err,CloseSmsStoreL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when close sms store"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyCloseSmsStore::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyCloseSmsStore::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetmessagestoreinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,89 @@
+//
+// testltsygetmessagestoreinfo.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#include "testltsygetmessagestoreinfo.h"
+
+CTestLtsyGetMessageStoreInfo::CTestLtsyGetMessageStoreInfo(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyGetMessageStoreInfo::~CTestLtsyGetMessageStoreInfo()
+	{
+	}
+
+CTestLtsyGetMessageStoreInfo* CTestLtsyGetMessageStoreInfo::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyGetMessageStoreInfo* self = new (ELeave)CTestLtsyGetMessageStoreInfo(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyGetMessageStoreInfo* CTestLtsyGetMessageStoreInfo::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyGetMessageStoreInfo* self=CTestLtsyGetMessageStoreInfo::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyGetMessageStoreInfo::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyGetMessageStoreInfo::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyGetMessageStoreInfo::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyGetMessageStoreInfo::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyGetMessageStoreInfo::doTestStepL called"));
+	TRAPD(err,GetMessageStoreInfoL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when get message store info"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyGetMessageStoreInfo::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyGetMessageStoreInfo::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyGetMessageStoreInfo::GetMessageStoreInfoL()
+	{
+	TInt  smsIndex(0);             //smsIndex always is zero
+	TRequestStatus status;
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg smsInfoPckg(iInfo);
+	Sms().GetMessageStoreInfo(status,smsIndex,smsInfoPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("GetMessageStoreInfo() request status = %d"),r);
+	CheckMessageStoreInfoL();
+	INFO_PRINTF4(_L("GetMessageStoreInfo MobileTypeName = %S, TotalEntries=%d,UsedEntries=%d\n"),&iInfo.iName,iInfo.iTotalEntries,iInfo.iUsedEntries );
+	}
+
+void CTestLtsyGetMessageStoreInfo::CheckMessageStoreInfoL()
+	{
+	TBool matched = ETrue;
+	if (!iInfo.iName.Compare(KETelIccSmsStore) == 0)
+		{
+		INFO_PRINTF2(_L("The tel sms store name %s could not match with expect one"),&(iInfo.iName));
+		matched = EFalse;
+		}
+	if(!matched)
+		{
+		SetTestStepResult(EFail);
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonebatterycap.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,59 @@
+// TestLtsyGetPhoneBatteryCap.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyGetPhoneBatteryCap
+
+//system include
+#include <etelmm.h>
+#include <e32std.h>
+
+//user include
+
+#include "TestLtsyGetPhoneBatteryCap.h"
+
+
+/** Supported battery information capabilities. The supported 
+* capabilities are returned to the client when it requests them by calling
+* CMmPhoneTsy::GetBatteryCaps() 
+*/
+/**
+ * Constructor
+ * 
+ */
+CTestLtsyGetPhoneBatteryCap::CTestLtsyGetPhoneBatteryCap(CTestLtsyModel& aModel) 
+    : CTestLtsyPhoneStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyGetPhoneBatteryCap::~CTestLtsyGetPhoneBatteryCap()
+	{
+	}
+
+/**
+ * Invoked by the test execute framework for exercising functionality under test
+ * @return	EPass: The test passed succesfully;
+ EFail: The test failed;
+ EInconclusive: The result of the test was inconclusive;
+ ETestSuiteError: Error in the test suite;
+ EAbort: The test was aborted;
+ EIgnore: The test was unexecuted
+ */
+TVerdict CTestLtsyGetPhoneBatteryCap::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyGetPhoneInfo::doTestStepL Begin"));
+	if (TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetBatteryCaps());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonebatteryinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,103 @@
+// TestTelephonyGetPhoneTime.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyGetPhoneTime
+
+//system include
+#include <etelmm.h>
+#include <e32std.h>
+
+//user include
+
+#include "TestLtsyGetPhoneBatteryInfo.h"
+
+
+/** Supported battery information capabilities. The supported 
+* capabilities are returned to the client when it requests them by calling
+* CMmPhoneTsy::GetBatteryCaps() 
+*/
+/**
+ * Constructor
+ * 
+ */
+CTestLtsyGetPhoneBatteryInfo::CTestLtsyGetPhoneBatteryInfo(CTestLtsyModel& aModel) 
+    : CTestLtsyPhoneStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyGetPhoneBatteryInfo::~CTestLtsyGetPhoneBatteryInfo()
+	{
+	}
+
+/**
+ * Invoked by the test execute framework for exercising functionality under test
+ * @return	EPass: The test passed succesfully;
+ EFail: The test failed;
+ EInconclusive: The result of the test was inconclusive;
+ ETestSuiteError: Error in the test suite;
+ EAbort: The test was aborted;
+ EIgnore: The test was unexecuted
+ */
+TVerdict CTestLtsyGetPhoneBatteryInfo::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyGetPhoneInfo::doTestStepL Begin"));
+	if (TestStepResult() == EPass)
+		{
+		GetBatteryCaps();
+		TRequestStatus reqStatus;
+		SharedPhone().GetBatteryInfo(reqStatus, iBatteryInfo);
+		User::WaitForRequest(reqStatus);
+		if (reqStatus==KErrNone)
+			{
+			INFO_PRINTF2(_L("Battery status : %d\n"), iBatteryInfo.iStatus);
+			INFO_PRINTF2(_L("Battery charge level : %d\n"), iBatteryInfo.iChargeLevel);
+			}
+		else
+			{
+			INFO_PRINTF2(_L("Battery charge, Error %d returned.\n"), reqStatus.Int());
+			}
+		}
+	return TestStepResult();
+	}
+
+/**
+ * 
+ * Get battery caps
+ * 
+ */
+void CTestLtsyGetPhoneBatteryInfo::GetBatteryCaps()
+	{
+	TUint32 caps;
+	TInt res = SharedPhone().GetBatteryCaps(caps);
+	if (res != KErrNone)
+		{
+		ERR_PRINTF1(_L("Failed to Check return value."));
+		}
+	}
+
+/**
+ * 
+ * Notify battery info change or not
+ * 
+ */
+void CTestLtsyGetPhoneBatteryInfo::NotifyBatteryInfoChangeL()
+	{
+	TRequestStatus status;
+	RMobilePhone::TMobilePhoneBatteryInfoV1 batInfo;
+	TUint twentyCharge = 20;
+	SharedPhone().NotifyBatteryInfoChange(status, batInfo);
+
+	User::WaitForRequest(status);
+	if(batInfo.iStatus != RMobilePhone::EBatteryConnectedButExternallyPowered)
+		{
+		INFO_PRINTF1(_L("Failed to Check Phone battery status."));
+		}
+	if(batInfo.iChargeLevel != twentyCharge)
+		{
+		INFO_PRINTF1(_L("Failed to Check Phone battery charge level."));
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonesignalcap.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,54 @@
+// TestLtsyGetPhoneSignalCap.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyGetPhoneSignalCap
+
+//system include
+#include <etelmm.h>
+
+//user include
+
+#include "TestLtsyGetPhoneSignalCap.h"
+
+/**
+ * Constructor
+ * 
+ */
+CTestLtsyGetPhoneSignalCap::CTestLtsyGetPhoneSignalCap(CTestLtsyModel& aModel)
+    :CTestLtsyPhoneStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyGetPhoneSignalCap::~CTestLtsyGetPhoneSignalCap()
+	{
+	}
+
+/**
+ * Invoked by the test execute framework for exercising functionality under test
+ * @return	EPass: The test passed succesfully;
+		    EFail: The test failed;
+		    EInconclusive: The result of the test was inconclusive;
+		    ETestSuiteError: Error in the test suite;
+		    EAbort: The test was aborted;
+		    EIgnore: The test was unexecuted
+ */	
+
+TVerdict CTestLtsyGetPhoneSignalCap::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestTelePhonyGetPhoneInfo::doTestStepL Begin"));
+	if (TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetSignalCaps());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsygetphonesignalstrength.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,103 @@
+// TestTelephonyGetPhonesingalStrength.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyGetPhonesingalStrength
+
+//system include
+#include <etelmm.h>
+
+//user include
+
+#include "TestLtsyGetPhoneSignalStrength.h"
+
+/**
+ * Constructor
+ * 
+ */
+CTestLtsyGetPhoneSignalStrength::CTestLtsyGetPhoneSignalStrength(CTestLtsyModel& aModel)
+    :CTestLtsyPhoneStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyGetPhoneSignalStrength::~CTestLtsyGetPhoneSignalStrength()
+	{
+	}
+
+/**
+ * Invoked by the test execute framework for exercising functionality under test
+ * @return	EPass: The test passed succesfully;
+		    EFail: The test failed;
+		    EInconclusive: The result of the test was inconclusive;
+		    ETestSuiteError: Error in the test suite;
+		    EAbort: The test was aborted;
+		    EIgnore: The test was unexecuted
+ */	
+
+TVerdict CTestLtsyGetPhoneSignalStrength::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestTelePhonyGetPhoneInfo::doTestStepL Begin"));
+	if (TestStepResult() == EPass)
+		{
+		
+		GetSignalCaps();
+		TRequestStatus reqStatus;
+		SharedPhone().GetSignalStrength(reqStatus, iSignalStrength, iBar);
+		User::WaitForRequest(reqStatus);
+		if (reqStatus==KErrNone)
+			{
+			INFO_PRINTF2(_L("Signal strength (in dBm) : %d\n"), iSignalStrength);
+			INFO_PRINTF2(_L("Signal strength (in display bars) : %d\n"), iBar);
+			}
+		else
+			{
+			INFO_PRINTF2(_L("Signal strength, Error %d returned.\n"), reqStatus.Int());
+			}
+	
+		}
+	return TestStepResult();
+	}
+
+/**
+ * Get signal caps
+ * 
+ */
+void CTestLtsyGetPhoneSignalStrength::GetSignalCaps()
+	{
+	TUint32 caps;
+	TInt res = SharedPhone().GetSignalCaps(caps);
+	if (res != KErrNone)
+		{
+		ERR_PRINTF2(_L("The result is not expect %d"),&res);
+		SetTestStepResult(EFail);
+		}
+	}
+
+/**
+ * Notify signal strength change
+ * 
+ */
+void CTestLtsyGetPhoneSignalStrength::NotifySignalStrengthChangeL()
+	{
+	TRequestStatus reqStatus;
+	TInt32 signalStrength(0);
+	TInt8 bar(0);
+	TInt32 completeSignalStrength(70);
+	TInt8 completeBar(3);
+	SharedPhone().NotifySignalStrengthChange(reqStatus, signalStrength, bar);
+	User::WaitForRequest(reqStatus);
+	if(bar != completeBar)
+		{
+		ERR_PRINTF1(_L("bar is not expect."));
+		SetTestStepResult(EFail);
+		}
+	if(signalStrength != completeSignalStrength)
+		{
+		ERR_PRINTF1(_L("signalStrength is not expect."));
+		SetTestStepResult(EFail);
+		}
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsymodel.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,276 @@
+//  TestTelephonyModel.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyModel
+
+// CTSY include
+#include <bautils.h>
+
+#include "TestLtsyModel.h"
+#include "testltsycallshareddata.h"
+#include "TestLtsyPktSharedData.h"
+#include "TestLtsySmsSharedData.h"
+#include "TestLtsyPhoneStoreSharedData.h"
+
+// the file used to identify if we run on real environment
+//_LIT(KCTsyRealEnvFilePath,    "z:\\systemtest\\testdata\\telephony\\ctsyrealenv.txt");
+//_LIT(KMmTsyModuleName, "PhoneTsy");
+
+/**
+ * Factory function
+ * 
+ */
+CTestLtsyModel* CTestLtsyModel::NewL()
+	{
+	CTestLtsyModel* self = new (ELeave) CTestLtsyModel();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyModel::~CTestLtsyModel()
+	{
+	delete iSharedPhoneEnv;
+	delete iCallSharedData;
+	delete iPktSharedData;
+	delete iSmsSharedData;
+	delete iPhoneStoreSharedData;
+	}
+
+/**
+ * 2nd Constructor 
+ * 
+ */
+void CTestLtsyModel::ConstructL()
+	{
+	iSharedPhoneEnv = CTestLtsySharedEnv::NewL();
+	iCallSharedData = CTestLtsyCallSharedData::NewL();
+	iPktSharedData 	= CTestLtsyPktSharedData::NewL();
+	iSmsSharedData = CTestLtsySmsSharedData::NewL();
+	iPhoneStoreSharedData = CTestLtsyPhoneStoreSharedData::NewL();
+	}
+	
+//=============================================================================
+// class CTestTelephonyAdaptorEnv
+//=============================================================================	
+/**
+ * Constructor
+ * 
+ */
+CTestLtsySharedEnv::CTestLtsySharedEnv()
+    {
+    // reset iPhoneInitialized
+    iPhoneInitialized = EFalse;
+    iPhoneIndex = -1;
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsySharedEnv::~CTestLtsySharedEnv()
+    {     
+    ClosePhone();
+    DestroyTelephony();
+    }
+
+/**
+ * Factory function
+ * 
+ */
+CTestLtsySharedEnv* CTestLtsySharedEnv::NewL()
+    {
+    CTestLtsySharedEnv* self = new (ELeave) CTestLtsySharedEnv();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+/**
+ * 2nd constructor
+ */
+void CTestLtsySharedEnv::ConstructL()
+    {
+    }
+	
+/**
+ * Load phone module
+ * 
+ * @param const TDesC& aModuleName The phone module used by ETel server for loading a specific TSY
+ */
+void CTestLtsySharedEnv::LoadModuleL(const TDesC& aModuleName)
+    {	
+
+	RFs fs;
+	User::LeaveIfError(fs.Connect());
+	CleanupClosePushL(fs);
+	CleanupStack::PopAndDestroy(&fs);
+    
+	TInt ret = iSharedTelServer.LoadPhoneModule(aModuleName);
+
+	if (ret != KErrNone)
+		{
+		iSharedTelServer.Close();
+		User::Leave(ret);
+		}
+    }
+
+/**
+ * Open the shared phone
+ * 
+ * @param const TDesC& aModuleName The phone module used by ETel server for loading a specific TSY
+ */
+void CTestLtsySharedEnv::OpenPhoneL(const TDesC& aModuleName)
+    {
+    THandleInfo handleInfo;
+    iSharedTelServer.HandleInfo(&handleInfo);
+	if(iPhoneInitialized)
+	    {
+	    // a panic occurs if handleInfo.iNumThreads <= 0
+	    if(handleInfo.iNumThreads <= 0)
+	    	{
+	    	iSharedPhone = NULL;
+	        iPhoneInitialized = EFalse;
+	        iSharedTelServer.Close();
+	    	}
+		else
+		    {
+			// return if phone has already been opened before
+			return;
+			}
+	    }
+	
+	// make sure this pointer was NULL
+	ASSERT(iSharedPhone == NULL);
+	
+	// make a copy of module name
+	iModuleName.Copy(aModuleName);
+	
+	// start connect to ETel server
+	User::LeaveIfError(iSharedTelServer.Connect());
+	User::LeaveIfError(iSharedTelServer.ShareAuto());	
+
+	// start load module	
+	LoadModuleL(aModuleName);
+	
+	// check if we can find corresponding phone object according to passed TSY module name
+	if(!FindPhoneIndex())
+		{
+		// the phone index could not be found
+        User::Leave(KErrNotFound);		
+ 		}
+		
+	// create a new RMobilePhone instance
+	iSharedPhone = new (ELeave) RMobilePhone();
+	RTelServer::TPhoneInfo phoneInfo;
+	User::LeaveIfError(iSharedTelServer.GetPhoneInfo(iPhoneIndex,phoneInfo));
+	
+	// start openning phone
+	TInt ret = iSharedPhone->Open(iSharedTelServer,phoneInfo.iName);
+	if(ret != KErrNone)
+	    {
+		User::Leave(ret);
+		}
+	
+	iPhoneInitialized = ETrue;
+	}
+
+/**
+ * Find the phone index according to TSY name
+ * 
+ */
+TBool CTestLtsySharedEnv::FindPhoneIndex()
+	{
+	TInt phoneNum = 0;
+	TInt err = iSharedTelServer.EnumeratePhones(phoneNum);
+	if(err != KErrNone)
+		{
+		return EFalse;
+		}
+	
+	TBool found = EFalse;
+	for(TInt i = 0; i < phoneNum; i++)
+		{
+		RTelServer::TPhoneInfo phoneInfo;
+		TBuf<KModuleNameLen> moduleName;
+		err = iSharedTelServer.GetTsyName(i,moduleName);
+		if(err != KErrNone)
+			{
+			return EFalse;
+			}
+		else
+			{
+			if(moduleName.CompareF(iModuleName) == 0)
+				{
+				iPhoneIndex = i;
+				found = ETrue;
+				break;
+				}
+			}
+		}
+	
+	return found;
+	}
+
+/**
+ * Close the shared phone and server
+ * Client must call this function, if it has called OpenPhoneL().
+ * 
+ */
+void CTestLtsySharedEnv::ClosePhone()
+	{
+	// close and delete the shared phone
+	iSharedPhone->Close();
+	delete iSharedPhone;
+	iSharedPhone = NULL;
+	
+	// unload the phone module
+	iSharedTelServer.UnloadPhoneModule(iModuleName);
+	iSharedTelServer.Close();
+	
+	// reset iPhoneInitialized
+	iPhoneInitialized = EFalse;
+	}
+
+/**
+ * Create a CTelephony object and related resource. 
+ * 
+ */
+void CTestLtsySharedEnv::CreateTelephonyL()
+	{
+	iActiveSchaduler = new (ELeave) CActiveScheduler();
+	CActiveScheduler::Install(iActiveSchaduler);
+	
+	iTelephony = CTelephony::NewL();
+	}
+
+/**
+ * Delete CTelephony object related source.
+ * 
+ */
+void CTestLtsySharedEnv::DestroyTelephony()
+	{
+	
+	delete iActiveSchaduler;
+	iActiveSchaduler = NULL;
+	delete iTelephony;
+	iTelephony       = NULL;
+
+	delete iSharedPhone;
+	iSharedPhone = NULL;
+	
+	// reset iPhoneInitialized
+	iPhoneInitialized = EFalse;
+	}
+
+CTelephony* CTestLtsySharedEnv::Telephony()
+	{
+	return iTelephony;
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyopenphone.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,53 @@
+//  TestTelephonyOpenPhone.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestTelephonyOpenPhone
+
+// user include
+#include "TestLtsyOpenPhone.h"
+#include "TestLtsyCallSharedData.h"
+#include "TestLtsySmsSharedData.h"
+#include "TestLtsyPktSharedData.h"
+#include "TestLtsyPhoneStoreSharedData.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyOpenPhone::CTestLtsyOpenPhone( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyOpenPhone::~CTestLtsyOpenPhone()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyOpenPhone::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,TestOpenPhoneL());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyopensms.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,73 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyopensms.h"
+
+CTestLtsyOpenSms::CTestLtsyOpenSms(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyOpenSms::~CTestLtsyOpenSms()
+	{
+	}
+
+CTestLtsyOpenSms* CTestLtsyOpenSms::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyOpenSms* self = new (ELeave)CTestLtsyOpenSms(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyOpenSms* CTestLtsyOpenSms::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyOpenSms* self=CTestLtsyOpenSms::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyOpenSms::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyOpenSms::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyOpenSms::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyOpenSms::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyOpenSms::doTestStepL called"));
+	TRAPD(err,OpenSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when open sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyOpenSms::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyOpenSms::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyopensmsstore.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,73 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyopensmsstore.h"
+
+CTestLtsyOpenSmsStore::CTestLtsyOpenSmsStore(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyOpenSmsStore::~CTestLtsyOpenSmsStore()
+	{
+	}
+
+CTestLtsyOpenSmsStore* CTestLtsyOpenSmsStore::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyOpenSmsStore* self = new (ELeave)CTestLtsyOpenSmsStore(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyOpenSmsStore* CTestLtsyOpenSmsStore::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyOpenSmsStore* self=CTestLtsyOpenSmsStore::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyOpenSmsStore::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyOpenSmsStore::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyOpenSmsStore::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyOpenSmsStore::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyOpenSmsStore::doTestStepL called"));
+	TRAPD(err,OpenSmsStoreL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when open sms store"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyOpenSmsStore::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyOpenSmsStore::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkclose.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,80 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyphbkclose.h"
+
+CTestLtsyPhbkClose::CTestLtsyPhbkClose(CTestLtsyModel& aTestModel)
+    : CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkClose::~CTestLtsyPhbkClose()
+	{
+	}
+
+CTestLtsyPhbkClose* CTestLtsyPhbkClose::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkClose* self = new (ELeave)CTestLtsyPhbkClose(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkClose* CTestLtsyPhbkClose::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkClose* self=CTestLtsyPhbkClose::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkClose::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkClose::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkClose::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkClose::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkClose::doTestStepL called"));
+	TRAPD(err,ClosePhonebookL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when close phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkClose::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkClose::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkClose::ClosePhonebookL()
+	{
+	PhoneBookStore().Close();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkdelete.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,85 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyphbkdelete.h"
+
+CTestLtsyPhbkDelete::CTestLtsyPhbkDelete(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkDelete::~CTestLtsyPhbkDelete()
+	{
+	}
+
+CTestLtsyPhbkDelete* CTestLtsyPhbkDelete::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkDelete* self = new (ELeave)CTestLtsyPhbkDelete(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkDelete* CTestLtsyPhbkDelete::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkDelete* self=CTestLtsyPhbkDelete::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkDelete::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkDelete::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkDelete::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkDelete::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkDelete::doTestStepL called"));
+	TInt index = 10;
+	TRAPD(err,DeletePhonebookL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkDelete::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkDelete::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkDelete::DeletePhonebookL(TInt aIndex)
+	{
+	TRequestStatus status;
+	PhoneBookStore().Delete(status,aIndex);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("Delete() request status = %d"),r);
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkdeleteinvalidindex.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,102 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyphbkdeleteinvalidindex.h"
+
+CTestLtsyPhbkDeleteInvalidIndex::CTestLtsyPhbkDeleteInvalidIndex(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkDeleteInvalidIndex::~CTestLtsyPhbkDeleteInvalidIndex()
+	{
+	}
+
+CTestLtsyPhbkDeleteInvalidIndex* CTestLtsyPhbkDeleteInvalidIndex::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkDeleteInvalidIndex* self = new (ELeave)CTestLtsyPhbkDeleteInvalidIndex(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkDeleteInvalidIndex* CTestLtsyPhbkDeleteInvalidIndex::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkDeleteInvalidIndex* self=CTestLtsyPhbkDeleteInvalidIndex::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkDeleteInvalidIndex::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkDeleteInvalidIndex::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkDeleteInvalidIndex::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkDeleteInvalidIndex::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkDeleteInvalidIndex::doTestStepL called"));
+	TInt index = 251;
+	TRAPD(err,DeletePhonebookL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = 0;
+	TRAPD(err1,DeletePhonebookL(index));
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete phonebook"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = -5;
+	TRAPD(err2,DeletePhonebookL(index));
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete phonebook"),err2);
+	    SetTestStepResult(EFail);
+		}
+		
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkDeleteInvalidIndex::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkDeleteInvalidIndex::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkDeleteInvalidIndex::DeletePhonebookL(TInt aIndex)
+	{
+	TRequestStatus status;
+	PhoneBookStore().Delete(status,aIndex);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("Delete() request status = %d"),r);
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkgetstoreinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,88 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyphbkgetstoreinfo.h"
+
+CTestLtsyPhbkGetStoreInfo::CTestLtsyPhbkGetStoreInfo(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkGetStoreInfo::~CTestLtsyPhbkGetStoreInfo()
+	{
+	}
+
+CTestLtsyPhbkGetStoreInfo* CTestLtsyPhbkGetStoreInfo::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkGetStoreInfo* self = new (ELeave)CTestLtsyPhbkGetStoreInfo(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkGetStoreInfo* CTestLtsyPhbkGetStoreInfo::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkGetStoreInfo* self=CTestLtsyPhbkGetStoreInfo::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkGetStoreInfo::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkGetStoreInfo::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkGetStoreInfo::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkGetStoreInfo::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkGetStoreInfo::doTestStepL called"));
+	TRAPD(err,GetStoreInfoL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when get phonebook store info"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkGetStoreInfo::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkGetStoreInfo::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkGetStoreInfo::GetStoreInfoL()
+	{
+	TRequestStatus status;
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1 phoneStoreInfo;
+	RMobilePhoneStore::TMobilePhoneStoreInfoV1Pckg phoneStoreInfoPckg(phoneStoreInfo);
+	iModel.SharedEnv().Phone().GetPhoneStoreInfo(status, phoneStoreInfoPckg, KETelIccSmsStore);
+//	iModel.SharedEnv().Phone().GetPhoneStoreInfo(status, phoneStoreInfoPckg, KETelIccFdnPhoneBook);
+//	iiModel.SharedEnv().Phone().GetPhoneStoreInfo(status, phoneStoreInfoPckg, KETelIccAdnPhoneBook);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("GetPhoneStoreInfo() request status = %d"),r);
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkopen.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,81 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsyphbkopen.h"
+
+CTestLtsyPhbkOpen::CTestLtsyPhbkOpen(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkOpen::~CTestLtsyPhbkOpen()
+	{
+	}
+
+CTestLtsyPhbkOpen* CTestLtsyPhbkOpen::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkOpen* self = new (ELeave)CTestLtsyPhbkOpen(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkOpen* CTestLtsyPhbkOpen::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkOpen* self=CTestLtsyPhbkOpen::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkOpen::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkOpen::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkOpen::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkOpen::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkOpen::doTestStepL called"));
+	TRAPD(err,OpenPhonebookL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when open phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkOpen::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkOpen::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkOpen::OpenPhonebookL()
+	{
+	PhoneBookStore().Open(iModel.SharedEnv().Phone(),  KETelIccAdnPhoneBook);
+//	PhoneBookStore().Open(iModel.SharedEnv().Phone(),  KETelIccFdnPhoneBook);
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkread.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,133 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//system include 
+#include <mpbutil.h> 
+//user include
+#include "testltsyphbkread.h"
+//const defination
+_LIT(KExpectedText, "TelNo 010");
+_LIT(KExpectedNumber,"+123456010");
+const TUint KExpectedIndex = 10;
+
+CTestLtsyPhbkRead::CTestLtsyPhbkRead(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkRead::~CTestLtsyPhbkRead()
+	{
+	}
+
+CTestLtsyPhbkRead* CTestLtsyPhbkRead::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkRead* self = new (ELeave)CTestLtsyPhbkRead(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkRead* CTestLtsyPhbkRead::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkRead* self=CTestLtsyPhbkRead::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkRead::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkRead::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkRead::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkRead::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkRead::doTestStepL called"));
+	TInt index = 10;
+	TRAPD(err,ReadEntryL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when read phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkRead::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkRead::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkRead::ReadEntryL(TInt aIndex)
+	{
+	TRequestStatus status;
+	TBuf8<800> outputPbData;
+	TUint16 index(0);
+	TUint8 tonNpi;
+	TPtrC16 number(NULL,0);
+	TPtrC16 text(NULL,0);
+	TUint8 tagValue(0);
+	CPhoneBookBuffer::TPhBkTagType dataType;
+	
+	CPhoneBookBuffer* pbBuffer=new(ELeave) CPhoneBookBuffer(); // used to read phonebook data
+	CleanupStack::PushL(pbBuffer);
+	PhoneBookStore().Read(status,aIndex,1,outputPbData);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	// Set pbBuffer to point to received phonebook data
+	pbBuffer->Set(&outputPbData); 
+	// Start reading received phonebook data
+	pbBuffer->StartRead();       
+	while (pbBuffer->GetTagAndType(tagValue,dataType)==KErrNone)
+		{
+		switch (tagValue)
+			{
+		case RMobilePhoneBookStore::ETagPBAdnIndex:
+			pbBuffer->GetValue(index);			
+			break;
+		case RMobilePhoneBookStore::ETagPBTonNpi:
+			pbBuffer->GetValue(tonNpi);			
+			break;
+		case RMobilePhoneBookStore::ETagPBText:
+			pbBuffer->GetValue(text);			
+			break;
+		case RMobilePhoneBookStore::ETagPBNumber:
+			pbBuffer->GetValue(number);			
+			break;
+		default:
+			// An unsupported field type - just skip this value
+			pbBuffer->SkipValue(dataType);
+			break;
+			}
+		}
+	if((index != KExpectedIndex)||(text.MatchF(KExpectedText)==KErrNotFound)||
+			                      (number.MatchF(KExpectedNumber)==KErrNotFound))
+		{
+		SetTestStepResult(EFail);
+		}
+	CleanupStack::PopAndDestroy();             
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkreadinvalidindex.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,107 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//system include 
+#include <mpbutil.h> 
+//user include
+#include "testltsyphbkreadinvalidindex.h"
+
+
+
+CTestLtsyPhbkReadInvalidIndex::CTestLtsyPhbkReadInvalidIndex(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkReadInvalidIndex::~CTestLtsyPhbkReadInvalidIndex()
+	{
+	}
+
+CTestLtsyPhbkReadInvalidIndex* CTestLtsyPhbkReadInvalidIndex::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkReadInvalidIndex* self = new (ELeave)CTestLtsyPhbkReadInvalidIndex(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkReadInvalidIndex* CTestLtsyPhbkReadInvalidIndex::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkReadInvalidIndex* self=CTestLtsyPhbkReadInvalidIndex::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkReadInvalidIndex::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkReadInvalidIndex::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkReadInvalidIndex::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkReadInvalidIndex::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkReadInvalidIndex::doTestStepL called"));
+	TInt index = 0;
+	TRAPD(err,ReadEntryL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when read phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = -2;
+	TRAPD(err1,ReadEntryL(index));
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when read phonebook"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+    index = 600;
+	TRAPD(err2,ReadEntryL(index));
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when read phonebook"),err2);
+	    SetTestStepResult(EFail);
+		}
+	
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkReadInvalidIndex::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkReadInvalidIndex::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkReadInvalidIndex::ReadEntryL(TInt aIndex)
+	{
+	TRequestStatus status;
+	TBuf8<800> outputPbData;
+	PhoneBookStore().Read(status,aIndex,1,outputPbData);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkwrite.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,134 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//system include 
+#include <mpbutil.h> 
+//user include
+#include "testltsyphbkwrite.h"
+//const define
+const TUint8 KTypeOfNumber=0x81;
+
+CTestLtsyPhbkWrite::CTestLtsyPhbkWrite(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkWrite::~CTestLtsyPhbkWrite()
+	{
+	}
+
+CTestLtsyPhbkWrite* CTestLtsyPhbkWrite::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkWrite* self = new (ELeave)CTestLtsyPhbkWrite(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkWrite* CTestLtsyPhbkWrite::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkWrite* self=CTestLtsyPhbkWrite::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkWrite::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkWrite::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkWrite::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkWrite::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkWrite::doTestStepL called"));
+	TInt index = 10;
+	TRAPD(err,WriteEntryL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkWrite::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkWrite::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkWrite::WriteEntryL(TInt aIndex)
+	{
+	TRequestStatus status;
+	TBuf8<800> pbData; // Client reserved space for phonebook data
+	TInt ret;
+	    
+	_LIT16(KTel,"123456%03d");
+	_LIT16(KText,"TelNo %03d");
+	TBuf16<20> text(KTel), number(KText);
+
+	CPhoneBookBuffer* pbBuffer = new(ELeave) CPhoneBookBuffer(); // used to write phonebook data
+	CleanupStack::PushL(pbBuffer);
+	pbBuffer->Set(&pbData); // Set it to point to the Client buffer
+	pbBuffer->AddNewEntryTag();
+	// convert number into TLV format and append it to allocated buffer
+	TInt index = aIndex;
+	ret = pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBAdnIndex,(TUint16)index);
+	if( ret != KErrNone )
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+	number.Format(KTel(), index);
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBNumber, number);
+//	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBNewEntry, number);
+	if( ret != KErrNone )
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+	// convert number type into TLV format and append it to allocated buffer
+	TUint8 tonNpi=KTypeOfNumber; 
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBTonNpi, tonNpi);
+	if(ret!=KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+
+	text.Format(KText(), index);
+// convert text into TLV format and append it to allocated buffer
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBText, text);
+	if(ret != KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+	PhoneBookStore().Write(status, pbData,index);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	CleanupStack::PopAndDestroy();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphbkwriteinvalidindex.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,150 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//system include 
+#include <mpbutil.h> 
+//user include
+#include "testltsyphbkwriteinvalidindex.h"
+//const define
+const TUint8 KTypeOfNumber=0x81;
+
+CTestLtsyPhbkWriteInvalidIndex::CTestLtsyPhbkWriteInvalidIndex(CTestLtsyModel& aTestModel)
+	: CTestLtsyPhoneStoreBase(aTestModel)
+	{
+
+	}
+
+CTestLtsyPhbkWriteInvalidIndex::~CTestLtsyPhbkWriteInvalidIndex()
+	{
+	}
+
+CTestLtsyPhbkWriteInvalidIndex* CTestLtsyPhbkWriteInvalidIndex::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkWriteInvalidIndex* self = new (ELeave)CTestLtsyPhbkWriteInvalidIndex(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsyPhbkWriteInvalidIndex* CTestLtsyPhbkWriteInvalidIndex::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsyPhbkWriteInvalidIndex* self=CTestLtsyPhbkWriteInvalidIndex::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsyPhbkWriteInvalidIndex::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsyPhbkWriteInvalidIndex::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkWriteInvalidIndex::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkWriteInvalidIndex::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkWriteInvalidIndex::doTestStepL called"));
+	TInt index = -1;
+	TRAPD(err,WriteEntryL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write phonebook"),err);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = 0;
+	TRAPD(err1,WriteEntryL(index));
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write phonebook"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = 256;
+	TRAPD(err2,WriteEntryL(index));
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write phonebook"),err2);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhbkWriteInvalidIndex::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhbkWriteInvalidIndex::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsyPhbkWriteInvalidIndex::WriteEntryL(TInt aIndex)
+	{
+	TRequestStatus status;
+	TBuf8<800> pbData; // Client reserved space for phonebook data
+	TInt ret;
+	    
+	_LIT16(KTel,"123456%03d");
+	_LIT16(KText,"TelNo %03d");
+	TBuf16<20> text(KTel), number(KText);
+
+	CPhoneBookBuffer* pbBuffer = new(ELeave) CPhoneBookBuffer(); // used to write phonebook data
+	CleanupStack::PushL(pbBuffer);
+	pbBuffer->Set(&pbData); // Set it to point to the Client buffer
+	pbBuffer->AddNewEntryTag();
+	// convert number into TLV format and append it to allocated buffer
+	TInt index = aIndex;
+	ret = pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBAdnIndex,(TUint16)index);
+	if( ret != KErrNone )
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+	number.Format(KTel(), index);
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBNumber, number);
+//	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBNewEntry, number);
+	if( ret != KErrNone )
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+	// convert number type into TLV format and append it to allocated buffer
+	TUint8 tonNpi=KTypeOfNumber; 
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBTonNpi, tonNpi);
+	if(ret!=KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+
+	text.Format(KText(), index);
+// convert text into TLV format and append it to allocated buffer
+	ret=pbBuffer->PutTagAndValue(RMobilePhoneBookStore::ETagPBText, text);
+	if(ret != KErrNone)
+		{
+		CleanupStack::PopAndDestroy();
+		SetTestStepResult(EFail);
+		}
+	PhoneBookStore().Write(status, pbData,index);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	CleanupStack::PopAndDestroy();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonedetectednetworks.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetDetectedNetworks.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetDetectedNetworks
+
+// user include
+#include "TestLtsyPhoneGetDetectedNetworks.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetDetectedNetworks::CTestLtsyPhoneGetDetectedNetworks( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetDetectedNetworks::~CTestLtsyPhoneGetDetectedNetworks()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetDetectedNetworks::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetDetectedNetworksL());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonedetectednetworkscancel.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetDetectedNetworksCancel.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetDetectedNetworksCancel
+
+// user include
+#include "TestLtsyPhoneGetDetectedNetworksCancel.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetDetectedNetworksCancelCancel::CTestLtsyPhoneGetDetectedNetworksCancelCancel( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetDetectedNetworksCancelCancel::~CTestLtsyPhoneGetDetectedNetworksCancelCancel()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetDetectedNetworksCancelCancel::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetDetectedNetworksCancelL());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetcellinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetCellInfo.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetCellInfo
+
+// user include
+#include "TestLtsyPhoneGetCellInfo.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetCellInfo::CTestLtsyPhoneGetCellInfo( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetCellInfo::~CTestLtsyPhoneGetCellInfo()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetCellInfo::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetCellInfo());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetcurrentnetworkinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetCurrentNetworkInfo.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetCurrentNetworkInfo
+
+// user include
+#include "TestLtsyPhoneGetCurrentNetworkInfo.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetCurrentNetworkInfo::CTestLtsyPhoneGetCurrentNetworkInfo( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetCurrentNetworkInfo::~CTestLtsyPhoneGetCurrentNetworkInfo()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetCurrentNetworkInfo::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetCurrentNetworkInfo());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetfdnstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetFdnStatus.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetFdnStatus
+
+// user include
+#include "TestLtsyPhoneGetFdnStatus.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetFdnStatus::CTestLtsyPhoneGetFdnStatus( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetFdnStatus::~CTestLtsyPhoneGetFdnStatus()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetFdnStatus::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetFdnStatus());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegethomenetwork.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetHomeNetwork.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetHomeNetwork
+
+// user include
+#include "TestLtsyPhoneGetHomeNetwork.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetHomeNetwork::CTestLtsyPhoneGetHomeNetwork( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetHomeNetwork::~CTestLtsyPhoneGetHomeNetwork()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetHomeNetwork::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetHomeNetwork());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetnetworkregistrationstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetNetworkRegistrationStatus.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetNetworkRegistrationStatus
+
+// user include
+#include "TestLtsyPhoneGetNetworkRegistrationStatus.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetNetworkRegistrationStatus::CTestLtsyPhoneGetNetworkRegistrationStatus( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetNetworkRegistrationStatus::~CTestLtsyPhoneGetNetworkRegistrationStatus()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetNetworkRegistrationStatus::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetNetworkRegistrationStatus());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonegetphoneid.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneGetPhoneID.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneGetPhoneID
+
+// user include
+#include "TestLtsyPhoneGetPhoneID.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneGetPhoneID::CTestLtsyPhoneGetPhoneID( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneGetPhoneID::~CTestLtsyPhoneGetPhoneID()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneGetPhoneID::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GetPhoneId());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphoneregistercellinfochangenotification.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneRegisterCellInfoChangeNotification.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneRegisterCellInfoChangeNotification
+
+// user include
+#include "testltsyphoneregistercellinfochangenotification.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneRegisterCellInfoChangeNotification::CTestLtsyPhoneRegisterCellInfoChangeNotification( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneRegisterCellInfoChangeNotification::~CTestLtsyPhoneRegisterCellInfoChangeNotification()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneRegisterCellInfoChangeNotification::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,RegisterCellInfoChangeNotification());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphoneselectnetwork.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneSelectNetwork.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneSelectNetwork
+
+// user include
+#include "TestLtsyPhoneSelectNetwork.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneSelectNetwork::CTestLtsyPhoneSelectNetwork( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneSelectNetwork::~CTestLtsyPhoneSelectNetwork()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneSelectNetwork::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,SelectNetwork());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonesetnetworkselectionsetting.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+//  TestLtsyPhoneSetNetworkSelectionSetting.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPhoneSetNetworkSelectionSetting
+
+// user include
+#include "TestLtsyPhoneSetNetworkSelectionSetting.h"
+
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneSetNetworkSelectionSetting::CTestLtsyPhoneSetNetworkSelectionSetting( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPhoneStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneSetNetworkSelectionSetting::~CTestLtsyPhoneSetNetworkSelectionSetting()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPhoneSetNetworkSelectionSetting::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,SetNetworkSelectionSetting());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonestepbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,431 @@
+// TestTelephonyPktTestStepBase.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyPktTestStepBase
+#include <mmlist.h>
+#include <mmretrieve.h>
+// 	user include
+#include "TestLtsyPhoneStepBase.h"
+#include "te_integration_stltsysuitestepbase.h"
+#include "te_integration_stltsysuitedefs.h"
+
+// 
+_LIT(KTsyModuleName, "PhoneTsy");
+/**
+ * Constructor
+ */
+CTestLtsyPhoneStepBase::CTestLtsyPhoneStepBase(CTestLtsyModel& aModel)
+	:iModel(aModel),iSharedPhone(aModel.SharedEnv().Phone())
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyPhoneStepBase::~CTestLtsyPhoneStepBase()
+	{
+
+	}
+/**
+ * Get the shared phone
+ * 
+ */
+RMobilePhone& CTestLtsyPhoneStepBase::SharedPhone() 
+	{
+	return iSharedPhone;
+	}
+	
+TVerdict CTestLtsyPhoneStepBase::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhoneStepBase::doTestStepPreambleL()"));
+	// uncomment the following 3 lines if you have common pre setting to all the test steps in there
+	// CTe_integration_stltsySuiteStepBase::doTestStepPreambleL();
+	// if (TestStepResult()!=EPass)
+	//    return   TestStepResult();
+	// process some pre setting to this test step then set SetTestStepResult to EFail or Epass.
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+TVerdict CTestLtsyPhoneStepBase::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPhoneStepBase::doTestStepPostambleL()"));
+	// process something post setting to the test step
+	// uncomment the following line if you have common post setting to all the test steps in there
+	// CTe_integration_stltsySuiteStepBase::doTestStepPostambleL();
+	// uncomment the following line if you have post process or remove the following line if no post process
+	// SetTestStepResult(EPass);		// or EFail
+	return TestStepResult();
+	}
+void CTestLtsyPhoneStepBase::TestOpenPhoneL()
+	{
+	// reset all shared data to make sure we are going to run on a clean environment
+	//Open the shared phone
+	iModel.SharedEnv().OpenPhoneL(KTsyModuleName);
+	}
+void CTestLtsyPhoneStepBase::TestClosePhone()
+	{
+	iModel.SharedEnv().ClosePhone();	
+	}
+
+void CTestLtsyPhoneStepBase::GetFdnStatus()
+	{
+	INFO_PRINTF1(_L("GetFdnStatus() invoked......\n"));
+	TRequestStatus Status;
+	RMobilePhone::TMobilePhoneFdnStatus FdnStatus;
+	iSharedPhone.GetFdnStatus(Status,FdnStatus);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetFdnStatus() complete = %d\n"), Status.Int());
+	}
+void CTestLtsyPhoneStepBase::GetNetworkRegistrationStatus()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetNetworkRegistrationStatus() invoked......\n"));
+	RMobilePhone::TMobilePhoneRegistrationStatus RegStatus;
+	iSharedPhone.GetNetworkRegistrationStatus(Status,RegStatus);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetNetworkRegistrationStatus() complete = %d\n"), Status.Int());
+	}
+void CTestLtsyPhoneStepBase::GetHomeNetwork()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetHomeNetwork() invoked......\n"));
+	RMobilePhone::TMobilePhoneNetworkInfoV1  aNetworkInfo;
+	RMobilePhone::TMobilePhoneNetworkInfoV1Pckg aNetworkInfoBuf(aNetworkInfo); // package TMobilePhoneNetworkInfoV1 into a buffer
+	RMobilePhone::TMobilePhoneLocationAreaV1 aArea;
+	iSharedPhone.GetHomeNetwork(Status, aNetworkInfoBuf) ;
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetHomeNetwork() complete = %d\n"), Status.Int());
+	}
+
+//void CTestLtsyPhoneStepBase::GetServiceProviderName()
+//	{
+//	
+//	}
+void CTestLtsyPhoneStepBase::GetPhoneId()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetPhoneId() invoked......\n"));
+	RMobilePhone::TMobilePhoneIdentityV1 aPhoneId;
+	iSharedPhone.GetPhoneId(Status,aPhoneId);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetPhoneId() complete = %d\n"), Status.Int());
+	
+	}
+void CTestLtsyPhoneStepBase::GetDetectedNetworksL()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetDetectedNetworks() invoked......\n"));
+	CRetrieveMobilePhoneDetectedNetworks* Retriever = CRetrieveMobilePhoneDetectedNetworks::NewL(iSharedPhone);
+	Retriever->StartV2(Status);
+	User::After(50*1000*1000);
+	delete Retriever;
+	INFO_PRINTF1(_L("GetDetectedNetworks() invoked......OK\n"));
+	
+//	iList = iRetriever->RetrieveListV2L();
+	}
+void CTestLtsyPhoneStepBase::GetDetectedNetworksCancelL()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetDetectedNetworksCancel() invoked......\n"));
+	CRetrieveMobilePhoneDetectedNetworks* Retriever = CRetrieveMobilePhoneDetectedNetworks::NewL(iSharedPhone);
+	Retriever->StartV2(Status);
+	Retriever->Cancel();
+	User::After(50*1000*1000);
+	delete Retriever;
+	INFO_PRINTF1(_L("GetDetectedNetworksCancel() invoked......OK\n"));
+	}
+void CTestLtsyPhoneStepBase::SetNetworkSelectionSetting()
+/**
+*	3.10.12 Set Network Selection Setting
+*	void RMobilePhone::SetNetworkSelectionSetting(TRequestStatus& aReqStatus,
+*		const TDes8& aSetting) const
+*	This method is used by client application to set the way a phone will select a
+*	network. The new setting is supplied within the aSetting parameter, which is a
+*	packaged version of the TMobilePhoneNetworkSelectionV1V1 class above.
+*	In manual network selection, the user is able to select a network to camp on to
+*	from a list of detected networks. The selected network has to be accessible by the
+*	user, i.e. it is not a forbidden network.
+*	When a phone is using manual network selection, at power-up or after signal loss,
+*	it will try to register to the network that the user last selected. If this network
+*	is not available then it is up to the phone whether it tries to fall-back to
+*	automatic selection or leaves the phone in no service.
+*
+*/
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetNetworkSelectionSetting() invoked......\n"));
+	RMobilePhone::TMobilePhoneNetworkSelectionV1  localNetworkSel;
+	localNetworkSel.iMethod = RMobilePhone::ENetworkSelectionManual;
+	
+	RMobilePhone::TMobilePhoneNetworkSelectionV1Pckg localNetworkSelBuf(localNetworkSel) ;
+    
+	INFO_PRINTF1(_L("SetNetworkSelectionSetting() invoked......\n"));
+	iSharedPhone.SetNetworkSelectionSetting(Status, localNetworkSelBuf) ;
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("SetNetworkSelectionSetting() complete = %d\n"), Status.Int());
+	}
+void CTestLtsyPhoneStepBase::SelectNetwork()
+	{
+	TRequestStatus Status;
+	RMobilePhone::TMobilePhoneNetworkManualSelection tempsel;
+	tempsel.iCountry = _L("460");
+	tempsel.iNetwork = _L("00");
+	INFO_PRINTF1(_L("SelectNetwork() invoked......\n"));
+	iSharedPhone.SelectNetwork(Status,ETrue,tempsel);
+//	iSharedPhone.CancelAsyncRequest(Status);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("SelectNetwork() complete = %d\n"), Status.Int());
+	
+	}
+void CTestLtsyPhoneStepBase::SetAndSelectNetwork()
+	{
+	INFO_PRINTF1(_L("SetAndSelectNetwork() invoked......\n"));
+	SetNetworkSelectionSetting();
+	SelectNetwork();
+	}
+void CTestLtsyPhoneStepBase::GetCurrentNetworkInfo()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetCurrentNetworkInfo() invoked......\n"));	
+	RMobilePhone::TMobilePhoneNetworkInfoV5  aNetworkInfo;
+	RMobilePhone::TMobilePhoneNetworkInfoV5Pckg aNetworkInfoBuf(aNetworkInfo); // package TMobilePhoneNetworkInfoV1 into a buffer
+	RMobilePhone::TMobilePhoneLocationAreaV1 aArea;
+	iSharedPhone.GetCurrentNetwork(Status, aNetworkInfoBuf, aArea);
+	User::WaitForRequest(Status);
+
+	if (Status==KErrNone)
+		{
+		INFO_PRINTF1(_L("Get Get Current Network Information OK\n"));
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Get Get Current Network Information, Error %d returned.\n"), Status.Int());
+		}
+
+	}
+//void CTestLtsyPhoneStepBase::GetNetworkMode()
+//	{
+//	TRequestStatus Status;
+//	INFO_PRINTF1(_L("SetAndSelectNetwork() invoked......\n")));
+//	User::WaitForRequest(Status);
+//	INFO_PRINTF1(_L("SetAndSelectNetwork() complete = %d\n")), Status.Int());
+//	}
+void CTestLtsyPhoneStepBase::GetNitzInfo()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("SetAndSelectNetwork() invoked......\n"));
+	RMobilePhone::TMobilePhoneNITZ NITZInfo;
+	iSharedPhone.GetNITZInfo(NITZInfo);
+	
+    User::After(15*1000*1000);
+	INFO_PRINTF1(_L("SetAndSelectNetwork() invoked......OK\n"));
+	
+	}
+void CTestLtsyPhoneStepBase::GetSignalStrength()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetSignalStrength() invoked......\n"));
+	TInt32 signalStrength;
+	TInt8 bars;
+
+	iSharedPhone.GetSignalStrength(Status, signalStrength, bars);
+	User::WaitForRequest(Status);
+	
+	if (Status==KErrNone)
+		{
+		INFO_PRINTF2(_L("Signal strength (in dBm) : %d\n"), signalStrength);
+		INFO_PRINTF2(_L("Signal strength (in display bars) : %d\n"), bars);
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Signal strength, Error %d returned.\n"), Status.Int());
+		}
+		
+	User::After(3000000);		// Give user time to see the test results 
+	}
+void CTestLtsyPhoneStepBase::GetSignalCaps()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetSignalCaps() invoked......\n"));
+	// Signal Caps
+    TUint32 mmSignalCaps;
+	TInt retCap;
+	retCap = iSharedPhone.GetSignalCaps(mmSignalCaps);
+	if (retCap==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("Signal Capabilities NOT Supported\n"));		
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Phone Signal Strength Caps = 0x%x\n"), mmSignalCaps);
+		if (mmSignalCaps & RMobilePhone::KCapsGetSignalStrength)
+			{
+			INFO_PRINTF1(_L("  Get Signal Strength Supported\n"));
+			}
+		if (mmSignalCaps & RMobilePhone::KCapsNotifySignalStrengthChange)
+			{
+			INFO_PRINTF1(_L("  Notify Signal Strength Supported\n"));
+			}
+		}
+	}
+void CTestLtsyPhoneStepBase::GetBatteryInfo()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetBatteryInfo() invoked......\n"));
+	RMobilePhone::TMobilePhoneBatteryInfoV1 battery;
+	iSharedPhone.GetBatteryInfo(Status, battery);
+	User::WaitForRequest(Status);
+	if (Status==KErrNone)
+		{
+		INFO_PRINTF2(_L("Battery status : %d\n"), battery.iStatus);
+		INFO_PRINTF2(_L("Battery charge level : %d\n"), battery.iChargeLevel);
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Battery charge, Error %d returned.\n"), Status.Int());
+		}
+	}
+
+void CTestLtsyPhoneStepBase::GetSignalStrengthCancel()
+/** 
+ * This method retrieves a phone's Signal and Battery Strength Information.
+ */
+	{
+	TRequestStatus Status;
+	// Cancel Requests
+	INFO_PRINTF1(_L("GetSignalStrengthCancel() invoked......\n"));
+	TInt32 signalStrength;
+	TInt8 bars;
+	iSharedPhone.GetSignalStrength(Status, signalStrength, bars);
+	iSharedPhone.CancelAsyncRequest(EMobilePhoneGetSignalStrength);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetSignalStrength Cancel status = %d\n\n"), Status.Int());
+	}
+
+/**
+ * Notify signal strength change
+ * 
+ */
+void CTestLtsyPhoneStepBase::NotifySignalStrengthChange()
+	{
+	TRequestStatus reqStatus;
+	TInt32 signalStrength(0);
+	TInt8 bar(0);
+	TInt32 completeSignalStrength(70);
+	TInt8 completeBar(3);
+	SharedPhone().NotifySignalStrengthChange(reqStatus, signalStrength, bar);
+	User::WaitForRequest(reqStatus);
+	if(bar != completeBar)
+		{
+		ERR_PRINTF1(_L("bar is not expect."));
+		}
+	if(signalStrength != completeSignalStrength)
+		{
+		ERR_PRINTF1(_L("signalStrength is not expect."));
+		}
+	}
+void CTestLtsyPhoneStepBase::GetBatteryCaps()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("GetBatteryCaps() invoked......\n"));
+	// Battery Caps
+    TUint32 mmBatteryCaps;
+	TInt retCap;
+	retCap = iSharedPhone.GetBatteryCaps(mmBatteryCaps);
+
+	if (retCap==KErrNotSupported)
+		{
+		INFO_PRINTF1(_L("Battery Capabilities NOT Supported\n"));		
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Phone Battery Caps = 0x%x\n"), mmBatteryCaps);
+		}
+	}
+void CTestLtsyPhoneStepBase::GetBatteryStrengthCancel()
+/** 
+ * This method retrieves a phone's Signal and Battery Strength Information.
+ */
+	{
+	TRequestStatus Status;
+	// Cancel Requests
+	INFO_PRINTF1(_L("GetBatteryStrengthCancel() invoked......\n"));
+	RMobilePhone::TMobilePhoneBatteryInfoV1 battery;
+
+	iSharedPhone.GetBatteryInfo(Status, battery);
+	iSharedPhone.CancelAsyncRequest(EMobilePhoneGetBatteryInfo);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetBatteryInfo Cancel status = %d\n"), Status.Int());
+	}
+/**
+ * 
+ * Notify battery info change or not
+ * 
+ */
+void CTestLtsyPhoneStepBase::NotifyBatteryInfoChange()
+	{
+	TRequestStatus status;
+	RMobilePhone::TMobilePhoneBatteryInfoV1 batInfo;
+	TUint twentyCharge = 20;
+	iSharedPhone.NotifyBatteryInfoChange(status, batInfo);
+
+	User::WaitForRequest(status);
+	if(batInfo.iStatus != RMobilePhone::EBatteryConnectedButExternallyPowered)
+		{
+		INFO_PRINTF1(_L("Failed to Check Phone battery status."));
+		}
+	if(batInfo.iChargeLevel != twentyCharge)
+		{
+		INFO_PRINTF1(_L("Failed to Check Phone battery charge level."));
+		}
+	}
+//void CTestLtsyPhoneStepBase::GetCurrentSystemNetworkModes()
+//	{
+//	TRequestStatus Status;
+//	INFO_PRINTF1(_L("GetCellInfo() invoked......\n")));
+//	User::WaitForRequest(Status);
+//	INFO_PRINTF1(_L("GetCellInfo() complete = %d\n")), Status.Int());	
+//	}
+//void CTestLtsyPhoneStepBase::GetNetworkProviderName()
+//	{
+//	TRequestStatus Status;
+//	INFO_PRINTF1(_L("GetCellInfo() invoked......\n")));
+//	User::WaitForRequest(Status);
+//	INFO_PRINTF1(_L("GetCellInfo() complete = %d\n")), Status.Int());	
+//	}
+//void CTestLtsyPhoneStepBase::GetOperatorName()
+//	{
+//	TRequestStatus Status;
+//	INFO_PRINTF1(_L("GetCellInfo() invoked......\n")));
+//	User::WaitForRequest(Status);
+//	INFO_PRINTF1(_L("GetCellInfo() complete = %d\n")), Status.Int());	
+//	}
+void CTestLtsyPhoneStepBase::RegisterCellInfoChangeNotification()
+	{
+	TRequestStatus Status;
+	INFO_PRINTF1(_L("NotifyCellInfoChange() invoked......\n"));
+	RMobilePhone::TMobilePhoneCellInfoV9 phoneCellinfo1;
+	RMobilePhone::TMobilePhoneCellInfoV9Pckg Packaged1(phoneCellinfo1);
+	iSharedPhone.NotifyCellInfoChange(Status,Packaged1);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("NotifyCellInfoChange() complete = %d\n"), Status.Int());
+	
+	}
+void CTestLtsyPhoneStepBase::GetCellInfo()
+	{
+	TRequestStatus Status;
+	RMobilePhone::TMobilePhoneCellInfoV9 phoneCellinfo;
+	RMobilePhone::TMobilePhoneCellInfoV9Pckg Packaged(phoneCellinfo);
+	
+	INFO_PRINTF1(_L("GetCellInfo() invoked......\n"));
+	iSharedPhone.GetCellInfo(Status,Packaged);
+	User::WaitForRequest(Status);
+	INFO_PRINTF2(_L("GetCellInfo() complete = %d\n"), Status.Int());	
+	}
+//void CTestLtsyPhoneStepBase::GetPhoneCellInfo()
+//	{
+//	}
+
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonestorebase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,100 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+// user include
+#include "testltsyphonestorebase.h"
+#include "testltsyphonestoreshareddata.h"
+
+//const define
+_LIT16(KPhoneTSY, "phonetsy");
+
+// member functions
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPhoneStoreBase::CTestLtsyPhoneStoreBase(CTestLtsyModel& aTestModel)
+    : iModel(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPhoneStoreBase::~CTestLtsyPhoneStoreBase()
+	{
+	
+	}
+
+TVerdict CTestLtsyPhoneStoreBase::doTestStepPreambleL()
+	{
+	OpenPhoneL();
+	if(TestStepResult() == EPass)
+		{		
+		
+		}
+	
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsyPhoneStoreBase::doTestStepPostambleL()
+	{
+
+	return TestStepResult();
+	}
+
+/**
+ * Get the PhoneON object
+ * 
+ */
+RMobileONStore& CTestLtsyPhoneStoreBase::PhoneONStore()
+	{
+	return iModel.PhoneStoreSharedData().PhoneONStore();	
+	}
+
+/**
+ * Get the Enstore object
+ * 
+ */
+RMobileENStore& CTestLtsyPhoneStoreBase::PhoneENStore()
+	{
+    return iModel.PhoneStoreSharedData().PhoneENStore();	
+	}
+
+/**
+ * Get the PhoneBook store object
+ * 
+ */
+RMobilePhoneBookStore& CTestLtsyPhoneStoreBase::PhoneBookStore()
+	{
+	 return iModel.PhoneStoreSharedData().PhoneBookStore();	
+	}
+
+void CTestLtsyPhoneStoreBase::OpenPhoneL()
+	{
+	INFO_PRINTF1(_L("starting opne phone"));
+		
+	if (!iModel.SharedEnv().PhoneOpened())
+		{
+		iModel.SharedEnv().OpenPhoneL(KPhoneTSY);
+		}
+	}
+
+// end of file
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyphonestoreshareddata.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,87 @@
+// TestTelephonyPhoneStoreSharedData.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyPhoneStoreSharedData
+
+// CTSY include
+
+// user include
+#include "TestLtsyPhoneStoreSharedData.h"
+
+/**
+ * Constructor
+ * 
+ */
+CTestLtsyPhoneStoreSharedData::CTestLtsyPhoneStoreSharedData()
+	{
+	}
+
+/**
+ * Factory function to create a new CTestTelephonySmsSharedData object
+ * 
+ */
+CTestLtsyPhoneStoreSharedData*CTestLtsyPhoneStoreSharedData::NewL()
+	{
+	CTestLtsyPhoneStoreSharedData* self = new (ELeave) CTestLtsyPhoneStoreSharedData();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyPhoneStoreSharedData::~CTestLtsyPhoneStoreSharedData()
+	{
+	Reset();
+	}
+
+/**
+ * ConstructL
+ * 
+ */
+void CTestLtsyPhoneStoreSharedData::ConstructL()
+	{
+	}
+
+/**
+ * Delete all store objects
+ * 
+ */
+void CTestLtsyPhoneStoreSharedData::Reset()
+	{
+	iENStore.Close();
+	iONStore.Close();
+	iPhBkStore.Close();
+	}
+
+/**
+ * return ENStore 
+ * 
+ */
+RMobileENStore& CTestLtsyPhoneStoreSharedData::PhoneENStore()
+	{
+	return iENStore;
+	}
+
+
+/**
+ * return ONStore
+ * 
+ */
+RMobileONStore& CTestLtsyPhoneStoreSharedData::PhoneONStore()
+	{
+	return iONStore;
+	}
+
+/**
+ * return PhoneBookStore
+ * 
+ */
+RMobilePhoneBookStore& CTestLtsyPhoneStoreSharedData::PhoneBookStore()
+	{
+	return iPhBkStore;
+	}
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktactivatecontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+// TestLtsyPktActivateContext.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktActivateContext
+
+// 	user include
+#include "TestLtsyPktActivateContext.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktActivateContext::CTestLtsyPktActivateContext(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktActivateContext::~CTestLtsyPktActivateContext()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktActivateContext::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextActivateTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktattachnetwork.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+// TestLtsyPktAttachNetwork.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktAttachNetwork
+
+// 	user include
+#include "TestLtsyPktAttachNetwork.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktAttachNetwork::CTestLtsyPktAttachNetwork(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktAttachNetwork::~CTestLtsyPktAttachNetwork()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktAttachNetwork::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextAttachTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktclosecontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,38 @@
+// TestLtsyPktCloseContext.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktCloseContext
+
+// 	user include
+#include "TestLtsyPktCloseContext.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktCloseContext::CTestLtsyPktCloseContext(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktCloseContext::~CTestLtsyPktCloseContext()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktCloseContext::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+		CloseExistContext();
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktclosecontextqos.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,38 @@
+// TestLtsyPktCloseContextQos.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktCloseContextQos
+
+// 	user include
+#include "TestLtsyPktCloseContextQos.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktCloseContextQos::CTestLtsyPktCloseContextQos(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktCloseContextQos::~CTestLtsyPktCloseContextQos()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktCloseContextQos::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	CloseExistContextQos();
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktclosepacket.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,48 @@
+//  TestLtsyPktClosePacket.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktClosePacket
+
+// user include
+
+#include "TestLtsyPktClosePacket.h"
+
+/**
+* Constructor
+* 
+*/
+CTestLtsyPktClosePacket::CTestLtsyPktClosePacket( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPktTestStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPktClosePacket::~CTestLtsyPktClosePacket()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktClosePacket::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+//		if (iModel.SharedEnv().PhoneOpened())
+//			{
+//			iModel.SharedEnv().ClosePhone();	
+//			}
+    	ClosePacketobject();
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktdeactivatecontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktDeactivateContext.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktDeactivateContext
+
+// 	user include
+#include "TestLtsyPktDeactivateContext.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktDeactivateContext::CTestLtsyPktDeactivateContext(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyPktDeactivateContext::~CTestLtsyPktDeactivateContext()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktDeactivateContext::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextDeactivateTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktdeletecontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktDeleteContext.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktDeleteContext
+
+// 	user include
+#include "TestLtsyPktDeleteContext.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktDeleteContext::CTestLtsyPktDeleteContext(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktDeleteContext);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktDeleteContext::~CTestLtsyPktDeleteContext()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktDeleteContext::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextDeleteTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktdetachnetwork.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktDetachNetwork.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktDetachNetwork
+
+// 	user include
+#include "TestLtsyPktDetachNetwork.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktDetachNetwork::CTestLtsyPktDetachNetwork(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyPktDetachNetwork::~CTestLtsyPktDetachNetwork()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktDetachNetwork::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextDetachTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextconfig.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktGetContextConfig.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetContextConfig
+
+// 	user include
+#include "TestLtsyPktGetContextConfig.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetContextConfig::CTestLtsyPktGetContextConfig(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktGetContextConfig);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetContextConfig::~CTestLtsyPktGetContextConfig()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetContextConfig::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextGetConfigTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+// TestLtsyPktGetContextInfo.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetContextInfo
+
+// 	user include
+#include "TestLtsyPktGetContextInfo.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetContextInfo::CTestLtsyPktGetContextInfo(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetContextInfo::~CTestLtsyPktGetContextInfo()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetContextInfo::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,DisplayContextInfo());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextqosprifile.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktGetContextQoSProfile.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetContextQoSProfile
+
+// 	user include
+#include "TestLtsyPktGetContextQoSProfile.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetContextQoSProfile::CTestLtsyPktGetContextQoSProfile(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktGetContextQoSProfile);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetContextQoSProfile::~CTestLtsyPktGetContextQoSProfile()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetContextQoSProfile::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsGetQoSProfileTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetcontextqosprofile.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktGetContextQoSProfile.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetContextQoSProfile
+
+// 	user include
+#include "TestLtsyPktGetContextQoSProfile.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetContextQoSProfile::CTestLtsyPktGetContextQoSProfile(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktGetContextQoSProfile);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetContextQoSProfile::~CTestLtsyPktGetContextQoSProfile()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetContextQoSProfile::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsGetQoSProfileTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetdefaultparams.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktGetDefaultParams.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetDefaultParams
+
+// 	user include
+#include "TestLtsyPktGetDefaultParams.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetDefaultParams::CTestLtsyPktGetDefaultParams(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktGetDefaultParams);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetDefaultParams::~CTestLtsyPktGetDefaultParams()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetDefaultParams::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsGetDefaultContextParamsTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetdynamiccapabilities.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,43 @@
+// TestLtsyPktGetDynamicCapabilities.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetDynamicCapabilities
+
+// 	user include
+#include "TestLtsyPktGetDynamicCapabilities.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetDynamicCapabilities::CTestLtsyPktGetDynamicCapabilities(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetDynamicCapabilities::~CTestLtsyPktGetDynamicCapabilities()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetDynamicCapabilities::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,DisplayDynamicCapabilities());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetnwkregistrationstatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// testltsypktgetnwkregistrationstatus.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktNetworkRegistrationStatus
+
+// 	user include
+#include "testltsypktgetnwkregistrationstatus.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktNetworkRegistrationStatus::CTestLtsyPktNetworkRegistrationStatus(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktNetworkRegistrationStatus);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktNetworkRegistrationStatus::~CTestLtsyPktNetworkRegistrationStatus()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktNetworkRegistrationStatus::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,DisplayNetworkRegistrationStatus());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetservicestatus.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,44 @@
+// TestLtsyPktGetServiceStatus.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetServiceStatus
+
+// 	user include
+#include "testltsypktgetservicestatus.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetServiceStatus::CTestLtsyPktGetServiceStatus(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetServiceStatus::~CTestLtsyPktGetServiceStatus()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetServiceStatus::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,DisplayPacketServiceStatus());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktgetstaticcapabilities.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,43 @@
+// TestLtsyPktGetStaticCapabilities.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktGetStaticCapabilities
+
+// 	user include
+#include "TestLtsyPktGetStaticCapabilities.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktGetStaticCapabilities::CTestLtsyPktGetStaticCapabilities(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktGetStaticCapabilities::~CTestLtsyPktGetStaticCapabilities()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktGetStaticCapabilities::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+		TRAPD(err,DisplayStaticCapabilities());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktinitialsecontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,43 @@
+// TestLtsyPktInitialiseContext.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktInitialiseContext
+
+// 	user include
+#include "testltsypktinitialisecontext.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktInitialiseContext::CTestLtsyPktInitialiseContext(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktInitialiseContext::~CTestLtsyPktInitialiseContext()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktInitialiseContext::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsInitialiseContext());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktopencontext.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,47 @@
+// TestLtsyPktOpenContext.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktOpenContext
+
+// 	user include
+#include "TestLtsyPktOpenContext.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktOpenContext::CTestLtsyPktOpenContext(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktOpenContext::~CTestLtsyPktOpenContext()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktOpenContext::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+		if (!IsOpenedPktService())
+			{
+			OpenPacketobject();
+			}
+    	TRAPD(err,OpenNewContext());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktopencontextqos.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,43 @@
+// TestLtsyPktOpenContextQos.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktOpenContextQos
+
+// 	user include
+#include "TestLtsyPktOpenContextQos.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktOpenContextQos::CTestLtsyPktOpenContextQos(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktOpenContextQos::~CTestLtsyPktOpenContextQos()
+	{
+	}
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktOpenContextQos::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,OpenNewContextQos());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktopenpacket.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,53 @@
+//  TestLtsyPktOpenPPacket.cpp
+//  Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+//  Implementation of the Class CTestLtsyPktOpenPacket
+
+// user include
+
+#include "TestLtsyPktOpenPacket.h"
+_LIT(KTsyModuleName, "PhoneTsy");
+/**
+* Constructor
+* 
+*/
+CTestLtsyPktOpenPacket::CTestLtsyPktOpenPacket( CTestLtsyModel& aTestModel) 
+    :CTestLtsyPktTestStepBase(aTestModel)
+	{
+	}
+
+/**
+* Destructor
+*
+*/	
+CTestLtsyPktOpenPacket::~CTestLtsyPktOpenPacket()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktOpenPacket::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+		if (!iModel.SharedEnv().PhoneOpened())
+			{
+			iModel.SharedEnv().OpenPhoneL(KTsyModuleName);
+			}
+    	TRAPD(err,OpenPacketobject());
+    	if(err != KErrNone)
+    		{
+    		ERR_PRINTF2(_L("The error was returned %d!! when open Phone"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	
+	return TestStepResult();
+	}
+
+	
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktsetcontextconfig.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktSetContextConfig.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktSetContextConfig
+
+// 	user include
+#include "TestLtsyPktSetContextConfig.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktSetContextConfig::CTestLtsyPktSetContextConfig(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktSetContextConfig);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktSetContextConfig::~CTestLtsyPktSetContextConfig()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktSetContextConfig::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsContextSetConfigTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktsetcontextqosprofile.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// TestLtsyPktSetContextQoSProfile.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktSetContextQoSProfile
+
+// 	user include
+#include "TestLtsyPktSetContextQoSProfile.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktSetContextQoSProfile::CTestLtsyPktSetContextQoSProfile(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktSetContextQoSProfile);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktSetContextQoSProfile::~CTestLtsyPktSetContextQoSProfile()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktSetContextQoSProfile::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsSetQoSProfileTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktsetdefaultparams.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,45 @@
+// CTestLtsyPktSetDefaultParams.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestLtsyPktSetDefaultParams
+
+// 	user include
+#include "TestLtsyPktSetDefaultParams.h"
+
+/**
+ * Constructor
+ */
+CTestLtsyPktSetDefaultParams::CTestLtsyPktSetDefaultParams(CTestLtsyModel& aModel)
+	:CTestLtsyPktTestStepBase(aModel)
+	{
+	SetTestStepName(KTestLtsyPktSetDefaultParams);
+	}
+
+/**
+ * Destructor
+ */
+CTestLtsyPktSetDefaultParams::~CTestLtsyPktSetDefaultParams()
+	{
+	}
+
+/**
+ * It implements the required functionality of the test step.
+ * This step will open a shared phone
+ * @return TVerdict - result of the test step
+ * @leave - System wide error codes
+ */
+TVerdict CTestLtsyPktSetDefaultParams::doTestStepL()
+	{
+	if(TestStepResult() == EPass)
+		{
+    	TRAPD(err,GprsSetDefaultContextParamsTest());
+    	if(err != KErrNone)
+    		{
+    		INFO_PRINTF2(_L("The error was returned %d!! when open Context"),err);
+    	    SetTestStepResult(EFail);
+    		}
+		}
+	return TestStepResult();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktshareddata.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,49 @@
+// TestTelephonyPktSharedData.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyPktSharedData
+
+// user include
+#include "TestLtsyPktSharedData.h"
+
+/**
+ * Factory function
+ */
+CTestLtsyPktSharedData* CTestLtsyPktSharedData::NewL()
+	{
+	CTestLtsyPktSharedData* ret = new(ELeave) CTestLtsyPktSharedData();
+	CleanupStack::PushL(ret);
+	ret->ConstructL();
+	CleanupStack::Pop(ret);
+	
+	return ret;
+	}
+
+/**
+ * Constructor
+ * 
+ * @param CTestStep& aTestStep The test step used for logging and reading info from ini
+ * @param CTestTelephonyTsyAdaptor& aTestEnvAdaptor The telephony tsy adaptor
+ */
+CTestLtsyPktSharedData::CTestLtsyPktSharedData()
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyPktSharedData::~CTestLtsyPktSharedData()
+	{
+	}
+
+
+/**
+ * ConstructL
+ * 
+ */
+void CTestLtsyPktSharedData::ConstructL()
+	{
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsypktteststepbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1114 @@
+// TestTelephonyPktTestStepBase.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonyPktTestStepBase
+
+// 	user include
+#include "TestLtsyPktTestStepBase.h"
+#include "te_integration_stltsysuitestepbase.h"
+#include "te_integration_stltsysuitedefs.h"
+
+_LIT8(KName, "internet");
+/**
+ * Constructor
+ */
+CTestLtsyPktTestStepBase::CTestLtsyPktTestStepBase(CTestLtsyModel& aModel)
+	:iModel(aModel),iSharedPhone(aModel.SharedEnv().Phone())
+	{
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsyPktTestStepBase::~CTestLtsyPktTestStepBase()
+	{
+
+	}
+
+TVerdict CTestLtsyPktTestStepBase::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPktTestStepBase::doTestStepPreambleL()."));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+TVerdict CTestLtsyPktTestStepBase::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsyPktTestStepBase::doTestStepPostambleL()"));
+	return TestStepResult();
+	}
+
+/**
+ * Get the shared phone
+ * 
+ */
+RMobilePhone& CTestLtsyPktTestStepBase::SharedPhone() 
+	{
+	return iSharedPhone;
+	}
+/**
+ * Check if the RPacketService has been opened
+ * @return - the result
+ */
+TBool CTestLtsyPktTestStepBase::IsOpenedPktService()
+	{
+	return (NULL != iModel.PktSharedData().iPacket.SubSessionHandle());
+	}
+void CTestLtsyPktTestStepBase::OpenPacketobject()
+	{
+	TInt           returnStatus;
+	INFO_PRINTF1(_L("Close packet\n"));
+	// Open Packet object
+	iModel.PktSharedData().iPacket.Close();
+	INFO_PRINTF1(_L("packet closeed \n"));
+	INFO_PRINTF1(_L("To open Packet Object\n"));
+
+	returnStatus = iModel.PktSharedData().iPacket.Open(iModel.SharedEnv().Phone());
+	if(returnStatus == KErrNone)
+		{
+		INFO_PRINTF1(_L("packet opened \n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Opened packet error\n"));
+		INFO_PRINTF2(_L("Opened packet error = %d\n"), returnStatus);
+		}
+	}
+void CTestLtsyPktTestStepBase::ClosePacketobject()
+	{
+	INFO_PRINTF1(_L("Close packet\n"));
+	User::After(1000000);
+	iModel.PktSharedData().iPacket.Close();
+	INFO_PRINTF1(_L("packet closeed \n"));
+	}
+void CTestLtsyPktTestStepBase::DisplayPacketServiceStatus()
+/**
+ * Test the TSY's functionality to retrieve the packet service status.
+ */
+	{
+	TInt returnStatus = iModel.PktSharedData().iPacket.GetStatus(iModel.PktSharedData().iPacketStatus);
+	if(returnStatus==KErrNone)
+		{
+		switch (iModel.PktSharedData().iPacketStatus)
+			{
+			case RPacketService::EStatusUnattached:
+				INFO_PRINTF1(_L("Packet Service status = Unattached\n"));
+				break;
+			case RPacketService::EStatusAttached:
+				INFO_PRINTF1(_L("Packet Service status = Attached\n"));
+				break;
+			case RPacketService::EStatusActive:
+				INFO_PRINTF1(_L("Packet Service status = Active\n"));
+				break;
+			case RPacketService::EStatusSuspended:
+				INFO_PRINTF1(_L("Packet Service status = Suspended\n"));
+				break;
+			default:
+				INFO_PRINTF1(_L("Packet Service error\n"));
+				break;
+			}
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Packet Service error\n"));
+		}
+	}
+
+void CTestLtsyPktTestStepBase::GprsNetWorkTest()
+	{
+	INFO_PRINTF1(_L("Open Packet Object"));
+
+	TInt           returnStatus;
+	TRequestStatus requestStatus;
+	INFO_PRINTF1(_L("Close packet\n"));
+	// Open Packet object
+	iModel.PktSharedData().iPacket.Close();
+	INFO_PRINTF1(_L("packet closeed \n"));
+	INFO_PRINTF1(_L("To open Packet Object\n"));
+	returnStatus = iModel.PktSharedData().iPacket.Open(iSharedPhone);
+	if(returnStatus == KErrNone)
+		{
+		INFO_PRINTF1(_L("packet opened \n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Opened packet error\n"));
+		}
+	requestStatus = KErrNone;
+	INFO_PRINTF1((_L("RPacket::GetNtwkRegStatus() invoked...\n")));
+	iModel.PktSharedData().iPacket.GetNtwkRegStatus(requestStatus, iModel.PktSharedData().iRegistrationStatus);
+	User::WaitForRequest(requestStatus);
+	
+	if(requestStatus == KErrNone)
+		{
+		switch (iModel.PktSharedData().iRegistrationStatus)
+			{
+			case RPacketService::ENotRegisteredNotSearching:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered Not Searching\n"));
+				break;
+			case RPacketService::ERegisteredOnHomeNetwork:
+				INFO_PRINTF1(_L("Netw Reg status = Registered On Home Network\n"));
+				break;
+			case RPacketService::ENotRegisteredSearching:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered Searching\n"));
+				break;
+			case RPacketService::ERegistrationDenied:
+				INFO_PRINTF1(_L("Netw Reg status = Registration Denied\n"));
+				break;
+			case RPacketService::EUnknown:
+				INFO_PRINTF1(_L("Netw Reg status = Unknown\n"));
+				break;
+			case RPacketService::ERegisteredRoaming:
+				INFO_PRINTF1(_L("Netw Reg status = RegisteredRoaming\n"));
+				break;
+			case RPacketService::ENotRegisteredButAvailable:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered But Available\n"));
+				break;
+			case RPacketService::ENotRegisteredAndNotAvailable:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered And Not Available\n"));
+				break;
+			default:
+				INFO_PRINTF1(_L("Network Registration Status Error\n"));
+				break;
+			}
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Network Registration Status Error\n"));
+		}
+	iModel.PktSharedData().iPacket.Close();
+	}
+void CTestLtsyPktTestStepBase::DisplayNetworkRegistrationStatus()
+/**
+ * Test the TSY's functionality to retrieve the network registration status.
+ */
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1((_L("RPacket::GetNtwkRegStatus() invoked...\n")));
+	iModel.PktSharedData().iPacket.GetNtwkRegStatus(requestStatus, iModel.PktSharedData().iRegistrationStatus);
+	User::WaitForRequest(requestStatus);
+	
+	if(requestStatus == KErrNone)
+		{
+		switch (iModel.PktSharedData().iRegistrationStatus)
+			{
+			case RPacketService::ENotRegisteredNotSearching:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered Not Searching\n"));
+				break;
+			case RPacketService::ERegisteredOnHomeNetwork:
+				INFO_PRINTF1(_L("Netw Reg status = Registered On Home Network\n"));
+				break;
+			case RPacketService::ENotRegisteredSearching:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered Searching\n"));
+				break;
+			case RPacketService::ERegistrationDenied:
+				INFO_PRINTF1(_L("Netw Reg status = Registration Denied\n"));
+				break;
+			case RPacketService::EUnknown:
+				INFO_PRINTF1(_L("Netw Reg status = Unknown\n"));
+				break;
+			case RPacketService::ERegisteredRoaming:
+				INFO_PRINTF1(_L("Netw Reg status = RegisteredRoaming\n"));
+				break;
+			case RPacketService::ENotRegisteredButAvailable:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered But Available\n"));
+				break;
+			case RPacketService::ENotRegisteredAndNotAvailable:
+				INFO_PRINTF1(_L("Netw Reg status = Not Registered And Not Available\n"));
+				break;
+			default:
+				INFO_PRINTF1(_L("Network Registration Status Error\n"));
+				break;
+			}
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Network Registration Status Error\n"));
+		}
+	}
+
+void CTestLtsyPktTestStepBase::DisplayContextInfo()
+/**
+ * Test the TSY's functionality to retrieve the packet context information
+ * using the packet service object.
+ */
+	{
+	// Enumerate Contexts & Get Context Info
+	INFO_PRINTF1(_L("Display the packet context information\n"));
+
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketService::EnumerateContexts() invoked....\n"));
+	iModel.PktSharedData().iPacket.EnumerateContexts(requestStatus, iModel.PktSharedData().iNumContexts, iModel.PktSharedData().iMaxContextsAllowed);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketService::EnumerateContexts() completed %d\n"), requestStatus.Int());
+	INFO_PRINTF2(_L("Number of Contexts   = %d\n"), iModel.PktSharedData().iNumContexts);
+	INFO_PRINTF2(_L("Max Contexts Allowed = %d\n"), iModel.PktSharedData().iMaxContextsAllowed);
+
+	requestStatus = KErrNone;
+	INFO_PRINTF1(_L("Sync RPacket::GetContextInfo() invoked...\n"));
+	iModel.PktSharedData().iPacket.GetContextInfo(requestStatus, 0, iModel.PktSharedData().iContextInfo);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("Sync RPacket::GetContextInfo() completed %d\n"), requestStatus.Int());
+	if (requestStatus == KErrNone)
+		{
+		INFO_PRINTF2(_L("Context Name   = %S\n"), &iModel.PktSharedData().iContextInfo.iName);
+		DisplayContextStatus(iModel.PktSharedData().iContextInfo.iStatus);
+		}
+
+
+/********************************************************************
+	console->Printf(TRefByValue<const TDesC>(_L("Execute Async RPacket::GetContextInfo()\n")));
+	TRequestStatus requestStatus;
+	iPacket.GetContextInfo(requestStatus, 0, iContextInfo2);
+	User::WaitForRequest(requestStatus);
+	console->Printf(TRefByValue<const TDesC>(_L("RPacketService::GetContextInfo() ret = %d\n")), requestStatus);
+	if (requestStatus == KErrNone)
+		{
+		console->Printf(TRefByValue<const TDesC>(_L("Context Name   = %S\n")), iContextInfo2.iName);
+		console->Printf(TRefByValue<const TDesC>(_L("Context Status = %d\n")), iContextInfo2.iStatus);
+		}
+*********************************************************************/
+	}
+
+
+void CTestLtsyPktTestStepBase::DisplayContextStatus(RPacketContext::TContextStatus aContextStatus)
+	{
+	switch (aContextStatus)
+		{
+		case RPacketContext::EStatusUnknown:
+			INFO_PRINTF1(_L("Context Status = Unknown\n"));
+			break;
+		case RPacketContext::EStatusInactive:
+			INFO_PRINTF1(_L("Context Status = Inactive\n"));
+			break;
+		case RPacketContext::EStatusActivating:
+			INFO_PRINTF1(_L("Context Status = Activating\n"));
+			break;
+		case RPacketContext::EStatusActive:
+			INFO_PRINTF1(_L("Context Status = Active\n"));
+			break;
+		case RPacketContext::EStatusDeactivating:
+			INFO_PRINTF1(_L("Context Status = Deactivating\n"));
+			break;
+		case RPacketContext::EStatusSuspended:
+			INFO_PRINTF1(_L("Context Status = Suspended\n"));
+			break;
+		case RPacketContext::EStatusDeleted:
+			INFO_PRINTF1(_L("Context Status = Deleted\n"));
+			break;
+		default:
+			INFO_PRINTF1(_L("Error - Context Status\n"));
+			break;
+		}
+	}
+
+
+void CTestLtsyPktTestStepBase::DisplayContextStatus(RPacketContext& aContext, RPacketContext::TContextStatus& aContextStatus)
+	{
+	TRequestStatus returnStatus = aContext.GetStatus(aContextStatus);
+	if(returnStatus == KErrNone)
+		{
+		INFO_PRINTF1(_L("RPacketContext::GetStatus() OK\n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Error - Context Status\n"));
+		}
+	DisplayContextStatus(aContextStatus);
+	}
+
+void  CTestLtsyPktTestStepBase::GprsContextAttachTest()
+	{
+	INFO_PRINTF1(_L("GprsContextAttachTest\n"));
+	TRequestStatus requestStatus = KErrNone;
+	iModel.PktSharedData().iPacket.Attach(requestStatus);
+	User::WaitForRequest(requestStatus);
+	if(requestStatus == KErrNone)
+		{
+		INFO_PRINTF1(_L("GprsContextAttachTest OK \n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("GprsContextAttachTest Error\n"));
+		INFO_PRINTF2(_L("GprsContextAttachTest Error = %d\n"), requestStatus.Int());
+		}
+
+	}
+void  CTestLtsyPktTestStepBase::GprsContextDetachTest()
+	{
+	INFO_PRINTF1(_L("GprsContextDetachTest\n"));
+	TRequestStatus requestStatus = KErrNone;
+	iModel.PktSharedData().iPacket.Detach(requestStatus);
+	User::WaitForRequest(requestStatus);
+	if(requestStatus == KErrNone)
+		{
+		INFO_PRINTF1(_L("GprsContextDetachTest OK \n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("GprsContextDetachTest Error\n"));
+		INFO_PRINTF2(_L("GprsContextDetachTest Error = %d\n"), requestStatus.Int());
+		}
+
+	}
+void  CTestLtsyPktTestStepBase::DisplayStaticCapabilities()
+	{
+	// Static Capabilities
+	TRequestStatus returnStatus = KErrNone;
+	returnStatus = iModel.PktSharedData().iPacket.GetStaticCaps(iModel.PktSharedData().iStaticCaps, RPacketContext::EPdpTypeCDPD);
+	INFO_PRINTF2(_L("RPacketService::GetStaticCaps() ret = %d\n"), returnStatus.Int());
+	INFO_PRINTF2(_L("Static Caps = %d\n"), iModel.PktSharedData().iStaticCaps);
+	INFO_PRINTF2(_L("Static Caps = %xH\n"), iModel.PktSharedData().iStaticCaps);
+	}
+void  CTestLtsyPktTestStepBase::DisplayDynamicCapabilities()
+	{
+	// Dynamic Capabilities
+	TRequestStatus returnStatus = KErrNone;
+	returnStatus = iModel.PktSharedData().iPacket.GetDynamicCaps(iModel.PktSharedData().iDynamicCaps);
+	INFO_PRINTF2(_L("RPacketService::GetDynamicCaps() ret = %d\n"), returnStatus.Int());
+	INFO_PRINTF2(_L("Dynamic Caps = %d\n"), iModel.PktSharedData().iDynamicCaps);
+	INFO_PRINTF2(_L("Dynamic Caps = %xH\n"), iModel.PktSharedData().iDynamicCaps);
+	}
+
+void  CTestLtsyPktTestStepBase::GprsGetDefaultContextParamsTest()
+	{
+	TRequestStatus reqStatusContextParams = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig01;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg01(contextConfig01);
+	INFO_PRINTF1(_L("RPacketContext::GetDefaultContextParams() invoked...\n"));
+	iModel.PktSharedData().iPacket.GetDefaultContextParams(reqStatusContextParams, contextConfigPckg01);
+	User::WaitForRequest(reqStatusContextParams);
+	if(reqStatusContextParams == KErrNone)
+		{
+		INFO_PRINTF1(_L("RPacketContext::GetDefaultContextParams() complete\n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("RPacketContext::GetDefaultContextParams() Error\n"));
+		INFO_PRINTF2(_L("RPacketService::GprsgetDefaultContextParamsTest() completed %d\n"), reqStatusContextParams.Int());
+		}
+	}
+void  CTestLtsyPktTestStepBase::GprsSetDefaultContextParamsTest()
+	{
+	// Set Context Config
+	TRequestStatus reqStatusContextParams = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig02;
+	//contextConfig2.iServiceOption = RPacketContext::KLowSpeedData;
+	contextConfig02.iPdpType  = RPacketContext::EPdpTypeIPv6;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg02(contextConfig02);
+	INFO_PRINTF1(_L("RPacketContext::SetDefaultContextParams() invoked...\n"));
+	iModel.PktSharedData().iPacket.SetDefaultContextParams(reqStatusContextParams, contextConfigPckg02);
+	User::WaitForRequest(reqStatusContextParams);
+	if(reqStatusContextParams == KErrNone)
+		{
+		INFO_PRINTF1(_L("RPacketContext::GprsContextSetConfigTest() complete\n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("RPacketContext::GprsContextSetConfigTest() Error\n"));
+		INFO_PRINTF2(_L("RPacketService::GprsSetDefaultContextParamsTest() completed %d\n"), reqStatusContextParams.Int());
+		}
+	}
+void  CTestLtsyPktTestStepBase::GprsContextActivateTest()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketContext::Activate() invoked...\n"));
+	iModel.PktSharedData().iContext1.Activate(requestStatus);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::Activate() completed %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsContextDeactivateTest()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketContext::Deactivate() invoked...\n"));
+	iModel.PktSharedData().iContext1.Deactivate(requestStatus);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::Deactivate() completed %d\n"), requestStatus.Int());
+	}
+
+void CTestLtsyPktTestStepBase::GprsContextSetConfigTest()
+	{
+	// Set Context Config
+	TRequestStatus reqStatusContextConfig = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig2;
+	//contextConfig2.iServiceOption = RPacketContext::KLowSpeedData;
+	contextConfig2.iPdpType  = RPacketContext::EPdpTypeIPv6;
+	contextConfig2.iAccessPointName = KName;
+	//contextConfig2.iPdpAddress = ;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg2(contextConfig2);
+	INFO_PRINTF1(_L("RPacketContext::SetConfig() invoked...\n"));
+	iModel.PktSharedData().iContext1.SetConfig(reqStatusContextConfig, contextConfigPckg2);
+	User::WaitForRequest(reqStatusContextConfig);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig() complete = %d\n"), reqStatusContextConfig.Int());
+	}
+
+void CTestLtsyPktTestStepBase::GprsContextGetConfigTest()
+	{
+	TRequestStatus reqStatusContextConfig = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig3;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg3(contextConfig3);
+	INFO_PRINTF1(_L("RPacketContext::GetConfig() invoked...\n"));
+	iModel.PktSharedData().iContext1.GetConfig(reqStatusContextConfig, contextConfigPckg3);
+	User::WaitForRequest(reqStatusContextConfig);
+	INFO_PRINTF2(_L("RPacketContext::GetConfig() complete = %d\n"), reqStatusContextConfig.Int());
+	contextConfig3 = contextConfigPckg3();
+	}
+void CTestLtsyPktTestStepBase::NotificationContextAddedCancel()
+	{
+	TName contextAddedContextId;
+	TRequestStatus reqStatusContextAdded = KErrNone;
+	INFO_PRINTF1(_L("Test Notify Context Added Cancel\n"));
+	iModel.PktSharedData().iPacket.NotifyContextAdded(reqStatusContextAdded, contextAddedContextId);
+	iModel.PktSharedData().iPacket.CancelAsyncRequest(EPacketNotifyContextAdded);
+	User::WaitForRequest(reqStatusContextAdded);
+	if (reqStatusContextAdded == KErrCancel)
+		{
+		INFO_PRINTF1(_L("Notify Context Added is KErrCancel\n"));
+		}
+	else 
+		{
+		INFO_PRINTF1(_L("Error - Notify Context Added status\n"));
+		INFO_PRINTF2(_L("Error - Notify Context Added status = %d\n"), reqStatusContextAdded.Int());
+		}
+	}
+void CTestLtsyPktTestStepBase::NotificationContextAdded()
+	{
+	TName contextAddedContextId;
+	TRequestStatus reqStatusContextAdded = KErrNone;
+	// Notify Context Added
+	reqStatusContextAdded = KErrNone;
+	contextAddedContextId = _L("ABCDEFGHIJKLMNOP");
+	iModel.PktSharedData().iPacket.NotifyContextAdded(reqStatusContextAdded, contextAddedContextId);
+	if (reqStatusContextAdded == KRequestPending)
+		{
+		INFO_PRINTF1(_L("Notify Context Added is KRequestPending\n"));
+		}
+	else
+		{
+		INFO_PRINTF1(_L("Notify Context Added request status\n"));
+		INFO_PRINTF2(_L("Error - Notify Context Added status = %d\n"), reqStatusContextAdded.Int());
+		}
+	}
+void CTestLtsyPktTestStepBase::OpenNewContext()
+	{
+	TInt returnStatus;
+	// check if the slot is free to open
+	if (NULL != iModel.PktSharedData().iContext1.SubSessionHandle())
+		{
+		ERR_PRINTF1(_L("Can't open the packet context before it's closed, aborting..."));
+		}
+	else
+		{
+	    returnStatus = iModel.PktSharedData().iContext1.OpenNewContext(iModel.PktSharedData().iPacket, iModel.PktSharedData().iContextName);
+		if (KErrNone != returnStatus)
+			{
+			INFO_PRINTF2(_L("RPacketContext::OpenNewContext() ret = %d\n"), returnStatus);
+			}
+	    INFO_PRINTF2(_L("RPacketContext::OpenNewContext() ret = %d\n"), returnStatus);
+	    INFO_PRINTF2(_L("Context Name = %S\n"), &iModel.PktSharedData().iContextName);
+		}
+	}
+void CTestLtsyPktTestStepBase::OpenExistingContext()
+	{
+	// Open an existing context
+	TInt returnStatus;
+	returnStatus = iModel.PktSharedData().iContext3.OpenExistingContext(iModel.PktSharedData().iPacket, iModel.PktSharedData().iContextName);
+	INFO_PRINTF2(_L("RPacketContext::OpenExistingContext() ret = %d\n"), returnStatus);
+	INFO_PRINTF2(_L("Context3 Name = %S\n"), &iModel.PktSharedData().iContextName);
+	}
+void CTestLtsyPktTestStepBase::OpenContextUsingUnknownName()
+
+{
+	// Attempt to open a Context using an unknown name
+	TInt returnStatus;
+	TName bogusContextName;
+	bogusContextName.Append(_L("Context"));
+	bogusContextName.AppendNum(10);
+	returnStatus = iModel.PktSharedData().iContext2.OpenExistingContext(iModel.PktSharedData().iPacket, bogusContextName);
+	INFO_PRINTF2(_L("RPacketContext::OpenExistingContext() returnStatus = %d\n"), returnStatus);
+}
+void CTestLtsyPktTestStepBase::CloseExistContext()
+	{
+	// Close Exist Context
+	User::After(1000000);
+	INFO_PRINTF1(_L("CloseExistContext() invoked...\n"));
+	iModel.PktSharedData().iContext1.Close();
+	INFO_PRINTF1(_L("CloseExistContext() OK...\n"));
+	}
+void CTestLtsyPktTestStepBase::GprsInitialiseContext()
+	{
+	TRequestStatus requestStatusInit = KErrNone;
+	INFO_PRINTF1(_L("RPacketContext::InitialiseContext() invoked...\n"));
+    RPacketContext::TDataChannelV2 dataChannel;
+    TPckg<RPacketContext::TDataChannelV2> dataChannelPckg(dataChannel);
+	//iContext1.LoanCommPort(requestStatusLoanCommPort, commPort);
+    iModel.PktSharedData().iContext1.InitialiseContext(requestStatusInit,dataChannelPckg);
+	User::WaitForRequest(requestStatusInit);
+	INFO_PRINTF2(_L("RPacketContext::InitialiseContext() completed %d \n"), requestStatusInit.Int());
+	}
+
+void CTestLtsyPktTestStepBase::NotificationContextStatusChangeCancel()
+	{
+	// cancel the context status change notification request
+	TRequestStatus requestStatusContextStatusChange;
+	INFO_PRINTF1(_L("RPacketContext::NotifyStatusChangeCancel() invoked...\n"));
+	iModel.PktSharedData().iContext1.CancelAsyncRequest(EPacketContextNotifyStatusChange);
+	User::WaitForRequest(requestStatusContextStatusChange);
+	if (requestStatusContextStatusChange == KErrCancel)
+		{
+		INFO_PRINTF1(_L("Notify Context Status Change is KErrCancel\n"));
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Error - Notify Context Status Change status  = %d\n"), requestStatusContextStatusChange.Int());
+		}
+	}
+
+void CTestLtsyPktTestStepBase::NotificationContextStatusChange()
+	{
+	// request notification when context status changes
+	INFO_PRINTF1(_L("RPacketContext::NotifyStatusChange() invoked...\n"));
+	TRequestStatus requestStatusContextStatusChange;
+	RPacketContext::TContextStatus newContextStatus;
+	iModel.PktSharedData().iContext1.NotifyStatusChange(requestStatusContextStatusChange, newContextStatus);
+	if (requestStatusContextStatusChange == KErrNone)
+		{
+		INFO_PRINTF1(_L("Context Status Changed\n"));
+		}
+	else
+		{
+		INFO_PRINTF2(_L("Error - Notify Context Status Change status  = %d\n"), requestStatusContextStatusChange.Int());
+		}
+	}
+void CTestLtsyPktTestStepBase::OpenNewContextQos()
+	{
+	// Create QoS
+	TInt returnStatus;
+	INFO_PRINTF1(_L("OpenNewQoS() invoked...\n"));
+	returnStatus = iModel.PktSharedData().iQoS.OpenNewQoS(iModel.PktSharedData().iContext1, iModel.PktSharedData().iQoSName);
+	INFO_PRINTF2(_L("RPacketQoS::OpenNewQoS() ret = %d\n"), returnStatus);
+	INFO_PRINTF2(_L("Context Name = %S\n"), &iModel.PktSharedData().iQoSName);
+	}
+void CTestLtsyPktTestStepBase::CloseExistContextQos()
+	{
+	// Close QoS
+	INFO_PRINTF1(_L("CloseExistContextQos() invoked...\n"));
+	iModel.PktSharedData().iQoS.Close();
+	User::After(1000000);
+	INFO_PRINTF1(_L("CloseExistContextQos() OK...\n"));
+	}
+void CTestLtsyPktTestStepBase::GprsContextDeleteTest()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("GprsContextDeleteTest() invoked...\n"));
+	iModel.PktSharedData().iContext1.Delete(requestStatus);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketQoS::OpenNewQoS() ret = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked...\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput200000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput200000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	}
+void  CTestLtsyPktTestStepBase::GprsGetQoSProfileTest()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::GetProfileParameters() invoked...\n"));
+	TPckg<RPacketQoS::TQoSGPRSNegotiated> qosNegotiatedPckg(iModel.PktSharedData().iQoSNegotiated);   // pack
+	iModel.PktSharedData().iQoS.GetProfileParameters(requestStatus, qosNegotiatedPckg);
+	User::WaitForRequest(requestStatus);
+	// iQoSNegotiated = qosNegotiatedPckg();   // unpack necessary ???
+	INFO_PRINTF2(_L("    MinPrecedence       = %d\n"), iModel.PktSharedData().iQoSRequested.iMinPrecedence);
+	INFO_PRINTF2(_L("    ReqPrecedence           = %d\n"), iModel.PktSharedData().iQoSRequested.iReqPrecedence);
+	INFO_PRINTF2(_L("    ReqDelay           = %d\n"), iModel.PktSharedData().iQoSRequested.iReqDelay);
+	INFO_PRINTF2(_L("    MinDelay        = %d\n"), iModel.PktSharedData().iQoSRequested.iMinDelay);
+	INFO_PRINTF2(_L("    ReqReliability      = %d\n"), iModel.PktSharedData().iQoSRequested.iReqReliability);
+	INFO_PRINTF2(_L("    MinReliability = %d\n"), iModel.PktSharedData().iQoSRequested.iMinReliability);
+	INFO_PRINTF2(_L("    ReqPeakThroughput = %d\n"), iModel.PktSharedData().iQoSRequested.iReqPeakThroughput);
+	INFO_PRINTF2(_L("    MinPeakThroughput      = %d\n"), iModel.PktSharedData().iQoSRequested.iMinPeakThroughput);
+	INFO_PRINTF2(_L("    ReqMeanThroughput      = %d\n"), iModel.PktSharedData().iQoSRequested.iReqMeanThroughput);
+	INFO_PRINTF2(_L("    MinMeanThroughput      = %d\n"), iModel.PktSharedData().iQoSRequested.iMinMeanThroughput);
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest1()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.1..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EPriorityHighPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EPriorityHighPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass1;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass1;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass1;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass1;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput100;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput100;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest2()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.2..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EPriorityMediumPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass2;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass2;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput2000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput2000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput200;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput200;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest3()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.3..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EPriorityLowPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EPriorityLowPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass3;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass3;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass3;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass3;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput4000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput4000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput500;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput500;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest4()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.4..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass4;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass4;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput8000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput8000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput1000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest5()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.5..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass5;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass5;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput16000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput16000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput2000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput2000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest6()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.6..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput32000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput32000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput5000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput5000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest7()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.7..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput64000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput64000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput10000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput10000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest8()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.8..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput128000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput128000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput20000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput20000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest9()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.9..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput256000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput256000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput50000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput50000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest10()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.10..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput100000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput100000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest11()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.11..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput200000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput200000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest12()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.12..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput500000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput500000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest13()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.13..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput1000000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput1000000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest14()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.14..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput2000000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput2000000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest15()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.15..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput5000000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput5000000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest16()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.16..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput10000000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput10000000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest17()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.17..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput20000000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput20000000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest18()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.18..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput50000000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput50000000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest19()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.29..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+	iModel.PktSharedData().iQoSRequested.iMinPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqPrecedence = RPacketQoS::EUnspecifiedPrecedence;
+	iModel.PktSharedData().iQoSRequested.iReqDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iMinDelay = RPacketQoS::EDelayClass2;
+	iModel.PktSharedData().iQoSRequested.iReqReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iMinReliability = RPacketQoS::EReliabilityClass4;
+	iModel.PktSharedData().iQoSRequested.iReqPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iMinPeakThroughput = RPacketQoS::EPeakThroughput1000;
+	iModel.PktSharedData().iQoSRequested.iReqMeanThroughput = RPacketQoS::EMeanThroughput200000;
+	iModel.PktSharedData().iQoSRequested.iMinMeanThroughput = RPacketQoS::EMeanThroughput200000;
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void  CTestLtsyPktTestStepBase::GprsSetQoSProfileTest20()
+	{
+	TRequestStatus requestStatus = KErrNone;
+	INFO_PRINTF1(_L("RPacketQoS::SetProfileParameters() invoked.20..\n"));
+	INFO_PRINTF1(_L("  Use Assured Mode = True\n"));
+
+	TPckg<RPacketQoS::TQoSGPRSRequested> qosRequestedPckg(iModel.PktSharedData().iQoSRequested);   // pack
+	iModel.PktSharedData().iQoS.SetProfileParameters(requestStatus, qosRequestedPckg);
+	User::WaitForRequest(requestStatus);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), requestStatus.Int());
+	}
+void CTestLtsyPktTestStepBase::GprsContextSetConfigTest1()
+	{
+	// Set Context Config
+	TRequestStatus reqStatusContextConfig = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig2;
+	//contextConfig2.iServiceOption = RPacketContext::KLowSpeedData;
+	contextConfig2.iPdpType  = RPacketContext::EPdpTypeIPv4;
+	contextConfig2.iAccessPointName = KName;
+	//contextConfig2.iPdpAddress = ;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg2(contextConfig2);
+	INFO_PRINTF1(_L("RPacketContext::SetConfig1() invoked...\n"));
+	iModel.PktSharedData().iContext1.SetConfig(reqStatusContextConfig, contextConfigPckg2);
+	User::WaitForRequest(reqStatusContextConfig);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig1() complete = %d\n"), reqStatusContextConfig.Int());
+	}
+void CTestLtsyPktTestStepBase::GprsContextSetConfigTest2()
+	{
+	// Set Context Config
+	TRequestStatus reqStatusContextConfig = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig2;
+	//contextConfig2.iServiceOption = RPacketContext::KLowSpeedData;
+	contextConfig2.iPdpType  = RPacketContext::EPdpTypeIPv6;
+	contextConfig2.iAccessPointName = KName;
+	//contextConfig2.iPdpAddress = ;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg2(contextConfig2);
+	INFO_PRINTF1(_L("RPacketContext::SetConfig2() invoked...\n"));
+	iModel.PktSharedData().iContext1.SetConfig(reqStatusContextConfig, contextConfigPckg2);
+	User::WaitForRequest(reqStatusContextConfig);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig2() complete = %d\n"), reqStatusContextConfig.Int());
+	}
+void CTestLtsyPktTestStepBase::GprsContextSetConfigTest3()
+	{
+	// Set Context Config
+	TRequestStatus reqStatusContextConfig = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig2;
+	//contextConfig2.iServiceOption = RPacketContext::KLowSpeedData;
+	contextConfig2.iPdpType  = RPacketContext::EPdpTypeX25;
+	contextConfig2.iAccessPointName = KName;
+	//contextConfig2.iPdpAddress = ;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg2(contextConfig2);
+	INFO_PRINTF1(_L("RPacketContext::SetConfig3() invoked...\n"));
+	iModel.PktSharedData().iContext1.SetConfig(reqStatusContextConfig, contextConfigPckg2);
+	User::WaitForRequest(reqStatusContextConfig);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig3() complete = %d\n"), reqStatusContextConfig.Int());
+	}
+void CTestLtsyPktTestStepBase::GprsContextSetConfigTest4()
+	{
+	// Set Context Config
+	TRequestStatus reqStatusContextConfig = KErrNone;
+	RPacketContext::TContextConfigGPRS contextConfig2;
+	contextConfig2.iAccessPointName = KName;
+	//contextConfig2.iPdpAddress = ;
+	TPckg<RPacketContext::TContextConfigGPRS> contextConfigPckg2(contextConfig2);
+	INFO_PRINTF1(_L("RPacketContext::SetConfig4() invoked...\n"));
+	iModel.PktSharedData().iContext1.SetConfig(reqStatusContextConfig, contextConfigPckg2);
+	User::WaitForRequest(reqStatusContextConfig);
+	INFO_PRINTF2(_L("RPacketContext::SetConfig4() complete = %d\n"), reqStatusContextConfig.Int());
+	}
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsyshareddata.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,193 @@
+// @file TestTelephonySharedData.cpp
+//
+// Copyright (c) 2004-2007 Symbian Software Ltd. All rights reserved.
+//
+// This contains implementation of Shared Data
+
+// User include
+#include "TestLtsySharedData.h"
+
+// Epoc include
+#include <etelmm.h>
+
+/*@{*/
+/// Literal constants
+_LIT(KSimTsyName,		"SIM");
+_LIT(KPhoneName,		"SimulatorPhone");
+_LIT(KDummyTsyName,		"DMM");
+_LIT(KDMobile,			"DMobile");
+/*@}*/
+
+CTestLtsySharedData* CTestLtsySharedData::NewL()
+	{
+	CTestLtsySharedData*	self=new(ELeave) CTestLtsySharedData();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+CTestLtsySharedData::CTestLtsySharedData()
+:	CBase()
+,	iCallId(CTelephony::EISVCall1)
+,	iCallId1(CTelephony::EISVCall2)
+,	iTelServerConnected(EFalse)
+,	iPhoneModuleLoaded(EFalse)
+,	iPhoneOpened(EFalse)
+,	iPhoneInitialised(EFalse)
+,	iLineOpened(EFalse)
+,	iCallOpened(EFalse)
+,	iTelephony(NULL)
+,	iActiveScheduler(NULL)
+/*
+Constructor
+*/
+	{
+	}
+
+CTestLtsySharedData::~CTestLtsySharedData()
+/*
+Destructor
+*/
+	{
+	ClosePhone();
+	}
+
+void CTestLtsySharedData::ConstructL()
+	{
+	}
+
+TInt CTestLtsySharedData::OpenPhone(const TName& aTsyName, CTestStep& aTestStep)
+/*
+This function will load TSY depending on the comms db
+settings and opens the phone for making a call.
+
+@param - TSY to be loaded
+@param - CTestStep instance
+@leave - system wide error codes
+*/
+	{
+	ClosePhone();
+
+	// Load the phone module depending on the comms DB settings
+	TInt	ret=KErrNone;
+	if(aTsyName.Compare(KSimTsyName) == 0 )
+		{
+		iTSYName = aTsyName;
+		}
+	else if (aTsyName.Compare(KDummyTsyName) == 0 )
+		{
+		iTSYName = aTsyName;
+		}
+	else
+		{
+		ret=KErrArgument;
+		}
+
+	if ( ret==KErrNone )
+		{
+		ret = ReopenPhone();
+		}
+
+	if ( ret!=KErrNone )
+		{
+		aTestStep.ERR_PRINTF2(_L("Failed to open phone. Error code = %d"), ret);
+		aTestStep.SetTestStepResult(EFail);
+		}
+
+	return ret;
+	}
+
+TInt CTestLtsySharedData::ReopenPhone()
+/*
+This function will load TSY depending on the comms db
+settings and opens the phone for making a call.
+
+@param - CTestStep instance
+@leave - system wide error codes
+*/
+	{
+	TRAPD(ret, iActiveScheduler=new (ELeave) CActiveScheduler());
+
+	if ( ret==KErrNone )
+		{
+		CActiveScheduler::Install(iActiveScheduler);
+		ret=iServer.Connect();
+		}
+
+	if ( ret==KErrNone )
+		{
+		iTelServerConnected = ETrue;
+		ret=iServer.LoadPhoneModule(iTSYName);
+		}
+
+	if ( ret==KErrNone )
+		{
+		iPhoneModuleLoaded = ETrue;
+		TRAP(ret, iTelephony=CTelephony::NewL());
+		}
+
+	if ( ret==KErrNone )
+		{
+		// Open the phone
+		if ( iTSYName.Compare(KDummyTsyName) == 0 )
+			{
+			// Open the phone with the Dummy mobile phone name
+			ret = iMobilePhone.Open(iServer, KDMobile);
+			}
+		else
+			{
+			// open the phone with the simuplator phone
+			ret = iMobilePhone.Open(iServer, KPhoneName);
+			}
+		iPhoneOpened = ret==KErrNone;
+		}
+
+	return ret;
+	}
+
+void CTestLtsySharedData::ClosePhone()
+/*
+Closes the RTelServer, RmobilePhone,RMobileCall and RMobileLine opened sessions.
+*/
+	{
+	if ( iCallOpened )
+		{
+		iMobileCall.Close();
+		iCallOpened=EFalse;
+		}
+
+	if ( iLineOpened )
+		{
+		iMobileLine.Close();
+		iLineOpened=EFalse;
+		}
+
+	if ( iPhoneOpened )
+		{
+		iMobilePhone.Close();
+		iPhoneOpened = EFalse;
+		}
+
+	if ( iTelephony!= NULL )
+		{
+		delete iTelephony;
+		iTelephony=NULL;
+		}
+
+	if ( iPhoneModuleLoaded )
+		{
+		iServer.UnloadPhoneModule(iTSYName);
+		iPhoneModuleLoaded = EFalse;
+		}
+
+	if ( iTelServerConnected )
+		{
+		iServer.Close();
+		iTelServerConnected = EFalse;
+		}
+
+	CActiveScheduler::Install(NULL);
+	delete iActiveScheduler;
+	iActiveScheduler=NULL;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsack.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,86 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsack.h"
+
+CTestLtsySmsAck::CTestLtsySmsAck(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsAck::~CTestLtsySmsAck()
+	{
+	}
+
+CTestLtsySmsAck* CTestLtsySmsAck::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsAck* self = new (ELeave)CTestLtsySmsAck(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsAck* CTestLtsySmsAck::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsAck* self=CTestLtsySmsAck::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsAck::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsAck::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsAck::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsAck::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsAck::doTestStepL called"));
+	TRAPD(err,AckSmsStoredL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when ack sms store"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsAck::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsAck::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsAck::AckSmsStoredL()
+	{
+	TBool full(EFalse);
+	TRequestStatus status;
+	_LIT8(KNullAck,"00");
+	Sms().AckSmsStored(status,KNullAck(),full);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("AckSmsStored() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsatutil.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,221 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// @file testltsysmsatutil.cpp
+// This contains SmsAtUtil which is util for Sms At command
+// 
+
+// user include
+#include "testltsysmsatutil.h"
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertAsciiToBinary
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt SmsAtUtil::ConvertAsciiToBinary(const TDesC8& aAscii,TDes8& aData)
+	{
+	aData.Zero();
+	TLex8 lex;
+	TUint8 val;
+	TInt ret;
+	const TInt count(aAscii.Length());
+	for(TInt i = 0;i < count;i = i + 2)
+		{
+		lex = aAscii.Mid(i,2);
+		ret = lex.Val(val,EHex);
+		if(ret != KErrNone)
+			{
+			return ret;
+			}
+		aData.Append(val);
+		}
+	return KErrNone;
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::AppendDataToAscii
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void SmsAtUtil::AppendDataToAscii(TDes8& aAscii,const TDesC8& aData)
+ 	{
+	const TInt count(aData.Length());
+//	__ASSERT_DEBUG((aAscii.MaxLength()-aAscii.MaxLength())<=(count*2),Panic(EATSmsUtilsDescriptorOverflow));
+
+	for(TInt i = 0; i < count; ++i)
+		{
+		AppendOctet(aData[i],aAscii);
+		}
+		
+//	__ASSERT_DEBUG(aAscii.Length()%2==0,Panic(EATSmsUtilsOddNumberOfSemiOctets));
+	}
+
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::IsAddressChar
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TBool SmsAtUtil::IsAddressChar(TChar aChar)
+ 	{
+	if(aChar.IsDigit())
+		{
+		return ETrue;
+		}
+	if(aChar == TChar('*') ||
+	   aChar == TChar('#') ||
+	   aChar == TChar('a') ||
+	   aChar == TChar('b') ||
+	   aChar == TChar('c'))
+		{
+		return ETrue;
+		}
+	return EFalse;
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertNumberingPlan
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobileNPI SmsAtUtil::ConvertNumberingPlan(TInt aValue)
+	{
+	switch(aValue)
+		{
+		// The below 'magic numbers' come from the ETSI 03.40
+		// specification for Address Fields (section 9.1.2.5)
+	case 1:
+		return RMobilePhone::EIsdnNumberPlan;
+	case 3:
+		return RMobilePhone::EDataNumberPlan;
+	case 4:
+		return RMobilePhone::ETelexNumberPlan;
+	case 8:
+		return RMobilePhone::ENationalNumberPlan;
+	case 9:
+		return RMobilePhone::EPrivateNumberPlan;
+	default:
+		return RMobilePhone::EUnknownNumberingPlan;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertTypeOfNumber
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+RMobilePhone::TMobileTON SmsAtUtil::ConvertTypeOfNumber(TInt aValue) 
+	{
+	switch(aValue)
+		{
+		// The below 'magic numbers' come from the ETSI 03.40
+		// specification for Address Fields (section 9.1.2.5)
+	case 0:		
+		return RMobilePhone::EUnknownNumber;
+	case 1:		
+		return RMobilePhone::EInternationalNumber;
+	case 2:
+		return RMobilePhone::ENationalNumber;
+	case 3:
+		return RMobilePhone::ENetworkSpecificNumber;
+	case 4:
+		return RMobilePhone::ESubscriberNumber;
+	default:
+		return RMobilePhone::EUnknownNumber;
+		}
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::AppendOctet
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+void SmsAtUtil::AppendOctet(TInt aOctet,TDes8& aAscii)
+	{
+	// Ensure client has only passed us a octet (ie. low 8 bits only)
+	aOctet = aOctet&0xff;
+	// Append octet 
+	// (prefix '0' if the octets value only uses one digit as final 
+    //  octet coding must use two digits)
+	if(aOctet <= 0x0f)
+		{
+		aAscii.Append(TChar('0'));
+		}
+	
+	aAscii.AppendNum(aOctet,EHex);
+	}
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertAddressChar
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TInt SmsAtUtil::ConvertAddressChar(TChar aChar)
+ 	{
+	aChar.LowerCase();
+	if(aChar-TChar('0') <= 9)
+		{
+		// it should be digital number from 0~9
+		return aChar-TChar('0');
+		}
+	else if(aChar == TChar('*'))
+		{
+		return 10;
+		}
+	else if(aChar == TChar('#'))
+		{
+		return 11;
+		}
+	else if(aChar == TChar('a'))
+		{
+		return 12;
+		}
+	else if(aChar == TChar('b'))
+		{
+		return 13;
+		}
+	else if(aChar == TChar('c'))
+		{
+		return 14;
+		}
+	return 15;
+	}	
+
+// ---------------------------------------------------------------------------
+// SmsAtUtil::ConvertAddressChar
+// other items were commented in a header
+// ---------------------------------------------------------------------------
+TChar SmsAtUtil::ConvertAddressChar(TInt aBinary)
+	{
+	if(aBinary >= 0 && aBinary <= 9)
+		{
+		return TChar(aBinary) + TChar('0');  	// Assumes digit characters are one after each other
+		}
+	else if(aBinary == 10)
+		{
+		return TChar('*');
+		}
+	else if(aBinary == 11)
+		{
+		return TChar('#');
+		}
+	else if(aBinary == 12)
+		{
+		return TChar('a');
+		}
+	else if(aBinary == 13)
+		{
+		return TChar('b');
+		}
+	else if(aBinary == 14)
+		{
+		return TChar('c');
+		}
+	return TChar(0);		// This is the cloest I can find to a NULL char 
+	}
+
+// End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsbase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,158 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Implementation of the Class CTestLtsySmsBase
+// 
+//
+
+// user include
+#include "testltsysmsbase.h"
+#include "testltsysmsshareddata.h"
+
+//const define
+_LIT16(KPhoneTSY, "phonetsy");
+
+
+/**
+ * Constructor
+ * 
+ */
+CTestLtsySmsBase::CTestLtsySmsBase(CTestLtsyModel& aTestModel):
+                                   iModel(aTestModel)
+	{
+	}
+
+/**
+ * Destructor
+ *
+ */
+CTestLtsySmsBase::~CTestLtsySmsBase()
+	{
+
+	}
+
+TVerdict CTestLtsySmsBase::doTestStepPreambleL()
+	{
+	OpenPhoneL();
+	
+	if (TestStepResult() == EPass)
+		{
+		GetIndex();
+		}
+
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsBase::doTestStepPostambleL()
+	{
+	return TestStepResult();
+	}
+
+/**
+ * Get sms message number
+ * 
+ */
+void CTestLtsySmsBase::GetIndex()
+	{
+	iIndexNum = 0;
+	iStoreIndex = 0;
+	}
+
+void CTestLtsySmsBase::OpenPhoneL()
+	{
+	INFO_PRINTF1(_L("starting opne phone"));
+		
+	if (!iModel.SharedEnv().PhoneOpened())
+		{
+		iModel.SharedEnv().OpenPhoneL(KPhoneTSY);
+		}
+	}
+/**
+ * Open sms message
+ * 
+ */
+void CTestLtsySmsBase::OpenSmsL()
+	{
+	RMobileSmsMessaging smsMsg;
+	iModel.SmsSharedData().SmsMessagingArray().AppendL(smsMsg);
+    
+	iIndexNum = iModel.SmsSharedData().SmsMessagingArray().Count()-1;
+    
+	TInt ret( KErrNone );
+    ret = Sms().Open(iModel.SharedEnv().Phone());
+	if (KErrNone != ret)
+		{
+		INFO_PRINTF1(_L("Can't open the RMobileSmsMessaging service"));
+		SetTestStepResult(EFail);
+		}
+	}
+
+/**
+ * Get the sms object
+ * 
+ */
+RMobileSmsMessaging& CTestLtsySmsBase::Sms()
+	{
+	return iModel.SmsSharedData().SmsMessagingArray()[iIndexNum];
+	}
+
+/**
+ * Get the sms store object
+ * 
+ */
+RMobileSmsStore& CTestLtsySmsBase::SmsStore()
+	{
+	return iModel.SmsSharedData().SmsStoreArray()[iStoreIndex];
+	}
+
+/**
+ * Open sms message store
+ * 
+ */
+void CTestLtsySmsBase::OpenSmsStoreL()
+	{
+	RMobileSmsStore smsStore;
+	iModel.SmsSharedData().SmsStoreArray().AppendL(smsStore);
+
+	iStoreIndex = iModel.SmsSharedData().SmsStoreArray().Count()-1;
+
+	TInt ret = SmsStore().Open(Sms(), KETelIccSmsStore);
+	if (KErrNone != ret)
+		{
+		ERR_PRINTF1(_L("Can't open the RMobileSmsStore service"));
+		SetTestStepResult(EFail);
+		}
+	}
+
+/**
+ * Close sms
+ */
+void CTestLtsySmsBase::CloseSmsL()
+	{
+	Sms().Close();
+	iModel.SmsSharedData().SmsMessagingArray().Remove(iIndexNum);
+	iModel.SmsSharedData().SmsMessagingArray().Compress();
+	}
+
+/**
+ * Close sms store
+ * 
+ */
+void CTestLtsySmsBase::CloseSmsStoreL()
+	{
+	SmsStore().Close();
+	iModel.SmsSharedData().SmsStoreArray().Remove(iStoreIndex);
+	iModel.SmsSharedData().SmsStoreArray().Compress();
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmscontrolreceivesmscase1step.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,111 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Example CTestStep derived implementation
+// 
+//
+
+/**
+ @file CTestLtsySmsControlReceiveSmsCase1Step.cpp
+ @internalTechnology
+*/
+#include "testltsysmscontrolreceivesmscase1step.h"
+#include "te_integration_stltsysuitedefs.h"
+
+CCTestLtsySmsControlReceiveSmsCase1Step::~CCTestLtsySmsControlReceiveSmsCase1Step()
+/**
+ * Destructor
+ */
+	{
+	}
+
+CCTestLtsySmsControlReceiveSmsCase1Step::CCTestLtsySmsControlReceiveSmsCase1Step()
+/**
+ * Constructor
+ */
+	{
+	// **MUST** call SetTestStepName in the constructor as the controlling
+	// framework uses the test step name immediately following construction to set
+	// up the step's unique logging ID.
+	SetTestStepName(KCTestLtsySmsControlReceiveSmsCase1Step);
+	}
+
+TVerdict CCTestLtsySmsControlReceiveSmsCase1Step::doTestStepPreambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+	{
+	INFO_PRINTF1(_L("Please delete this line or modify it. I am in Test Step Preamble in Class CCTestLtsySmsControlReceiveSmsCase1Step"));
+	// uncomment the following 3 lines if you have common pre setting to all the test steps in there
+	// CTe_integration_stltsySuiteStepBase::doTestStepPreambleL();
+	// if (TestStepResult()!=EPass)
+	//    return   TestStepResult();
+	// process some pre setting to this test step then set SetTestStepResult to EFail or Epass.
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+
+TVerdict CCTestLtsySmsControlReceiveSmsCase1Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+	{
+	  if (TestStepResult()==EPass)
+		{
+
+		//  ************** Delete the Block, the block start ****************
+		INFO_PRINTF1(_L("Please modify me. I am in CCTestLtsySmsControlReceiveSmsCase1Step::doTestStepL() in the file CTestLtsySmsControlReceiveSmsCase1Step.cpp"));  //Block start
+		TPtrC TheString;
+		TBool TheBool;
+		TInt TheInt;
+		if(!GetStringFromConfig(ConfigSection(),KTe_integration_stltsySuiteString, TheString) ||
+			!GetBoolFromConfig(ConfigSection(),KTe_integration_stltsySuiteBool,TheBool) ||
+			!GetIntFromConfig(ConfigSection(),KTe_integration_stltsySuiteInt,TheInt)
+			)
+			{
+			// Leave if there's any error.
+			User::Leave(KErrNotFound);
+			}
+		else
+			{
+			INFO_PRINTF4(_L("The test step is %S, The Bool is %d, The int-value is %d"), &TheString, TheBool,TheInt); // Block end
+			}
+
+		//  **************   Block end ****************
+
+		SetTestStepResult(EPass);
+		}
+	  return TestStepResult();
+	}
+
+
+
+TVerdict CCTestLtsySmsControlReceiveSmsCase1Step::doTestStepPostambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+	{
+	INFO_PRINTF1(_L("Please delete this line or modify it. I am in Test Step Postamble in Class CCTestLtsySmsControlReceiveSmsCase1Step"));
+	// process something post setting to the test step
+	// uncomment the following line if you have common post setting to all the test steps in there
+	// CTe_integration_stltsySuiteStepBase::doTestStepPostambleL();
+	// uncomment the following line if you have post process or remove the following line if no post process
+	// SetTestStepResult(EPass);		// or EFail
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmscontrolsendsmscase1step.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,111 @@
+// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Example CTestStep derived implementation
+// 
+//
+
+/**
+ @file CTestLtsySmsControlSendSmsCase1Step.cpp
+ @internalTechnology
+*/
+#include "testltsysmscontrolsendsmscase1step.h"
+#include "te_integration_stltsysuitedefs.h"
+
+CCTestLtsySmsControlSendSmsCase1Step::~CCTestLtsySmsControlSendSmsCase1Step()
+/**
+ * Destructor
+ */
+	{
+	}
+
+CCTestLtsySmsControlSendSmsCase1Step::CCTestLtsySmsControlSendSmsCase1Step()
+/**
+ * Constructor
+ */
+	{
+	// **MUST** call SetTestStepName in the constructor as the controlling
+	// framework uses the test step name immediately following construction to set
+	// up the step's unique logging ID.
+	SetTestStepName(KCTestLtsySmsControlSendSmsCase1Step);
+	}
+
+TVerdict CCTestLtsySmsControlSendSmsCase1Step::doTestStepPreambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+	{
+	INFO_PRINTF1(_L("Please delete this line or modify it. I am in Test Step Preamble in Class CCTestLtsySmsControlSendSmsCase1Step"));
+	// uncomment the following 3 lines if you have common pre setting to all the test steps in there
+	// CTe_integration_stltsySuiteStepBase::doTestStepPreambleL();
+	// if (TestStepResult()!=EPass)
+	//    return   TestStepResult();
+	// process some pre setting to this test step then set SetTestStepResult to EFail or Epass.
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+
+TVerdict CCTestLtsySmsControlSendSmsCase1Step::doTestStepL()
+/**
+ * @return - TVerdict code
+ * Override of base class pure virtual
+ * Our implementation only gets called if the base class doTestStepPreambleL() did
+ * not leave. That being the case, the current test result value will be EPass.
+ */
+	{
+	  if (TestStepResult()==EPass)
+		{
+
+		//  ************** Delete the Block, the block start ****************
+		INFO_PRINTF1(_L("Please modify me. I am in CCTestLtsySmsControlSendSmsCase1Step::doTestStepL() in the file CTestLtsySmsControlSendSmsCase1Step.cpp"));  //Block start
+		TPtrC TheString;
+		TBool TheBool;
+		TInt TheInt;
+		if(!GetStringFromConfig(ConfigSection(),KTe_integration_stltsySuiteString, TheString) ||
+			!GetBoolFromConfig(ConfigSection(),KTe_integration_stltsySuiteBool,TheBool) ||
+			!GetIntFromConfig(ConfigSection(),KTe_integration_stltsySuiteInt,TheInt)
+			)
+			{
+			// Leave if there's any error.
+			User::Leave(KErrNotFound);
+			}
+		else
+			{
+			INFO_PRINTF4(_L("The test step is %S, The Bool is %d, The int-value is %d"), &TheString, TheBool,TheInt); // Block end
+			}
+
+		//  **************   Block end ****************
+
+		SetTestStepResult(EPass);
+		}
+	  return TestStepResult();
+	}
+
+
+
+TVerdict CCTestLtsySmsControlSendSmsCase1Step::doTestStepPostambleL()
+/**
+ * @return - TVerdict code
+ * Override of base class virtual
+ */
+	{
+	INFO_PRINTF1(_L("Please delete this line or modify it. I am in Test Step Postamble in Class CCTestLtsySmsControlSendSmsCase1Step"));
+	// process something post setting to the test step
+	// uncomment the following line if you have common post setting to all the test steps in there
+	// CTe_integration_stltsySuiteStepBase::doTestStepPostambleL();
+	// uncomment the following line if you have post process or remove the following line if no post process
+	// SetTestStepResult(EPass);		// or EFail
+	return TestStepResult();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsdelete.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,84 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsdelete.h"
+
+CTestLtsySmsDelete::CTestLtsySmsDelete(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsDelete::~CTestLtsySmsDelete()
+	{
+	}
+
+CTestLtsySmsDelete* CTestLtsySmsDelete::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsDelete* self = new (ELeave)CTestLtsySmsDelete(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsDelete* CTestLtsySmsDelete::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsDelete* self=CTestLtsySmsDelete::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsDelete::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsDelete::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDelete::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsDelete::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDelete::doTestStepL called"));
+	TInt index(6);
+	TRAPD(err,DeleteSmsL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsDelete::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDelete::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+void CTestLtsySmsDelete::DeleteSmsL(TInt aIndex)
+	{
+	TRequestStatus status;
+	SmsStore().Delete(status,aIndex);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Delete() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsdeleteall.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,83 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsdeleteall.h"
+
+CTestLtsySmsDeleteAll::CTestLtsySmsDeleteAll(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsDeleteAll::~CTestLtsySmsDeleteAll()
+	{
+	}
+
+CTestLtsySmsDeleteAll* CTestLtsySmsDeleteAll::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsDeleteAll* self = new (ELeave)CTestLtsySmsDeleteAll(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsDeleteAll* CTestLtsySmsDeleteAll::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsDeleteAll* self=CTestLtsySmsDeleteAll::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsDeleteAll::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsDeleteAll::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDeleteAll::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsDeleteAll::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDeleteAll::doTestStepL called"));
+	TRAPD(err,DeleteAllSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete all"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsDeleteAll::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDeleteAll::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+void CTestLtsySmsDeleteAll::DeleteAllSmsL()
+	{
+	TRequestStatus status;
+	SmsStore().DeleteAll( status );
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("DeleteAll() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsdeleteinvalidindex.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,99 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsdeleteinvalidindex.h"
+
+CTestLtsySmsDeleteInvalidIndex::CTestLtsySmsDeleteInvalidIndex(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsDeleteInvalidIndex::~CTestLtsySmsDeleteInvalidIndex()
+	{
+	}
+
+CTestLtsySmsDeleteInvalidIndex* CTestLtsySmsDeleteInvalidIndex::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsDeleteInvalidIndex* self = new (ELeave)CTestLtsySmsDeleteInvalidIndex(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsDeleteInvalidIndex* CTestLtsySmsDeleteInvalidIndex::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsDeleteInvalidIndex* self=CTestLtsySmsDeleteInvalidIndex::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsDeleteInvalidIndex::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsDeleteInvalidIndex::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDeleteInvalidIndex::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsDeleteInvalidIndex::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDeleteInvalidIndex::doTestStepL called"));
+	TInt index(0);
+	TRAPD(err,DeleteSmsL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	index = 46;
+	TRAPD(err1,DeleteSmsL(index));
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = -1;
+	TRAPD(err2,DeleteSmsL(index));
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err2);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsDeleteInvalidIndex::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsDeleteInvalidIndex::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+void CTestLtsySmsDeleteInvalidIndex::DeleteSmsL(TInt aIndex)
+	{
+	TRequestStatus status;
+	SmsStore().Delete(status,aIndex);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Delete() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsnack.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,91 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsnack.h"
+#include "testltsysmsatutil.h"
+
+CTestLtsySmsNack::CTestLtsySmsNack(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsNack::~CTestLtsySmsNack()
+	{
+	}
+
+CTestLtsySmsNack* CTestLtsySmsNack::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsNack* self = new (ELeave)CTestLtsySmsNack(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsNack* CTestLtsySmsNack::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsNack* self=CTestLtsySmsNack::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsNack::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsNack::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsNack::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsNack::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsNack::doTestStepL called"));
+	TRAPD(err,NackSmsStoredL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when nack sms store"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsNack::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsNack::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsNack::NackSmsStoredL()
+	{
+	_LIT8(KTest,"9f05");
+	TBuf8<12> nackAsciiTest = KTest();
+	TBuf8<12> nackTest;
+	SmsAtUtil::ConvertAsciiToBinary(nackAsciiTest,nackTest);
+	TRequestStatus status;
+	TInt rpCause(2);  
+	
+	Sms().NackSmsStored(status,nackTest,rpCause);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("AckSmsStored() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsread.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,93 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsread.h"
+#include "testltsysmsatutil.h"
+
+CTestLtsySmsRead::CTestLtsySmsRead(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsRead::~CTestLtsySmsRead()
+	{
+	}
+
+CTestLtsySmsRead* CTestLtsySmsRead::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsRead* self = new (ELeave)CTestLtsySmsRead(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsRead* CTestLtsySmsRead::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsRead* self=CTestLtsySmsRead::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsRead::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsRead::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsRead::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsRead::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsRead::doTestStepL called"));
+	TInt index(6);
+	TRAPD(err,ReadSmsL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsRead::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsRead::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+void CTestLtsySmsRead::ReadSmsL(TInt aIndex)
+	{
+	TRequestStatus status;
+	TPckg<RMobileSmsStore::TMobileGsmSmsEntryV1> pckgEntryV1(iEntryV1);
+	iEntryV1.iIndex = aIndex;		
+	SmsStore().Read(status, pckgEntryV1);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Delete() request status = %d"),r);
+	TBuf<400>  msgAsciiData;
+	TBuf8<400> msgAscii; 
+	SmsAtUtil::AppendDataToAscii(msgAscii,iEntryV1.iMsgData);
+	msgAsciiData.Copy( msgAscii );
+	INFO_PRINTF4(_L("SmsStoreRead index=%d,status=%d,msgData=%S\n"),
+			        iEntryV1.iIndex,iEntryV1.iMsgStatus,&msgAsciiData);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsreadinvalidindex.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,109 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsreadinvalidindex.h"
+#include "testltsysmsatutil.h"
+
+CTestLtsySmsReadInvalidIndex::CTestLtsySmsReadInvalidIndex(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsReadInvalidIndex::~CTestLtsySmsReadInvalidIndex()
+	{
+	}
+
+CTestLtsySmsReadInvalidIndex* CTestLtsySmsReadInvalidIndex::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsReadInvalidIndex* self = new (ELeave)CTestLtsySmsReadInvalidIndex(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsReadInvalidIndex* CTestLtsySmsReadInvalidIndex::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsReadInvalidIndex* self=CTestLtsySmsReadInvalidIndex::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsReadInvalidIndex::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsReadInvalidIndex::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsReadInvalidIndex::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsReadInvalidIndex::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsReadInvalidIndex::doTestStepL called"));
+	TInt index(0);
+	TRAPD(err,ReadSmsL(index));
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = -2;
+	TRAPD(err1,ReadSmsL(index));
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+	index = 50;
+	TRAPD(err2,ReadSmsL(index));
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when delete sms"),err2);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsReadInvalidIndex::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsReadInvalidIndex::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+void CTestLtsySmsReadInvalidIndex::ReadSmsL(TInt aIndex)
+	{
+	TRequestStatus status;
+	TPckg<RMobileSmsStore::TMobileGsmSmsEntryV1> pckgEntryV1(iEntryV1);
+	iEntryV1.iIndex = aIndex;		
+	SmsStore().Read(status, pckgEntryV1);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Delete() request status = %d"),r);
+	TBuf<400>  msgAsciiData;
+	TBuf8<400> msgAscii; 
+	SmsAtUtil::AppendDataToAscii(msgAscii,iEntryV1.iMsgData);
+	msgAsciiData.Copy( msgAscii );
+	INFO_PRINTF4(_L("SmsStoreRead index=%d,status=%d,msgData=%S\n"),
+			        iEntryV1.iIndex,iEntryV1.iMsgStatus,&msgAsciiData);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsreceive.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,81 @@
+//
+// testltsysmsreceive.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+//user include
+#include "testltsysmsreceive.h"
+#include "smsatutil.h"
+
+
+CTestLtsySmsReceive::CTestLtsySmsReceive(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsReceive::~CTestLtsySmsReceive()
+	{
+	}
+
+CTestLtsySmsReceive* CTestLtsySmsReceive::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsReceive* self = new (ELeave)CTestLtsySmsReceive(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsReceive* CTestLtsySmsReceive::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsReceive* self=CTestLtsySmsReceive::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsReceive::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsReceive::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsReceive::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsReceive::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsReceive::doTestStepL called"));
+	TRAPD(err,ReceiveSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when receive sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsReceive::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsReceive::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsReceive::ReceiveSmsL()
+	{
+	TRequestStatus status;
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1 receiveAttr;
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg receiveAttrPckg(receiveAttr);
+	Sms().ReceiveMessage(status, iRecvMsg, receiveAttrPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	TBuf<200>  outReceive;
+	outReceive.Copy(iRecvMsg);
+	INFO_PRINTF2(_L("Receiveing TPDU=%S"),&outReceive);
+	INFO_PRINTF2(_L("ReceiveMessage() request status = %d"),r);
+	}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmssend.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,98 @@
+//
+// testltsysmssend.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+//user include
+#include "testltsysmssend.h"
+#include "testltsysmsatutil.h"
+//constant defination
+_LIT8(KSmsMessagingData,"11000D91683156211075f6000800064F60597D0021");
+_LIT(KSmsSCA,"8613800100500");  
+
+CTestLtsySmsSend::CTestLtsySmsSend(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsSend::~CTestLtsySmsSend()
+	{
+	}
+
+CTestLtsySmsSend* CTestLtsySmsSend::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsSend* self = new (ELeave)CTestLtsySmsSend(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsSend* CTestLtsySmsSend::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsSend* self=CTestLtsySmsSend::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsSend::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsSend::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsSend::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsSend::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsSend::doTestStepL called"));
+	TRAPD(err,SendSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when send message"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsSend::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsSend::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsSend::SendSmsL()
+	{
+	TRequestStatus status;
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttPckg(iSmsAttr);
+	TPtrC8 smsAsciiPdu(KSmsMessagingData);
+	TBuf8<200>  smsPdu;
+	SmsAtUtil::ConvertAsciiToBinary(smsAsciiPdu,smsPdu);
+	FillSmsAttibutes(KSmsSCA());
+	Sms().SendMessage(status,smsPdu,smsAttPckg);   
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("SendMessage() request status = %d"),r);
+	}
+
+void CTestLtsySmsSend::FillSmsAttibutes(const TDesC& aTelNumber)
+	{
+	_LIT8(KSubmit, "Submit");
+    iSmsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::EInternationalNumber;
+    iSmsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::EIsdnNumberPlan;
+    iSmsAttr.iGsmServiceCentre.iTelNumber.Copy(aTelNumber);
+    iSmsAttr.iCdmaServiceCategory = 0;
+    iSmsAttr.iCdmaTeleservice = 0;
+    iSmsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu;
+    iSmsAttr.iFlags = 0;
+    iSmsAttr.iMsgRef = 0;
+    iSmsAttr.iSubmitReport = KSubmit;
+    iSmsAttr.iMore = EFalse;
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmssendinvalidparam.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,176 @@
+//
+// testltsysmssendinvalidparam.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+//user include
+#include "testltsysmssendinvalidparam.h"
+#include "testltsysmsatutil.h"
+//constant defination
+_LIT8(KSmsMessagingData,"11000D91683156211075f6000800064F60597D0021");
+_LIT8(KSmsMessagingData1,"11000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F60597D002111000D91683156211075f6000800064F6059");
+_LIT(KSmsSCA,"8613800100500");  
+_LIT(KSmsSCA1,"8613800100500138001005001380010050013800100500138001005001380010050013800100500138001005001380010050");   
+_LIT(KSmsSCA2,"86138*#abc0W0"); 
+
+CTestLtsySmsSendInvalidParam::CTestLtsySmsSendInvalidParam(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsSendInvalidParam::~CTestLtsySmsSendInvalidParam()
+	{
+	}
+
+CTestLtsySmsSendInvalidParam* CTestLtsySmsSendInvalidParam::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsSendInvalidParam* self = new (ELeave)CTestLtsySmsSendInvalidParam(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsSendInvalidParam* CTestLtsySmsSendInvalidParam::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsSendInvalidParam* self=CTestLtsySmsSendInvalidParam::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsSendInvalidParam::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsSendInvalidParam::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsSendInvalidParam::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsSendInvalidParam::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsSendInvalidParam::doTestStepL called"));
+	TRAPD(err,SendSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when send message"),err);
+	    SetTestStepResult(EFail);
+		}
+	
+	TRAPD(err1,SendSms1L());
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when send message"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+	TRAPD(err2,SendSmsL());
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when send message"),err2);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsSendInvalidParam::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsSendInvalidParam::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsSendInvalidParam::SendSmsL()
+	{
+	TRequestStatus status;
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttPckg(iSmsAttr);
+	//There is too long data
+	TPtrC8 smsAsciiPdu(KSmsMessagingData1);
+	TBuf8<200>  smsPdu;
+	SmsAtUtil::ConvertAsciiToBinary(smsAsciiPdu,smsPdu);
+	FillSmsAttibutes(KSmsSCA());
+	Sms().SendMessage(status,smsPdu,smsAttPckg);   
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("SendMessage() request status = %d"),r);
+	}
+
+void CTestLtsySmsSendInvalidParam::FillSmsAttibutes(const TDesC& aTelNumber)
+	{
+	_LIT8(KSubmit, "Submit");
+    iSmsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::ENationalNumber;
+    iSmsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::ENationalNumberPlan; 
+    iSmsAttr.iGsmServiceCentre.iTelNumber.Copy(aTelNumber);
+    iSmsAttr.iCdmaServiceCategory = 0;
+    iSmsAttr.iCdmaTeleservice = 0;
+    iSmsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu;
+    iSmsAttr.iFlags = 0;
+    iSmsAttr.iMsgRef = 0;
+    iSmsAttr.iSubmitReport = KSubmit;
+    iSmsAttr.iMore = EFalse;
+	}
+void CTestLtsySmsSendInvalidParam::SendSms1L()
+	{
+	TRequestStatus status;
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttPckg(iSmsAttr);
+	TPtrC8 smsAsciiPdu(KSmsMessagingData);
+	TBuf8<200>  smsPdu;
+	SmsAtUtil::ConvertAsciiToBinary(smsAsciiPdu,smsPdu);
+	//There is too long sca
+	FillSmsAttibutes(KSmsSCA1());
+	Sms().SendMessage(status,smsPdu,smsAttPckg);   
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("SendMessage() request status = %d"),r);
+	}
+
+void CTestLtsySmsSendInvalidParam::FillSmsAttibutes1(const TDesC& aTelNumber)
+	{
+	_LIT8(KSubmit, "Submit");
+    iSmsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::EInternationalNumber;
+    iSmsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::EIsdnNumberPlan;
+    iSmsAttr.iGsmServiceCentre.iTelNumber.Copy(aTelNumber);
+    iSmsAttr.iCdmaServiceCategory = 0;
+    iSmsAttr.iCdmaTeleservice = 0;
+    iSmsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu;
+    iSmsAttr.iFlags = 0;
+    iSmsAttr.iMsgRef = 0;
+    iSmsAttr.iSubmitReport = KSubmit;
+    iSmsAttr.iMore = EFalse;
+	}
+void CTestLtsySmsSendInvalidParam::SendSms2L()
+	{
+	TRequestStatus status;
+	RMobileSmsMessaging::TMobileSmsSendAttributesV1Pckg smsAttPckg(iSmsAttr);
+	TPtrC8 smsAsciiPdu(KSmsMessagingData);
+	TBuf8<200>  smsPdu;
+	SmsAtUtil::ConvertAsciiToBinary(smsAsciiPdu,smsPdu);
+	//There is special sca
+	FillSmsAttibutes(KSmsSCA2());
+	Sms().SendMessage(status,smsPdu,smsAttPckg);   
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("SendMessage() request status = %d"),r);
+	}
+
+void CTestLtsySmsSendInvalidParam::FillSmsAttibutes2(const TDesC& aTelNumber)
+	{
+	_LIT8(KSubmit, "Submit");
+	//There is different TypeOfNumber and NumberPlan
+    iSmsAttr.iGsmServiceCentre.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+    iSmsAttr.iGsmServiceCentre.iNumberPlan = RMobilePhone::EUnknownNumberingPlan;
+    iSmsAttr.iGsmServiceCentre.iTelNumber.Copy(aTelNumber);
+    iSmsAttr.iCdmaServiceCategory = 0;
+    iSmsAttr.iCdmaTeleservice = 0;
+    iSmsAttr.iDataFormat = RMobileSmsMessaging::EFormatGsmTpdu;
+    iSmsAttr.iFlags = 0;
+    iSmsAttr.iMsgRef = 0;
+    iSmsAttr.iSubmitReport = KSubmit;
+    iSmsAttr.iMore = EFalse;
+	}
+
+//End of file
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsshareddata.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,87 @@
+// TestTelephonySmsSharedData.cpp
+// Copyright (c) Symbian Software Ltd 2008. All rights reserved.
+//
+// Implementation of the Class CTestTelephonySmsSharedData
+
+// CTSY include
+
+// user include
+#include "TestLtsySmsSharedData.h"
+
+/**
+ * Constructor
+ * 
+ */
+CTestLtsySmsSharedData::CTestLtsySmsSharedData()
+	{
+	}
+
+/**
+ * Factory function to create a new CTestLtsySmsSharedData object
+ * 
+ */
+CTestLtsySmsSharedData*CTestLtsySmsSharedData:: NewL()
+	{
+	CTestLtsySmsSharedData* self = new (ELeave) CTestLtsySmsSharedData();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+/**
+ * Destructor
+ * 
+ */
+CTestLtsySmsSharedData::~CTestLtsySmsSharedData()
+	{
+	Reset();
+	}
+
+/**
+ * Delete all message, message store objects
+ * 
+ */
+void CTestLtsySmsSharedData::Reset()
+	{
+	for(TInt i = iMessaging.Count()-1; i >= 0; i--)
+		{
+		iMessaging[i].Close();
+		}
+	
+	for(TInt j = iSmsStore.Count()-1; j >= 0; j--)
+		{
+		iSmsStore[j].Close();
+		}
+	
+	iMessaging.Reset();
+	iSmsStore.Reset();
+	}
+
+/**
+ * ConstructL
+ * 
+ */
+void CTestLtsySmsSharedData::ConstructL()
+	{
+	}
+
+/**
+ * return sms array
+ * 
+ */
+RArray<RMobileSmsMessaging>& CTestLtsySmsSharedData::SmsMessagingArray()
+	{
+	return iMessaging;
+	}
+
+/**
+ * return sms store array
+ * 
+ */
+RArray<RMobileSmsStore>& CTestLtsySmsSharedData::SmsStoreArray()
+	{
+	return iSmsStore;
+	}
+
+// end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsstore.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,150 @@
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// 
+// 
+
+//user include
+#include "testltsysmsstore.h"
+#include "testltsysmsatutil.h"
+
+CTestLtsySmsStore::CTestLtsySmsStore(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsStore::~CTestLtsySmsStore()
+	{
+	}
+
+CTestLtsySmsStore* CTestLtsySmsStore::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsStore* self = new (ELeave)CTestLtsySmsStore(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsStore* CTestLtsySmsStore::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsStore* self=CTestLtsySmsStore::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsStore::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsStore::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsStore::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsStore::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsStore::doTestStepL called"));
+	TRAPD(err,StoreSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when store sms"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsStore::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsStore::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+void CTestLtsySmsStore::StoreSmsL()
+	{
+	ReceiveSmsL();
+	TRAPD(err,WriteSmsL());
+	if(err != KErrNone)
+		{
+		NackSmsStoredL();
+		}
+	else
+		{
+		AckSmsStoredL();
+		}
+	}
+
+void CTestLtsySmsStore::ReceiveSmsL()
+	{
+	TRequestStatus status;
+	RMobileSmsMessaging::TMobileSmsReceiveAttributesV1Pckg receiveAttrPckg(iReceiveAttr);
+	Sms().ReceiveMessage(status, iRecvMsg, receiveAttrPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	TBuf<200>  outReceive;
+	outReceive.Copy(iRecvMsg);
+	INFO_PRINTF2(_L("Receiveing TPDU=%S"),&outReceive);
+	INFO_PRINTF2(_L("ReceiveMessage() request status = %d"),r);
+	}
+
+void CTestLtsySmsStore::WriteSmsL()
+	{
+	TRequestStatus status;
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	smsWriteAddr.iTypeOfNumber = iReceiveAttr.iGsmServiceCentre.iTypeOfNumber;
+	smsWriteAddr.iNumberPlan = iReceiveAttr.iGsmServiceCentre.iNumberPlan;
+	smsWriteAddr.iTelNumber = iReceiveAttr.iGsmServiceCentre.iTelNumber;
+	
+	//For GsmTpdu
+    TBuf8<400>   writePduData; 
+    writePduData =  iRecvMsg;
+    FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+	}
+
+void CTestLtsySmsStore::AckSmsStoredL()
+	{
+	TBool full(EFalse);
+	TRequestStatus status;
+	_LIT8(KNullAck,"00");
+	Sms().AckSmsStored(status,KNullAck(),full);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("AckSmsStored() request status = %d"),r);
+	}
+
+void CTestLtsySmsStore::NackSmsStoredL()
+	{
+	TRequestStatus status;
+	TInt rpCause(2);  
+	
+	Sms().NackSmsStored(status,iRecvMsg,rpCause);
+	User::WaitForRequest(status);
+	TInt r=status.Int();
+	INFO_PRINTF2(_L("AckSmsStored() request status = %d"),r);
+	}
+
+void CTestLtsySmsStore::FillWriteSmsAttibutesL(TBuf8<400> aTpdu,RMobilePhone::TMobileAddress  aMsgSca)
+	{
+	TRequestStatus status;
+	RMobileSmsStore::TMobileGsmSmsEntryV1 smsEntry;
+	RMobileSmsStore::TMobileGsmSmsEntryV1Pckg smsEntryPckg(smsEntry);
+	smsEntry.iMsgStatus=RMobileSmsStore::EStoredMessageUnsent;
+	smsEntry.iMsgData = aTpdu;
+	smsEntry.iServiceCentre = aMsgSca;
+	SmsStore().Write(status, smsEntryPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmsstoregetinfo.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,88 @@
+//
+// testltsygetmessagestoreinfo.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+#include "testltsysmsstoregetinfo.h"
+
+CTestLtsySmsStoreGetInfo::CTestLtsySmsStoreGetInfo(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsStoreGetInfo::~CTestLtsySmsStoreGetInfo()
+	{
+	}
+
+CTestLtsySmsStoreGetInfo* CTestLtsySmsStoreGetInfo::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsStoreGetInfo* self = new (ELeave)CTestLtsySmsStoreGetInfo(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsStoreGetInfo* CTestLtsySmsStoreGetInfo::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsStoreGetInfo* self=CTestLtsySmsStoreGetInfo::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsStoreGetInfo::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsStoreGetInfo::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsStoreGetInfo::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsStoreGetInfo::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsStoreGetInfo::doTestStepL called"));
+	TRAPD(err,GetSmsStoreInfoL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when get sms store info"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsStoreGetInfo::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsStoreGetInfo::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsStoreGetInfo::GetSmsStoreInfoL()
+	{
+	TRequestStatus status;
+	TPckg<RMobilePhoneBookStore::TMobilePhoneBookInfoV1> smsInfoPckg(iInfo);
+	SmsStore().GetInfo(status,smsInfoPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("GetInfo() request status = %d"),r);
+	CheckSmsStoreInfoL();
+	INFO_PRINTF4(_L("GetInfo() MobileTypeName = %S, TotalEntries=%d,UsedEntries=%d\n"),&iInfo.iName,iInfo.iTotalEntries,iInfo.iUsedEntries );
+	}
+
+void CTestLtsySmsStoreGetInfo::CheckSmsStoreInfoL()
+	{
+	TBool matched = ETrue;
+	if (!iInfo.iName.Compare(KETelIccSmsStore) == 0)
+		{
+		INFO_PRINTF2(_L("The tel sms store name %s could not match with expect one"),&(iInfo.iName));
+		matched = EFalse;
+		}
+	if(!matched)
+		{
+		SetTestStepResult(EFail);
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmswrite.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,99 @@
+//
+// testltsysmswrite.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+//user include
+#include "testltsysmswrite.h"
+#include "testltsysmsatutil.h"
+
+//constant defination
+_LIT8(KSmsMessagingData,"11000D91683156211075f6000800064F60597D0021");
+_LIT(KSmsSCA,"8613800100500");  
+
+CTestLtsySmsWrite::CTestLtsySmsWrite(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsWrite::~CTestLtsySmsWrite()
+	{
+	}
+
+CTestLtsySmsWrite* CTestLtsySmsWrite::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsWrite* self = new (ELeave)CTestLtsySmsWrite(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsWrite* CTestLtsySmsWrite::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsWrite* self=CTestLtsySmsWrite::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsWrite::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsWrite::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsWrite::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsWrite::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsWrite::doTestStepL called"));
+	TRAPD(err,WriteSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write message"),err);
+	    SetTestStepResult(EFail);
+		}
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsWrite::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsWrite::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsWrite::WriteSmsL()
+	{
+
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	smsWriteAddr.iTypeOfNumber = RMobilePhone::EInternationalNumber;
+	smsWriteAddr.iNumberPlan = RMobilePhone::EIsdnNumberPlan;
+	smsWriteAddr.iTelNumber = KSmsSCA;
+	//For GsmTpdu
+	TBuf8<400>   writePduAscii(KSmsMessagingData);                        
+	TBuf8<400>   writePduData; 
+	writePduData.Zero();
+    SmsAtUtil::ConvertAsciiToBinary(writePduAscii,writePduData);
+    FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+ 	}
+
+void CTestLtsySmsWrite::FillWriteSmsAttibutesL(TBuf8<400> aTpdu,RMobilePhone::TMobileAddress  aMsgSca)
+	{
+	TRequestStatus status;
+	RMobileSmsStore::TMobileGsmSmsEntryV1 smsEntry;
+	RMobileSmsStore::TMobileGsmSmsEntryV1Pckg smsEntryPckg(smsEntry);
+	smsEntry.iMsgStatus=RMobileSmsStore::EStoredMessageUnsent;
+	smsEntry.iMsgData = aTpdu;
+	smsEntry.iServiceCentre = aMsgSca;
+	SmsStore().Write(status, smsEntryPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/src/testltsysmswriteinvalidparam.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,196 @@
+//
+// testltsysmswriteinvalidparam.cpp
+//
+// Copyright (c) Symbian Software Ltd. Your copyright notice.  All rights reserved.
+//
+
+//user include
+#include "testltsysmswriteinvalidparam.h"
+#include "testltsysmsatutil.h"
+
+//constant defination
+_LIT8(KSmsMessagingData,"11000D91683156211075f6000800064F60597D0021");
+_LIT(KSmsSCA,"8613800100500"); 
+_LIT(KSmsSCA1,"8613800100500138001005001380010050013800100500138001005001380010050013800100500138001005001380010050");  
+_LIT(KSmsSCA2,"86138*#abc0W0");
+
+CTestLtsySmsWriteInvalidParam::CTestLtsySmsWriteInvalidParam(CTestLtsyModel& aTestModel)
+	: CTestLtsySmsBase(aTestModel)
+	{
+
+	}
+
+CTestLtsySmsWriteInvalidParam::~CTestLtsySmsWriteInvalidParam()
+	{
+	}
+
+CTestLtsySmsWriteInvalidParam* CTestLtsySmsWriteInvalidParam::NewLC(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsWriteInvalidParam* self = new (ELeave)CTestLtsySmsWriteInvalidParam(aTestModel);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	return self;
+	}
+
+CTestLtsySmsWriteInvalidParam* CTestLtsySmsWriteInvalidParam::NewL(CTestLtsyModel& aTestModel)
+	{
+	CTestLtsySmsWriteInvalidParam* self=CTestLtsySmsWriteInvalidParam::NewLC(aTestModel);
+	CleanupStack::Pop(self);
+	return self;
+	}
+
+void CTestLtsySmsWriteInvalidParam::ConstructL()
+	{
+
+	}
+
+TVerdict CTestLtsySmsWriteInvalidParam::doTestStepPreambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsWriteInvalidParam::doTestStepPreambleL called"));
+	SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsWriteInvalidParam::doTestStepL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsWriteInvalidParam::doTestStepL called"));
+	TRAPD(err,WriteSmsL());
+	if(err != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write message"),err);
+	    SetTestStepResult(EFail);
+		}
+	
+	TRAPD(err1,WriteSms1L());
+	if(err1 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write message"),err1);
+	    SetTestStepResult(EFail);
+		}
+	
+	TRAPD(err2,WriteSms2L());
+	if(err2 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write message"),err2);
+	    SetTestStepResult(EFail);
+		}
+	
+	TRAPD(err3,WriteSms3L());
+	if(err3 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write message"),err3);
+	    SetTestStepResult(EFail);
+		}
+	
+	TRAPD(err4,WriteSms4L());
+	if(err4 != KErrNone)
+		{
+		INFO_PRINTF2(_L("The error was returned %d!! when write message"),err4);
+	    SetTestStepResult(EFail);
+		}
+	
+	return TestStepResult();
+	}
+
+TVerdict CTestLtsySmsWriteInvalidParam::doTestStepPostambleL()
+	{
+	INFO_PRINTF1(_L("CTestLtsySmsWriteInvalidParam::doTestStepPostambleL called"));
+	return TestStepResult();
+	}
+
+void CTestLtsySmsWriteInvalidParam::WriteSmsL()
+	{
+	//There is too long sca
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	    
+    smsWriteAddr.iTypeOfNumber = RMobilePhone::EInternationalNumber;
+  	smsWriteAddr.iNumberPlan = RMobilePhone::EIsdnNumberPlan;
+  	
+  	smsWriteAddr.iTelNumber = KSmsSCA1;
+  	TBuf8<400>   writePduAscii(KSmsMessagingData);                         //For GsmTpdu
+  	TBuf8<400>   writePduData; 
+  	writePduData.Zero();
+  	SmsAtUtil::ConvertAsciiToBinary(writePduAscii,writePduData);
+  	FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+   	}
+
+void CTestLtsySmsWriteInvalidParam::WriteSms1L()
+	{
+	//different TypeOfNumber and NumberPlan
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	smsWriteAddr.iTypeOfNumber = RMobilePhone::ENetworkSpecificNumber;
+	smsWriteAddr.iNumberPlan = RMobilePhone::EDataNumberPlan;
+	
+	smsWriteAddr.iTelNumber = KSmsSCA;
+	 //For GsmTpdu
+	TBuf8<400>   writePduAscii(KSmsMessagingData);                        
+	TBuf8<400>   writePduData; 
+	writePduData.Zero();
+	SmsAtUtil::ConvertAsciiToBinary(writePduAscii,writePduData);
+  	FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+	}
+
+void CTestLtsySmsWriteInvalidParam::WriteSms2L()
+	{
+	//different TypeOfNumber,NumberPlan and sca
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	smsWriteAddr.iTypeOfNumber = RMobilePhone::ESubscriberNumber;
+	smsWriteAddr.iNumberPlan = RMobilePhone::EPrivateNumberPlan;
+	
+	smsWriteAddr.iTelNumber = KSmsSCA2;
+	 //For GsmTpdu
+	TBuf8<400>   writePduAscii(KSmsMessagingData);                        
+	TBuf8<400>   writePduData; 
+	writePduData.Zero();
+	SmsAtUtil::ConvertAsciiToBinary(writePduAscii,writePduData);
+  	FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+	}
+void CTestLtsySmsWriteInvalidParam::WriteSms3L()
+	{
+	//different TypeOfNumber and NumberPlan
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	
+	smsWriteAddr.iTypeOfNumber = RMobilePhone::ENationalNumber;
+	smsWriteAddr.iNumberPlan = RMobilePhone::ENationalNumberPlan;
+	
+	smsWriteAddr.iTelNumber = KSmsSCA;
+	 //For GsmTpdu
+	TBuf8<400>   writePduAscii(KSmsMessagingData);                        
+	TBuf8<400>   writePduData; 
+	writePduData.Zero();
+	
+	SmsAtUtil::ConvertAsciiToBinary(writePduAscii,writePduData);
+  	FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+	}
+
+void CTestLtsySmsWriteInvalidParam::WriteSms4L()
+	{
+	//different TypeOfNumber and NumberPlan
+	RMobilePhone::TMobileAddress smsWriteAddr;
+	
+	smsWriteAddr.iTypeOfNumber = RMobilePhone::EUnknownNumber;
+	smsWriteAddr.iNumberPlan = RMobilePhone::RMobilePhone::EUnknownNumberingPlan;
+	
+	smsWriteAddr.iTelNumber = KSmsSCA;
+	 //For GsmTpdu
+	TBuf8<400>   writePduAscii(KSmsMessagingData);                        
+	TBuf8<400>   writePduData; 
+	writePduData.Zero();
+	SmsAtUtil::ConvertAsciiToBinary(writePduAscii,writePduData);
+  	FillWriteSmsAttibutesL(writePduData,smsWriteAddr);
+	}
+void CTestLtsySmsWriteInvalidParam::FillWriteSmsAttibutesL(TBuf8<400> aTpdu,RMobilePhone::TMobileAddress  aMsgSca)
+	{
+	TRequestStatus status;
+	RMobileSmsStore::TMobileGsmSmsEntryV1 smsEntry;
+	RMobileSmsStore::TMobileGsmSmsEntryV1Pckg smsEntryPckg(smsEntry);
+	smsEntry.iMsgStatus=RMobileSmsStore::EStoredMessageUnsent;
+	smsEntry.iMsgData = aTpdu;
+	smsEntry.iServiceCentre = aMsgSca;
+	SmsStore().Write(status, smsEntryPckg);
+	User::WaitForRequest(status);
+	TInt r = status.Int();
+	INFO_PRINTF2(_L("Write() request status = %d"),r);
+	}
+
+//End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsycallcontrol.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,63 @@
+
+[Section0]
+TheString=CTestLtsyCallControlBase
+TheInt=0
+TheBool=False
+
+[Section1]
+TheString=CTestLtsySmsControlReceiveSmsCase1Step
+TheInt=1
+TheBool=True
+
+[Section2]
+TheString=CTestLtsySmsControlSendSmsCase1Step
+TheInt=2
+TheBool=False
+
+[Section50]
+TheString=CTestLtsyCallControlBase
+TheInt=0
+TheBool=False
+
+[Section51]
+TheString=CTestLtsyCallControlDialHangupCase
+TheInt=0
+TheBool=False
+
+
+[Section52]
+TheString=CTestLtsyCallControlNotifyIncomingCallCase1
+TheInt=0
+TheBool=False
+
+[Section53]
+TheString=CTestLtsyCallControlDialEmergencyCall
+TheInt=0
+TheBool=False
+
+[Section54]
+TheString=CTestLtsyCallControlCustomAPITerminateAllCalls
+TheInt=0
+TheBool=False
+
+[Section55]
+TheString=CTestLtsyCallControlPhoneTerminateAllCalls
+TheInt=0
+TheBool=False
+
+
+[Section56]
+TheString=CTestLtsyCallControlNotifyIncomingCallCase2
+TheInt=0
+TheBool=False
+
+[Section57]
+TheString=CTestLtsyCallControlNotifyIncomingCallCase3
+TheInt=0
+TheBool=False
+
+[Section58]
+TheString=CTestLtsyCallControlSwapCalls
+TheInt=0
+TheBool=False
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsycallcontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,114 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+
+PRINT ************************
+PRINT Start case 1
+PRINT Dial->Hold->Resume->Hold->Resume->Hang up
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlBase
+
+PRINT ************************
+PRINT Start case 2
+PRINT Dial->Hang up->Close
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialHangupCase
+
+PRINT ************************
+PRINT Start case 3
+PRINT Notify incoming call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlNotifyIncomingCallCase1
+
+PRINT ************************
+PRINT Start case 4
+PRINT Dial emergency call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialEmergencyCall
+
+PRINT ************************
+PRINT Start case 5
+PRINT Notify incoming call->Answer->RCustomAPI close all
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlCustomAPITerminateAllCalls
+
+
+PRINT ************************
+PRINT Start case 6
+PRINT Dial one->Dial two->Phone close all
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlPhoneTerminateAllCalls
+
+PRINT ************************
+PRINT Start case 7
+PRINT Notify incoming call 1
+PRINT Answer call 1
+PRINT Notify incoming call 2
+PRINT Answer call 2
+PRINT Hangup call 1->Hangup call 2
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlNotifyIncomingCallCase2
+
+PRINT ************************
+PRINT Start case 8
+PRINT Notify incoming call 1
+PRINT Answer call 1
+PRINT Hold 1
+PRINT Resume 1
+PRINT Hang up 1
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlNotifyIncomingCallCase3
+
+PRINT ************************
+PRINT Start case 9
+PRINT Notify incoming call 1
+PRINT Answer call 1
+PRINT Notify incoming call 2
+PRINT Answer call 2
+PRINT Swap call 1
+PRINT Swap call 2
+PRINT Hang up call 1
+PRINT Hang up call 2
+PRINT Close call 1
+PRINT Close call 2
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlSwapCalls
+
+PRINT ************************
+PRINT Start case 10
+PRINT Dial call number 11
+PRINT Close call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialBadCall
+
+PRINT ************************
+PRINT Start case 11
+PRINT Dial call self number 
+PRINT Close call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialSelfCall
+
+PRINT ************************
+PRINT Start case 12
+PRINT Dial normal call
+PRINT Dial emergency call
+PRINT ************************
+DELAY 2000
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsyCallControlDialEmergencyCallStopAllCall
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsysmscontrol.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,15 @@
+
+[Section0]
+TheString=CTestLtsyCallControlDiallCase1Step
+TheInt=0
+TheBool=False
+
+[Section1]
+TheString=CTestLtsySmsControlReceiveSmsCase1Step
+TheInt=1
+TheBool=True
+
+[Section2]
+TheString=CTestLtsySmsControlSendSmsCase1Step
+TheInt=2
+TheBool=False
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stllsysmscontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite  -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyOpenPhone
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyOpenSms 
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyOpenSmsStore
+RUN_TEST_STEP 20 te_integration_stltsySuite CTestLtsySmsSend 
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyGetMessageStoreInfo
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsStoreGetInfo
+RUN_TEST_STEP 200 te_integration_stltsySuite CTestLtsySmsReceive
+delay 2000
+RUN_TEST_STEP 30 te_integration_stltsySuite CTestLtsySmsAck
+RUN_TEST_STEP 30 te_integration_stltsySuite CTestLtsySmsNack
+RUN_TEST_STEP 100 te_integration_stltsySuite CTestLtsySmsSendInvalidParam
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsRead
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsReadInvalidIndex
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsDelete
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsDeleteInvalidIndex
+delay 5000
+RUN_TEST_STEP 200 te_integration_stltsySuite CTestLtsySmsDeleteAll
+delay 5000
+RUN_TEST_STEP 200 te_integration_stltsySuite CTestLtsySmsStore
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsWrite
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsySmsWriteInvalidParam
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyCloseSms  
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyCloseSmsStore                             
+                             
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsyphonebook.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,26 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite  -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyOpenPhone
+delay 5000
+RUN_TEST_STEP 120 te_integration_stltsySuite CTestLtsyPhbkGetStoreInfo
+delay 2000
+RUN_TEST_STEP 120 te_integration_stltsySuite CTestLtsyPhbkOpen 
+delay 10000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkDelete 
+delay 2000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkDeleteInvalidIndex
+delay 2000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkWrite      
+delay 1000
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkWriteInvalidIndex
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkRead    
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkReadInvalidIndex
+RUN_TEST_STEP 10 te_integration_stltsySuite CTestLtsyPhbkClose                       
+                           
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsyphonecontrol.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,15 @@
+
+[Section0]
+TheString=CTestLtsyCallControlDiallCase1Step
+TheInt=0
+TheBool=False
+
+[Section1]
+TheString=CTestLtsySmsControlReceiveSmsCase1Step
+TheInt=1
+TheBool=True
+
+[Section2]
+TheString=CTestLtsySmsControlSendSmsCase1Step
+TheInt=2
+TheBool=False
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsyphonecontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,22 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyOpenPhone
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetFdnStatus
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetNetworkRegistrationStatus
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneSingalCap
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneSingalStrength
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneBatteryCap
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyGetPhoneBatteryInfo
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetCellInfo
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneGetPhoneID
+RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyPhoneSetNetworkSelectionSetting
+RUN_TEST_STEP 30 te_integration_stltsySuite TestLtsyPhoneSelectNetwork
+//RUN_TEST_STEP 10 te_integration_stltsySuite TestLtsyClosePhone
+
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsypktcontrol.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,15 @@
+
+[Section0]
+TheString=CTestLtsyCallControlDiallCase1Step
+TheInt=0
+TheBool=False
+
+[Section1]
+TheString=CTestLtsySmsControlReceiveSmsCase1Step
+TheInt=1
+TheBool=True
+
+[Section2]
+TheString=CTestLtsySmsControlSendSmsCase1Step
+TheInt=2
+TheBool=False
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsypktcontrol.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,41 @@
+//
+PRINT Run all te_integration_stltsy Suite Tests
+
+//
+LOAD_SUITE te_integration_stltsySuite -SharedData
+//
+//Please add or make change of you test steps, here is sample only:
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktOpenPacket
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktAttachNetwork
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktDetachNetwork
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktAttachNetwork
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktNetworkRegistrationStatus
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetServiceStatust
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetStaticCapabilities
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetDynamicCapabilities
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktOpenContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktInitialiseContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktSetContextConfig
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktOpenContextQos
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktSetContextQoSProfile
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktActivateContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 150 te_integration_stltsySuite TestLtsyPktDeactivateContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktGetContextInfo
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktCloseContextQos
+RUN_TEST_STEP 100 te_integration_stltsySuite TestLtsyPktDeleteContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktCloseContext
+RUN_TEST_STEP 50 te_integration_stltsySuite TestLtsyPktClosePacket
+
+
+PRINT Complate_te_integration_stltsy_Tests
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/testdata/te_integration_stltsysuite.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,15 @@
+
+[Section0]
+TheString=CTestLtsyCallControlDiallCase1Step
+TheInt=0
+TheBool=False
+
+[Section1]
+TheString=CTestLtsySmsControlReceiveSmsCase1Step
+TheInt=1
+TheBool=True
+
+[Section2]
+TheString=CTestLtsySmsControlSendSmsCase1Step
+TheInt=2
+TheBool=False
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/xml/te_integration_stltsysuite.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testSuite>
+  <name>te_integration_stltsySuite</name>
+  <testItems>
+    <test>te_integration_stltsyTest</test>
+  </testItems>
+  <testExecuteServers>
+    <server>te_integration_stltsySuite</server>
+  </testExecuteServers>
+</testSuite>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/xml/te_integration_stltsysuite/te_integration_stltsytest.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testExecuteTest>
+  <name>te_integration_stltsyTest</name>
+  <timeout>10000</timeout>
+  <testScripts>
+    <script>
+      <hostPath>\te_integration_stltsy\scripts\te_integration_stltsySuite.script</hostPath>
+      <devicePath>c:\te_integration_stltsySuite.script</devicePath>
+    </script>
+  </testScripts>
+  <testServers>
+    <server>te_integration_stltsySuite</server>
+  </testServers>
+  <dependencies>
+    <data>
+      <hostPath>\te_integration_stltsy\testdata\te_integration_stltsySuite.ini</hostPath>
+      <devicePath>c:\testdata\configs\te_integration_stltsySuite.ini</devicePath>
+    </data>
+  </dependencies>
+</testExecuteTest>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/atltsy/integrationtest/xml/te_integration_stltsysuite/testexecuteservers/te_integration_stltsysuite.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<testExecuteServer>
+  <name>te_integration_stltsySuite</name>
+  <mmpFile>te_integration_stltsySuite.mmp</mmpFile>
+  <bldInfPath>\te_integration_stltsy\group\bld.inf</bldInfPath>
+</testExecuteServer>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cbsref/telephonyrefplugins/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,25 @@
+// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+*/
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+#include "../atltsy/group/bld.inf"
--- a/package_definition.xml	Wed Jun 23 19:32:14 2010 +0300
+++ b/package_definition.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -36,9 +36,6 @@
       <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>
@@ -135,6 +132,14 @@
 			  <unit mrp="cellularsrvapitest/telephonydevsoundhaitest/group/telephonydevsoundhaitest.mrp" bldFile="cellularsrvapitest/telephonydevsoundhaitest/group"/>
       </component>
     </collection>
+    <collection id="cbsref" name="CBS Reference" level="plugin">
+      <component id="csyrefplugins" name="CSY Reference Plugins" introduced="^3" purpose="development" class="plugin" filter="test">
+        <unit bldFile="cbsref/csyrefplugins/group"/>
+      </component>
+      <component id="telephonyrefplugins" name="TSY Reference Plugins" introduced="^3" purpose="development" class="plugin" filter="test">
+        <unit bldFile="cbsref/telephonyrefplugins/group"/>
+      </component>
+    </collection>        
     <collection id="wapstack" name="WAP Stack" level="plugin">
       <component id="wapmessageapi" name="WAP Message API" purpose="optional">
         <unit bldFile="wapstack/wapmessageapi/group" mrp="wapstack/wapmessageapi/group/wap-stack_wapmessage.mrp" /> 
--- a/smsprotocols/smsstack/gsmu/src/Gsmumsg.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/smsprotocols/smsstack/gsmu/src/Gsmumsg.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -1165,7 +1165,7 @@
 					newie->SetFormatLength(oldFormatLen - newFormatLen);
 					newie->SetStartPosition(aCharsAlreadyAdded+aCharsAddedToCurrentPDU);
 					OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CSMSMESSAGE_CORRECTFORMATTINGL_2, "CSmsMessage::CorrectFormattingL Count=%d",aCorrectedFormattingIEArray.Count());
-					aCorrectedFormattingIEArray.Append(newie);
+					User::LeaveIfError(aCorrectedFormattingIEArray.Append(newie));
 					CleanupStack::Pop(newie);
 					}
 				}
--- a/smsprotocols/smsstack/test/smsstackbaseteststeps.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/smsprotocols/smsstack/test/smsstackbaseteststeps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -307,12 +307,13 @@
     RSmsSocketReadStream readstream(aSocket);
     TRAPD(ret, readstream >> *smsMessage);
  
-    TPckgBuf<TUint> sbuf;
     TRequestStatus status;
-
+    
+    // aDesc arguments passed to Ioctl() method have been changed to NULL to keep it compliant with
+    // usage rules and to prevent OOM tests from failing
     if(ret==KErrNone)
         {
-        aSocket.Ioctl(aIoctl, status, &sbuf, KSolSmsProv);
+        aSocket.Ioctl(aIoctl, status, NULL, KSolSmsProv);
         User::WaitForRequest(status);
         CleanupStack::Pop(smsMessage);
         TESTCHECK(status.Int(), KErrNone, "Notifying the SMS stack that message was received successfully");
@@ -321,7 +322,7 @@
     //An error has occured, no message has been received
     else
         {
-        aSocket.Ioctl(KIoctlReadMessageFailed, status, &sbuf, KSolSmsProv);
+        aSocket.Ioctl(KIoctlReadMessageFailed, status, NULL, KSolSmsProv);
         User::WaitForRequest(status);
         TESTCHECK(status.Int(), KErrNone, "Notifying the SMS stack that message was not received");
         ERR_PRINTF2(_L("Receiving message failed %d"), ret);
--- a/telephonyprotocols/pdplayer/group/pdp.mmp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/group/pdp.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -46,9 +46,9 @@
 SOURCE		pdpservices.cpp
 SOURCE		mbmsengine.cpp
 SOURCE		pdptiermanagerselector.cpp
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 SOURCE		PDPCPR.cpp
 SOURCE		PDPCPRFactory.cpp
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 SOURCE		PDPCPRAvailabilityListener.cpp
 #endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 SOURCE		AuthenticationDialog.cpp
--- a/telephonyprotocols/pdplayer/inc/PDPCPR.h	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/inc/PDPCPR.h	Tue Jul 06 15:36:38 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -37,7 +37,7 @@
     }
 
 
-
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 namespace PDPCprStates
 {
 typedef MeshMachine::TNodeContext<CPDPConnectionProvider, CprStates::TContext> TContext;
@@ -51,8 +51,8 @@
    TUpdateBundle,
    PRStates::TRespondWithRetrievedParams
    )
-
 }
+#endif
 
 
 class CPDPConnectionProvider : public CCoreConnectionProvider, MPDPCPRBearerObserver
@@ -62,21 +62,29 @@
 */
     {
 	friend class CPDPConnectionProviderFactory;
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	friend class PDPCprStates::TUpdateBundle;
+#endif
 
 public:
     typedef CPDPConnectionProviderFactory FactoryType;
 	
 	static CPDPConnectionProvider* NewL(ESock::CConnectionProviderFactoryBase& aFactory);
-	
+
+	// from MPDPCPRBearerObserver
 	virtual void BearerChangeDetectedL();
-	
-protected:	
+
+private:	
     CPDPConnectionProvider(ESock::CConnectionProviderFactoryBase& aFactory);
+   
+protected:
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
     void StartListener();
     void StopListener();
+    void UpdateBearer();
     TUint32 Bearer(TUint aDynamicCaps, RMobilePhone::TMobilePhoneNetworkMode& aNetworkMode);
-    void UpdateBearer();
+#endif
+    
     virtual ~CPDPConnectionProvider();
     virtual void ReceivedL(const Messages::TRuntimeCtxId& aSender, const Messages::TNodeId& aRecipient, Messages::TSignatureBase& aMessage);
 	void ConstructL();
--- a/telephonyprotocols/pdplayer/src/102822EF.rss	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/src/102822EF.rss	Tue Jul 06 15:36:38 2010 +0300
@@ -59,7 +59,7 @@
                 }
             };
         },
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
     INTERFACE_INFO
         {
         interface_uid = CprInterfaceUid;
@@ -75,7 +75,7 @@
                 }
             };
         },
-#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+
     INTERFACE_INFO
         {
         interface_uid = ScprInterfaceUid;
--- a/telephonyprotocols/pdplayer/src/PDPCPR.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/src/PDPCPR.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -31,16 +31,21 @@
 #include <etelmm.h>
 #include <etelpckt.h>
 #include <comms-infras/ss_metaconnprov.h>
-#include "pdpprovision.h"
+#include "PDPProvision.h"
 #include <etel.h>
-#include <networking/cfbearers.h>
 #include "pdpcpravailabilitylistener.h"
 #include <comms-infras/ss_nodemessages.h>
-#include <networking/ipcpr_states.h>
 #include <comms-infras/linkmessages.h>
 #include <elements/nm_interfaces.h>
+
+
+
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+#include <networking/cfbearers.h>
+#include <networking/ipcpr_states.h>
 #include <cs_genevent.h>
 #include <networking/etelbearers.h>
+#endif
 
 using namespace ESock;
 
@@ -57,6 +62,7 @@
 static const TUint KMaxPreallocatedActivitySize = sizeof(MeshMachine::CNodeRetryParallelActivity) + sizeof(MeshMachine::APreallocatedOriginators<4>);
 static const TUint KPDPCPRPreallocatedActivityBufferSize = KDefaultMaxPreallocatedActivityCount * KMaxPreallocatedActivitySize;
 
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 namespace PDPCprLinkCharacteristicActivity
 {
 DECLARE_DEFINE_NODEACTIVITY(ECFActivityParamRequest, PDPCprLinkCharacteristic, TCFScpr::TGetParamsRequest)
@@ -74,16 +80,18 @@
     LAST_NODEACTIVITY_ENTRY(CoreNetStates::KNonDefault, MeshMachine::TDoNothing)    
 NODEACTIVITY_END()
 }
+#endif
 
 namespace PDPCprActivities
 {
 DEFINE_ACTIVITY_MAP(activityMap)
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
     ACTIVITY_MAP_ENTRY(PDPDataClientGoneDownActivity, PDPScprGoneDown)
 	ACTIVITY_MAP_ENTRY(PDPCprLinkCharacteristicActivity, PDPCprLinkCharacteristic)
+#endif
 ACTIVITY_MAP_END_BASE(CprActivities, coreCprActivities)
 }
 
-
 CPDPConnectionProvider* CPDPConnectionProvider::NewL(ESock::CConnectionProviderFactoryBase& aFactory)
     {
     CPDPConnectionProvider* provider = new (ELeave) CPDPConnectionProvider(aFactory);
@@ -93,18 +101,6 @@
 	return provider;
     }        
 
-
-void CPDPConnectionProvider::StartListener()
-/**
- * Start listening for dynamic caps or network mode changes.
- * @param None
- * @return void
- */
-	{
-	iDynamicCapsEventListener->NotifyDynamicCapsChange(this);
-	iNetworkModeEventListener->NotifyNetworkModeChange(this);
-	}
-
 void CPDPConnectionProvider::ConstructL()
 /**
  * PDP Connection Provider Second Phase Constructor
@@ -115,23 +111,13 @@
 	CCoreConnectionProvider::ConstructL(KPDPCPRPreallocatedActivityBufferSize);
 	}
 
-void CPDPConnectionProvider::StopListener()
-/**
- * Start listening for dynamic caps or network mode changes.
- */
-	{
-	if(iDynamicCapsEventListener)
-		{
-		iDynamicCapsEventListener->Cancel();
-		}
-	if(iNetworkModeEventListener)
-		{
-		iNetworkModeEventListener->Cancel();
-		}
-	}
-
 CPDPConnectionProvider::CPDPConnectionProvider(ESock::CConnectionProviderFactoryBase& aFactory)
-	: CCoreConnectionProvider(aFactory, PDPCprActivities::activityMap::Self())
+	: CCoreConnectionProvider(aFactory, PDPCprActivities::activityMap::Self()),
+	  iDynamicCapsEventListener(NULL),
+	  iNetworkModeEventListener(NULL),
+	  iBearerType(0),
+	  iBearerSet(EFalse)
+	  
 /**
  * Construct PDP connection provider.
  */	
@@ -145,7 +131,9 @@
  */
     {    
     LOG_NODE_DESTROY(KESockConnectionTag, CPDPConnectionProvider);
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
     StopListener();
+#endif
 	delete iDynamicCapsEventListener;
 	delete iNetworkModeEventListener;
     }
@@ -165,6 +153,7 @@
  * all the control client.
  */
 	{
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	//Update bearers.
 	UpdateBearer();
 	
@@ -195,10 +184,35 @@
 		msg.iRefCountOwnedNotification->Open();
 		ctl->PostMessage(this->NodeId(), msg);
 		}
-
+#endif
 	}
 
+#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
+void CPDPConnectionProvider::StartListener()
+/**
+ * Start listening for dynamic caps or network mode changes.
+ * @param None
+ * @return void
+ */
+    {
+    iDynamicCapsEventListener->NotifyDynamicCapsChange(this);
+    iNetworkModeEventListener->NotifyNetworkModeChange(this);
+    }
 
+void CPDPConnectionProvider::StopListener()
+/**
+ * Start listening for dynamic caps or network mode changes.
+ */
+    {
+    if(iDynamicCapsEventListener)
+        {
+        iDynamicCapsEventListener->Cancel();
+        }
+    if(iNetworkModeEventListener)
+        {
+        iNetworkModeEventListener->Cancel();
+        }
+    }
 void CPDPConnectionProvider::UpdateBearer()
 /**
  * Update bearer type based on the change of the dynamic caps or network mode.
@@ -214,7 +228,6 @@
 	iBearerSet = ETrue;
 	}
 
-
 TUint32 CPDPConnectionProvider::Bearer(TUint aDynamicCaps, RMobilePhone::TMobilePhoneNetworkMode& aNetworkMode)
 /**
  * Determine bearer based on dynamic caps and network mode.
@@ -224,7 +237,6 @@
  *
  */
 	{
-	
 	if ((aDynamicCaps & RPacketService::KCapsHSUPA) || (aDynamicCaps & RPacketService::KCapsHSDPA))
 		{
 		return KHsdpaBearer;
@@ -250,7 +262,6 @@
 		}
 	}
 
-
 DEFINE_SMELEMENT(PDPCprStates::TUpdateBundle, NetStateMachine::MStateTransition, PDPCprStates::TContext)
 void PDPCprStates::TUpdateBundle::DoL()
 /**
@@ -299,5 +310,6 @@
 		iContext.Node().StartListener();
 		}
 	}
+#endif
 
 
--- a/telephonyprotocols/pdplayer/src/PDPSCPR.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/src/PDPSCPR.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -549,7 +549,7 @@
 			{
 			grantedIPAddressInfo->AddParamInfo(aParamInfo);
 
-			iPacketFilterId.Append(aId);
+			User::LeaveIfError(iPacketFilterId.Append(aId));
 			iPacketFilterMaskId |= 1 << aId;
 			}
 		else
--- a/telephonyprotocols/pdplayer/src/ecom_impl.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/src/ecom_impl.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -25,9 +25,7 @@
 #include <ecom/ecom.h>
 
 #include "pdpmcprfactory.h"
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 #include "PDPCPRFactory.h"
-#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 #include "PDPSCPRFactory.h"
 #include "pdptiermanagerfactory.h"
 
@@ -38,9 +36,7 @@
 const TImplementationProxy ImplementationTable[] =
 	{   
 	IMPLEMENTATION_PROXY_ENTRY(CPdpMetaConnectionProviderFactory::iUid, CPdpMetaConnectionProviderFactory::NewL),
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	IMPLEMENTATION_PROXY_ENTRY(CPDPConnectionProviderFactory::iUid, CPDPConnectionProviderFactory::NewL),
-#endif // SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
 	IMPLEMENTATION_PROXY_ENTRY(CPDPSubConnectionProviderFactory::iUid, CPDPSubConnectionProviderFactory::NewL),
 	IMPLEMENTATION_PROXY_ENTRY(CPDPTierManagerFactory::EUid, CPDPTierManagerFactory::NewL)
    	};
--- a/telephonyprotocols/pdplayer/traces/fixed_id.definitions	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/traces/fixed_id.definitions	Tue Jul 06 15:36:38 2010 +0300
@@ -425,6 +425,10 @@
 [TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_5=0x259
 [TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NEXT_1=0x24e
 [TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NEXT_2=0x24f
+[TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NEXT_3=0x296
+[TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NEXT_4=0x297
+[TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NEXT_5=0x298
+[TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NEXT_6=0x299
 [TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NOTIFYFSM_1=0x250
 [TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NOTIFYFSM_2=0x251
 [TRACE]TRACE_INTERNALS[0x88]_TACTIVATEPDPSTRATEGY_NOTIFYFSM_3=0x252
--- a/telephonyprotocols/pdplayer/umts/spudtel/inc/meteldriverstrategy.h	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/spudtel/inc/meteldriverstrategy.h	Tue Jul 06 15:36:38 2010 +0300
@@ -1,4 +1,4 @@
-// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2004-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -63,6 +63,7 @@
 		EMbmsSetSession,
 		EUpdateMbmsSessionList,
 		EPrepareSessionList,
+		ENotifyStatusChange,
 			
 		EFinishStep
 		};
--- a/telephonyprotocols/pdplayer/umts/spudtel/src/eteldriverstrategies.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/spudtel/src/eteldriverstrategies.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -460,8 +460,8 @@
 			}
 			
 		case EInitialiseContextStep:
-		    OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TCREATE1RYPDPCONTEXTSTRATEGY_CANCELASYNCREQUEST_4, "Cancel PacketContext::EPacketContextActivate");
-		    aContext.PacketContext().CancelAsyncRequest(EPacketContextActivateCancel);
+		    OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TCREATE1RYPDPCONTEXTSTRATEGY_CANCELASYNCREQUEST_4, "Cancel PacketContext::EPacketContextInitialiseContext");
+		    aContext.PacketContext().CancelAsyncRequest(EPacketContextInitialiseContext);
 		    break;
 			
 		default:
@@ -1101,13 +1101,17 @@
 		{
 		case EStartStep:
 			{
+			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_NEXT_3, "RPacketContext::Activate()");
 			aContext.PacketContext().Activate(*aStatus);
 			aContext.SetStrategyStep (EActivateStep);
 			break;
 			}
 		
 		case EActivateStep:
+		case ENotifyStatusChange:
 			{
+            OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_NEXT_4, "RPacketContext::GetStatus()");
+
             if (aContext.PacketContext().GetStatus(aContext.ContextStatus()) != KErrNone)
                 {
                 aContext.ContextStatus() = RPacketContext::EStatusInactive;
@@ -1118,6 +1122,7 @@
             	case RPacketContext::EStatusActive:
                 	// Context is now active
     	            aContext.PdpFsmInterface().Get (aContext.Id(), aContext.ContextPacketDataConfigBase());
+    	            OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_NEXT_5, "RPacketContext::GetConfig()");
     				aContext.PacketContext().GetConfig (*aStatus, aContext.ContextConfig());
     				aContext.SetStrategyStep (EGetConfigStep);
     				break;
@@ -1158,8 +1163,9 @@
             	
             	default:
             		// Not active, not inactive. Re-request the status and try again
+                    OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_NEXT_6, "RPacketContext::NotifyStatusChange()");
                     aContext.PacketContext().NotifyStatusChange(*aStatus, aContext.ContextStatus());
-                    aContext.SetStrategyStep (EActivateStep);
+                    aContext.SetStrategyStep (ENotifyStatusChange);
                     break;
                 }
 			break;
@@ -1259,22 +1265,22 @@
 		{
 		case EActivateStep:
 			{
+			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_1, "Cancel PacketContext::EPacketContextActivate");
 			aContext.PacketContext().CancelAsyncRequest(EPacketContextActivate);
-			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_1, "Cancel PacketContext::EPacketContextActivate");
 			break;
 			}
 			
 		case EGetConfigStep:
 			{
-			aContext.PacketContext().CancelAsyncRequest(EGetConfigStep);
-			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_2, "Cancel PacketContext::EGetConfigStep");
+			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_2, "Cancel PacketContext::EPacketContextGetConfig");
+			aContext.PacketContext().CancelAsyncRequest(EPacketContextGetConfig);
 			break;
 			}
 		
-		case EInitialiseContextStep:
-			{
-			aContext.PacketContext().CancelAsyncRequest(EPacketContextInitialiseContext);	
-			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_3, "Cancel PacketContext::EPacketContextInitialiseContext");
+		case ENotifyStatusChange:
+		    {
+			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_3, "Cancel PacketContext::EPacketContextNotifyStatusChange");
+			aContext.PacketContext().CancelAsyncRequest(EPacketContextNotifyStatusChange);	
 			break;
 			}
 			
@@ -1282,8 +1288,8 @@
 			{
 			if(KPrimaryContextId == aContext.Id())
 				{
+				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_4, "Cancel PacketContext::EPacketQoSGetProfileParams");
 				aContext.PacketContext().CancelAsyncRequest(EPacketQoSGetProfileParams);	
-				OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEPDPSTRATEGY_CANCELASYNCREQUEST_4, "Cancel PacketContext::EPacketQoSGetProfileParams");
 				break;
 				}
 			}
@@ -1751,7 +1757,7 @@
 		
 		case EGetConfigStep:
 			{
-			aContext.MbmsPacketContext().CancelAsyncRequest(EGetConfigStep);
+			aContext.MbmsPacketContext().CancelAsyncRequest(EPacketContextGetConfig);
 			OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, TACTIVATEMBMSPDPSTRATEGY_CANCELASYNCREQUEST_2, "Cancel MbmsPacketContext::EGetConfigStep");
 			break;
 			}
--- a/telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/configs/te_umtsgprsscpr_captest.cfg	Wed Jun 23 19:32:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1315 +0,0 @@
-############################################################
-## AUTO-GENERATED CONFIGURATION FILE
-## CommsDat Database Dump Utility
-## 1.1
-############################################################
-
-############################################################
-## Network
-## 
-[Network]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=Intranet
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Intranet2
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Intranet3
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=Intranet4
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=Intranet5
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=Intranet6
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## ModemBearer
-## 
-[ModemBearer]
-ADD_TEMPLATE
-	Id=0
-	Name=Default Loopback Modem
-	TSYName=SIM
-	CSYName=PKTLOOPBACK
-	LastSocketActivityTimeout=180
-	LastSessionClosedTimeout=6
-	LastSocketClosedTimeout=4
-	DataBits=8
-	StopBits=1
-	Parity=NONE
-	Rate=115200
-	Handshaking=0
-	SpecialRate=0
-	XonChar=0
-	XoffChar=0
-	FaxClassPref=AUTO
-	SpeakerPref=NEVER
-	SpeakerVolPref=QUIET
-	ModemInitString=AT
-	DataInitString=AT
-	FaxInitString=AT
-	DialPauseLength=S8=
-	SpeakerVolContorlLow=L0
-	SpeakerVolControlMedium=L1
-	SpeakerVolControlHigh=L2
-	SpeakerAlwaysOff=M0
-	SpeakerOnUntilCarrier=M1
-	SpeakerAlwaysOn=M2
-	SpeakerOnAfterUntilCarrier=M3
-	DialToneWaitModifier=W
-	CallProgress1=X1
-	CallProgress2=X2
-	CallProgress3=X3
-	CallProgress4=X4
-	EchoOff=E0
-	VerboseText=V1
-	QuietOff=Q0
-	QuietOn=Q1
-	DialCommandStateModifier=;
-	OnLine=O
-	ResetConfiguration=Z
-	ReturnToFactoryDefs=&F
-	DCDOnDuringLink=&C1
-	DTRHangUp=&D2
-	DSRAlwaysOn=&S0
-	RTSCTSHandshake=&K3
-	XonXoffHandshake=&K4
-	EscapeCharacter=+
-	EscapeGuardPeriod=S12
-	NoDialTone=NO DIAL TONE
-	Busy=BUSY
-	NoAnswer=NO ANSWER
-	Carrier=CARRIER
-	Connect=CONNECT
-	CompressionClass5=COMPRESSION:CLASS 5
-	CompressionV42bis=COMPRESSION:V.42 bis
-	CompressionNone=COMPRESSION:NONE
-	ProtocolLAPD=PROTOCOL:LAPD
-	ProtocolALT=PROTOCOL:ALT
-	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
-	ProtocolNone=PROTOCOL:NONE
-	MessageValidityPeriod=0
-	MessageDeliveryReport=FALSE
-	CommRole=0
-	Agent=NULLAGT
-	BCAStack=C32Bca
-	FIELD_COUNT=66
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Loopback_RawIP_1
-	IfName=RAWIP
-	PortName=PKTLOOPBACK::501
-	CSYName=PKTLOOPBACK
-	FIELD_COUNT=5
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Loopback_SPUD_2
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=Loopback_RawIP_3
-	IfName=RAWIP
-	PortName=PKTLOOPBACK::503
-	CSYName=PKTLOOPBACK
-	FIELD_COUNT=5
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=Loopback_SPUD_4
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=WinTunnel_SPUD_5
-	IfName=SPUD
-	Agent=NULLAGT
-	FIELD_COUNT=4
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=Loopback_SPUD_5
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=Loopback_SPUD_6
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=Loopback_SPUD_7
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Id=10
-	Name=Loopback_SPUD_8
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## Location
-## 
-[Location]
-ADD_TEMPLATE
-	Id=0
-	Name=Default Location
-	IntlPrefixCode=+
-	NatPrefixCode=0
-	NatCode=44
-	Mobile=TRUE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=9
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Office
-	IntlPrefixCode=00
-	NatPrefixCode=0
-	NatCode=44
-	AreaCode=171
-	DialOutCode=9,
-	Mobile=FALSE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Mobile
-	IntlPrefixCode=+
-	NatPrefixCode=0
-	NatCode=44
-	Mobile=TRUE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=9
-END_ADD
-
-
-############################################################
-## GlobalSettings
-## 
-[GlobalSettings]
-ADD_TEMPLATE
-	DefaultTier=Link.TierTable.2048
-	FIELD_COUNT=1
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=DefaultRecordName-1
-	ConnectionAttempts=2
-	RedialAttempts=3
-	SmsReceiveMode=2
-	GPRSAttachMode=1
-	AcceptIncomingGprs=1
-	GPRSClassCBearer=GSM
-	ModemForDataAndFax=2
-	ModemForPhoneServicesAndSMS=2
-	LocationForDataAndFax=3
-	LocationForPhoneServicesAndSMS=3
-	MaxMBufHeap=3
-	DefaultNetwork=1
-	BearerAvailabilityCheckTSY=mm
-	FIELD_COUNT=15
-END_ADD
-
-
-############################################################
-## OutgoingGPRS
-## 
-[OutgoingGPRS]
-ADD_TEMPLATE
-	Id=0
-	Name=Default Outgoing GPRS
-	APN=Test
-	PDPType=IPV4
-	ReqPrecedence=2
-	ReqDelay=4
-	ReqReliability=3
-	ReqPeakThroughput=3
-	ReqMeanThroughput=31
-	MinPrecedence=2
-	MinDelay=4
-	MinReliability=3
-	MinPeakThroughput=3
-	MinMeanThroughput=31
-	DataCompression=FALSE
-	HeaderCompression=FALSE
-	GprsUseEdge=FALSE
-	AnonymousAccess=FALSE
-	IfNetworks=ip
-	IfPromptForAuth=FALSE
-	IfAuthName=RasUser
-	AuthRetries=1
-	IpNetMask=255.255.255.0
-	IpAddrFromServer=FALSE
-	IpDNSAddrFromServer=FALSE
-	IpNameServer1=194.72.6.51
-	IpNameServer2=194.72.6.51
-	EnableLCPExtension=FALSE
-	DisablePlainTextAuth=FALSE
-	UmtsR99QoSAndOn=1
-	FIELD_COUNT=30
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=RawIP_Bounce_1
-	PDPType=IPV4
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=FALSE
-	IpAddr=192.168.1.1
-	IpDNSAddrFromServer=FALSE
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=SPUD_Echo_2
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.2
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=RawIP_Bounce_3
-	PDPType=IPV4
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=FALSE
-	IpAddr=192.168.2.3
-	IpDNSAddrFromServer=FALSE
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=SPUD_Echo_4
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=FALSE
-	IpAddr=192.168.2.4
-	IpDNSAddrFromServer=FALSE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=SPUD_Multi_1
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.10
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=SPUD_Multi_2
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.11
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=SPUD_Multi_3
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.12
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=SPUD_Multi_4
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.13
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-
-############################################################
-## DefaultGPRS
-## 
-[DefaultGPRS]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=Dummy Default GPRS Settings
-	Usage=1
-	APN=Access point name
-	PDPType=IPV6
-	PDPAddress=www.wid.com
-	Precedence=1
-	Delay=1
-	Reliability=1
-	PeakThroughput=1
-	MeanThroughput=1
-	MinPrecedence=1
-	MinDelay=1
-	MinReliability=1
-	MinPeakThroughput=1
-	MinMeanThroughput=1
-	DataCompression=TRUE
-	HeaderCompression=TRUE
-	GprsUseEdge=FALSE
-	AnonymousAccess=TRUE
-	FIELD_COUNT=20
-END_ADD
-
-############################################################
-## APPrioritySelectionPolicyTable
-## 
-[APPrioritySelectionPolicyTable]
-ADD_SECTION
-# COMMDB_ID = 1
-  	Id=1
-	Name=SelectionPolicy1
-	AP1=Link.AccessPointTable.10001
-	APCOUNT=1
-	FIELD_COUNT=4
-END_ADD
-
-############################################################
-## AccessPointTable
-## 
-[AccessPointTable]
-ADD_SECTION
-# COMMDB_ID = 235
-	Id=9
-	Name=spud-rawipMappedFromIAP9
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=9
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 237
-	Id=8
-	Name=spud-rawipMappedFromIAP8
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=8
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 239
-	Id=7
-	Name=spud-rawipMappedFromIAP7
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=7
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 241
-	Id=6
-	Name=spud-rawipMappedFromIAP6
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=6
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 243
-	Id=5
-	Name=rawipMappedFromIAP5
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.3
-	CprConfig=5
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 245
-	Id=4
-	Name=spud-rawipMappedFromIAP4
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=4
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 247
-	Id=3
-	Name=rawipMappedFromIAP3
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.3
-	CprConfig=3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 249
-	Id=2
-	Name=spud-rawipMappedFromIAP2
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=2
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 251
-	Id=1
-	Name=rawipMappedFromIAP1
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.3
-	CprConfig=1
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 253
-	Id=10001
-	Name=IPProtoDefault
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	CustomSelectionPolicy=2
-	Cpr=CprTable.2
-	CprConfig=2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 254
-	Id=10000
-	Name=NetworkDefault
-	Tier=Link.TierTable.2048
-	MCpr=MCprTable.1
-	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
-	Cpr=CprTable.1
-	SCpr=SCprTable.7
-	Protocol=ProtocolTable.1
-	FIELD_COUNT=8
-END_ADD
-
-
-############################################################
-## BearerTypeTable
-## 
-[BearerTypeTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=ppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.3
-	Cpr=CprTable.3
-	SCpr=SCprTable.5
-	Protocol=ProtocolTable.3
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ethint
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.4
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.4
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=rawip
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=tunnelnif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.6
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.6
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=qosppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.7
-	Cpr=CprTable.3
-	SCpr=SCprTable.5
-	Protocol=ProtocolTable.7
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=dummynif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.8
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.8
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=hungrynif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.9
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.9
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=spud-ppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.4
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.3
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=spud-rawip
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.4
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	FIELD_COUNT=7
-END_ADD
-
-##This record here is the template record for the IPProto level APs generated by CommsDat.
-ADD_SECTION
-# COMMDB_ID = 10
-	##This name is a predefined name for the template for the IPProto APs.
-	##Please don't change it!
-	Name=IPProtoDefaultTemplate
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	FIELD_COUNT=6
-END_ADD
-
-############################################################
-## IAP
-## 
-[IAP]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=Loopback_GRPS_1
-	IAPServiceType=OutgoingGPRS
-	IAPService=2
-	IAPBearerType=ModemBearer
-	IAPBearer=2
-	IAPNetwork=1
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Loopback_GRPS_2
-	IAPServiceType=OutgoingGPRS
-	IAPService=3
-	IAPBearerType=ModemBearer
-	IAPBearer=3
-	IAPNetwork=1
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Loopback_GRPS_3
-	IAPServiceType=OutgoingGPRS
-	IAPService=4
-	IAPBearerType=ModemBearer
-	IAPBearer=4
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=Loopback_GRPS_4
-	IAPServiceType=OutgoingGPRS
-	IAPService=5
-	IAPBearerType=ModemBearer
-	IAPBearer=5
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=Loopback_GRPS_5
-	IAPServiceType=OutgoingGPRS
-	IAPService=2
-	IAPBearerType=ModemBearer
-	IAPBearer=4
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=Loopback_GRPS_6
-	IAPServiceType=OutgoingGPRS
-	IAPService=6
-	IAPBearerType=ModemBearer
-	IAPBearer=7
-	IAPNetwork=3
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=Loopback_GRPS_7
-	IAPServiceType=OutgoingGPRS
-	IAPService=7
-	IAPBearerType=ModemBearer
-	IAPBearer=8
-	IAPNetwork=4
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=Loopback_GRPS_8
-	IAPServiceType=OutgoingGPRS
-	IAPService=8
-	IAPBearerType=ModemBearer
-	IAPBearer=9
-	IAPNetwork=5
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=Loopback_GRPS_9
-	IAPServiceType=OutgoingGPRS
-	IAPService=9
-	IAPBearerType=ModemBearer
-	IAPBearer=10
-	IAPNetwork=6
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-
-############################################################
-## ConnectionPreferences
-## 
-[ConnectionPreferences]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=DefaultRecordName-1
-	Ranking=1
-	Direction=OUTGOING
-	BearerSet=PSD
-	DialogPref=DONOTPROMPT
-	IAP=2
-	FIELD_COUNT=7
-END_ADD
-
-
-############################################################
-## TierTable
-## 
-[TierTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=2048
-	TierImplUid=271064536
-	Name=Tier1
-	TierThreadName=ESock_IP
-	TierManagerName=NetworkTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10000
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=271064560
-	TierImplUid=271064560
-	Name=Tier2
-	TierThreadName=ESock_IP
-	TierManagerName=ProtoTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10001
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=271064565
-	TierImplUid=271064565
-	Name=Tier3
-	TierThreadName=ESock_IP
-	TierManagerName=LinkTierManager
-##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
-##on the link layer. However important that once this field has a value it has to be linked to a
-##correct accesspoint record in the accesspoint table because this will be checked either.
-	DefaultAccessPoint=Link.AccessPointTable.1
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-
-############################################################
-## MCprTable
-## 
-[MCprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=netmcpr
-	MCprUid=271009095
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipprotomcpr
-	MCprUid=271064558
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=pppmcpr
-	MCprUid=271064556
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=ethmcpr
-	MCprUid=271064572
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=rawipmcpr
-	MCprUid=271064576
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=tunnelmcpr
-	MCprUid=271064578
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=qospppmcpr
-	MCprUid=271064556
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=dummynifmcpr
-	MCprUid=271064580
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=hungrynifmcpr
-	MCprUid=271064580
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Id=10
-	Name=pdpmcpr
-	MCprUid=271065840
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## CprTable
-## 
-[CprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=ipcpr
-	CprUid=270561519
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipprotocpr
-	CprUid=271064531
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=agentcpr
-	CprUid=271064552
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=vanillacpr
-	CprUid=271065843
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## SCprTable
-## 
-[SCprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=qosipscpr
-	SCprUid=0xFFFFFFFF
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipprotoscpr
-	SCprUid=271064529
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=agentscpr
-	SCprUid=271064554
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=pdpscpr
-	SCprUid=271065824
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=pppscpr
-	SCprUid=271065852
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=vanillascpr
-	SCprUid=271065844
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=ipscpr
-	SCprUid=271065811
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=ipqosprotoscpr
-	SCprUid=271065816
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## ProtocolTable
-## 
-[ProtocolTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=sapshim
-	ProtocolUid=270496898
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipshim4
-	ProtocolUid=271064118
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=ppp
-	ProtocolUid=271064143
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=ethernet
-	ProtocolUid=271064539
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=rawip
-	ProtocolUid=271064562
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=tunnel
-	ProtocolUid=271064567
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=qosppp
-	ProtocolUid=271064148
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=dummynif
-	ProtocolUid=271064123
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=hungrynif
-	ProtocolUid=271064125
-	FIELD_COUNT=3
-END_ADD
-
-[UmtsR99QoSAndOn]
-ADD_SECTION
-# COMMDB_ID = 1
-  	Name=PRIMARY1
-        ReqTrafficClass=1
-        MinTrafficClass=1
-        ReqDeliveryOrder=1
-        MinDeliveryOrder=1
-        ReqDeliverErroneousSDU=1
-        MinDeliverErroneousSDU=1
-        ReqMaxSDUSize=0
-        MinAcceptableMaxSDUSize=0
-        ReqMaxUplinkRate=0
-        ReqMinUplinkRate=0
-        ReqMaxDownlinkRate=0
-        ReqMinDownlinkRate=0
-        ReqBER=1
-        MaxBER=1
-        ReqSDUErrorRatio=1
-        MaxSDUErrorRatio=1
-        ReqTrafficHandlingPriority=1
-        MinTrafficHandlingPriority=1
-        ReqTransferDelay=0
-        MaxTransferDelay=0
-        ReqGuaranteedUplinkRate=0
-        MinGuaranteedUplinkRat=0
-        ReqGuaranteedDownlinkRate=0
-        MinGuaranteedDownlinkRate=0
-        SignallingIndication=FALSE
-        IMCNSignallingIndication=FALSE
-        SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-  	Name=SECONDARY1
-        ReqTrafficClass=4
-        MinTrafficClass=4
-        ReqDeliveryOrder=1
-        MinDeliveryOrder=1
-        ReqDeliverErroneousSDU=8
-        MinDeliverErroneousSDU=8
-        ReqMaxSDUSize=768
-        MinAcceptableMaxSDUSize=512
-        ReqMaxUplinkRate=1024
-        ReqMinUplinkRate=1024
-        ReqMaxDownlinkRate=1024
-        ReqMinDownlinkRate=1024
-        ReqBER=0
-        MaxBER=0
-        ReqSDUErrorRatio=1
-        MaxSDUErrorRatio=1
-        ReqTrafficHandlingPriority=1
-        MinTrafficHandlingPriority=1
-        ReqTransferDelay=250
-        MaxTransferDelay=250
-        ReqGuaranteedUplinkRate=1024
-        MinGuaranteedUplinkRat=1024
-        ReqGuaranteedDownlinkRate=1024
-        MinGuaranteedDownlinkRate=1024
-        SignallingIndication=FALSE
-        IMCNSignallingIndication=FALSE
-        SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-[PolicySelectorTable]
-ADD_SECTION
-# COMMDB_ID = 1
-  PolicyId=1
-  AppUid=0
-  SrcAddress=0.0.0.0
-  SrcMask=255.255.255.255
-  DstAddress=192.168.1.1
-  DstMask=255.255.255.255
-  SrcPort=0
-  SrcPortMax=1031
-  DstPort=3461
-  DstPortMax=3461
-  ProtocolId=17
-  IapId=2
-  Priority=1
-  FIELD_COUNT=13
-END_ADD  
-
-ADD_SECTION
-# COMMDB_ID = 2
-  PolicyId=2
-  AppUid=0
-  SrcPort=0
-  SrcPortMax=0
-  ProtocolId=1
-  IapId=2
-  Priority=1
-  FIELD_COUNT=7
-END_ADD  
--- a/telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/configs/te_umtsgprsscpr_captest2.cfg	Wed Jun 23 19:32:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1316 +0,0 @@
-############################################################
-## AUTO-GENERATED CONFIGURATION FILE
-## CommsDat Database Dump Utility
-## 1.1
-############################################################
-
-############################################################
-## Network
-## 
-[Network]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=Intranet
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Intranet2
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Intranet3
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=Intranet4
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=Intranet5
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=Intranet6
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## ModemBearer
-## 
-[ModemBearer]
-ADD_TEMPLATE
-	Id=0
-	Name=Default Loopback Modem
-	TSYName=SIM
-	CSYName=PKTLOOPBACK
-	LastSocketActivityTimeout=180
-	LastSessionClosedTimeout=6
-	LastSocketClosedTimeout=4
-	DataBits=8
-	StopBits=1
-	Parity=NONE
-	Rate=115200
-	Handshaking=0
-	SpecialRate=0
-	XonChar=0
-	XoffChar=0
-	FaxClassPref=AUTO
-	SpeakerPref=NEVER
-	SpeakerVolPref=QUIET
-	ModemInitString=AT
-	DataInitString=AT
-	FaxInitString=AT
-	DialPauseLength=S8=
-	SpeakerVolContorlLow=L0
-	SpeakerVolControlMedium=L1
-	SpeakerVolControlHigh=L2
-	SpeakerAlwaysOff=M0
-	SpeakerOnUntilCarrier=M1
-	SpeakerAlwaysOn=M2
-	SpeakerOnAfterUntilCarrier=M3
-	DialToneWaitModifier=W
-	CallProgress1=X1
-	CallProgress2=X2
-	CallProgress3=X3
-	CallProgress4=X4
-	EchoOff=E0
-	VerboseText=V1
-	QuietOff=Q0
-	QuietOn=Q1
-	DialCommandStateModifier=;
-	OnLine=O
-	ResetConfiguration=Z
-	ReturnToFactoryDefs=&F
-	DCDOnDuringLink=&C1
-	DTRHangUp=&D2
-	DSRAlwaysOn=&S0
-	RTSCTSHandshake=&K3
-	XonXoffHandshake=&K4
-	EscapeCharacter=+
-	EscapeGuardPeriod=S12
-	NoDialTone=NO DIAL TONE
-	Busy=BUSY
-	NoAnswer=NO ANSWER
-	Carrier=CARRIER
-	Connect=CONNECT
-	CompressionClass5=COMPRESSION:CLASS 5
-	CompressionV42bis=COMPRESSION:V.42 bis
-	CompressionNone=COMPRESSION:NONE
-	ProtocolLAPD=PROTOCOL:LAPD
-	ProtocolALT=PROTOCOL:ALT
-	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
-	ProtocolNone=PROTOCOL:NONE
-	MessageValidityPeriod=0
-	MessageDeliveryReport=FALSE
-	CommRole=0
-	Agent=NULLAGT
-	BCAStack=C32Bca
-	FIELD_COUNT=66
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Loopback_RawIP_1
-	IfName=RAWIP
-	PortName=PKTLOOPBACK::501
-	CSYName=PKTLOOPBACK
-	FIELD_COUNT=5
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Loopback_SPUD_2
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=Loopback_RawIP_3
-	IfName=RAWIP
-	PortName=PKTLOOPBACK::503
-	CSYName=PKTLOOPBACK
-	FIELD_COUNT=5
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=Loopback_SPUD_4
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=WinTunnel_SPUD_5
-	IfName=SPUD
-	Agent=NULLAGT
-	FIELD_COUNT=4
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=Loopback_SPUD_5
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=Loopback_SPUD_6
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=Loopback_SPUD_7
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Id=10
-	Name=Loopback_SPUD_8
-	IfName=SPUD
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## Location
-## 
-[Location]
-ADD_TEMPLATE
-	Id=0
-	Name=Default Location
-	IntlPrefixCode=+
-	NatPrefixCode=0
-	NatCode=44
-	Mobile=TRUE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=9
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Office
-	IntlPrefixCode=00
-	NatPrefixCode=0
-	NatCode=44
-	AreaCode=171
-	DialOutCode=9,
-	Mobile=FALSE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Mobile
-	IntlPrefixCode=+
-	NatPrefixCode=0
-	NatCode=44
-	Mobile=TRUE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=9
-END_ADD
-
-
-############################################################
-## GlobalSettings
-## 
-[GlobalSettings]
-ADD_TEMPLATE
-	DefaultTier=Link.TierTable.2048
-	FIELD_COUNT=1
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=DefaultRecordName-1
-	ConnectionAttempts=2
-	RedialAttempts=3
-	SmsReceiveMode=2
-	GPRSAttachMode=1
-	AcceptIncomingGprs=1
-	GPRSClassCBearer=GSM
-	ModemForDataAndFax=2
-	ModemForPhoneServicesAndSMS=2
-	LocationForDataAndFax=3
-	LocationForPhoneServicesAndSMS=3
-	MaxMBufHeap=3
-	DefaultNetwork=1
-	BearerAvailabilityCheckTSY=mm
-	FIELD_COUNT=15
-END_ADD
-
-
-############################################################
-## OutgoingGPRS
-## 
-[OutgoingGPRS]
-ADD_TEMPLATE
-	Id=0
-	Name=Default Outgoing GPRS
-	APN=Test
-	PDPType=IPV4
-	ReqPrecedence=2
-	ReqDelay=4
-	ReqReliability=3
-	ReqPeakThroughput=3
-	ReqMeanThroughput=31
-	MinPrecedence=2
-	MinDelay=4
-	MinReliability=3
-	MinPeakThroughput=3
-	MinMeanThroughput=31
-	DataCompression=FALSE
-	HeaderCompression=FALSE
-	GprsUseEdge=FALSE
-	AnonymousAccess=FALSE
-	IfNetworks=ip
-	IfPromptForAuth=FALSE
-	IfAuthName=RasUser
-	AuthRetries=1
-	IpNetMask=255.255.255.0
-	IpAddrFromServer=FALSE
-	IpDNSAddrFromServer=FALSE
-	IpNameServer1=194.72.6.51
-	IpNameServer2=194.72.6.51
-	EnableLCPExtension=FALSE
-	DisablePlainTextAuth=FALSE
-	UmtsR99QoSAndOn=1
-	FIELD_COUNT=30
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=RawIP_Bounce_1
-	PDPType=IPV4
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=FALSE
-	IpAddr=192.168.1.1
-	IpDNSAddrFromServer=FALSE
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=SPUD_Echo_2
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.2
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=RawIP_Bounce_3
-	PDPType=IPV4
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=FALSE
-	IpAddr=192.168.2.3
-	IpDNSAddrFromServer=FALSE
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=SPUD_Echo_4
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=FALSE
-	IpAddr=192.168.2.4
-	IpDNSAddrFromServer=FALSE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=SPUD_Multi_1
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.10
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=SPUD_Multi_2
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.11
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=SPUD_Multi_3
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.12
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=SPUD_Multi_4
-	PDPType=IPV4
-	IfParams=lowernif=RAWIP
-	IfPromptForAuth=FALSE
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.13
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=8
-END_ADD
-
-
-############################################################
-## DefaultGPRS
-## 
-[DefaultGPRS]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=Dummy Default GPRS Settings
-	Usage=1
-	APN=Access point name
-	PDPType=IPV6
-	PDPAddress=www.wid.com
-	Precedence=1
-	Delay=1
-	Reliability=1
-	PeakThroughput=1
-	MeanThroughput=1
-	MinPrecedence=1
-	MinDelay=1
-	MinReliability=1
-	MinPeakThroughput=1
-	MinMeanThroughput=1
-	DataCompression=TRUE
-	HeaderCompression=TRUE
-	GprsUseEdge=FALSE
-	AnonymousAccess=TRUE
-	FIELD_COUNT=20
-END_ADD
-
-
-############################################################
-## APPrioritySelectionPolicyTable
-## 
-[APPrioritySelectionPolicyTable]
-ADD_SECTION
-# COMMDB_ID = 1
-  	Id=1
-	Name=SelectionPolicy1
-	AP1=Link.AccessPointTable.10001
-	APCOUNT=1
-	FIELD_COUNT=4
-END_ADD
-
-############################################################
-## AccessPointTable
-## 
-[AccessPointTable]
-ADD_SECTION
-# COMMDB_ID = 235
-	Id=9
-	Name=spud-rawipMappedFromIAP9
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=9
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 237
-	Id=8
-	Name=spud-rawipMappedFromIAP8
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=8
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 239
-	Id=7
-	Name=spud-rawipMappedFromIAP7
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=7
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 241
-	Id=6
-	Name=spud-rawipMappedFromIAP6
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=6
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 243
-	Id=5
-	Name=rawipMappedFromIAP5
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.3
-	CprConfig=5
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 245
-	Id=4
-	Name=spud-rawipMappedFromIAP4
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=4
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 247
-	Id=3
-	Name=rawipMappedFromIAP3
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.3
-	CprConfig=3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 249
-	Id=2
-	Name=spud-rawipMappedFromIAP2
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.4
-	CprConfig=2
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 251
-	Id=1
-	Name=rawipMappedFromIAP1
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	AccessPointSelectionPolicy=0
-	Cpr=CprTable.3
-	CprConfig=1
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	AppSID=0
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 253
-	Id=10001
-	Name=IPProtoDefault
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	CustomSelectionPolicy=1
-	CprConfig=1
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 254
-	Id=10000
-	Name=NetworkDefault
-	Tier=Link.TierTable.2048
-	MCpr=MCprTable.1
-	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.1
-	Cpr=CprTable.1
-	SCpr=SCprTable.7
-	Protocol=ProtocolTable.1
-	FIELD_COUNT=8
-END_ADD
-
-
-############################################################
-## BearerTypeTable
-## 
-[BearerTypeTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=ppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.3
-	Cpr=CprTable.3
-	SCpr=SCprTable.5
-	Protocol=ProtocolTable.3
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ethint
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.4
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.4
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=rawip
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=tunnelnif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.6
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.6
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=qosppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.7
-	Cpr=CprTable.3
-	SCpr=SCprTable.5
-	Protocol=ProtocolTable.7
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=dummynif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.8
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.8
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=hungrynif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.9
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.9
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=spud-ppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.4
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.3
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=spud-rawip
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.4
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	FIELD_COUNT=7
-END_ADD
-
-##This record here is the template record for the IPProto level APs generated by CommsDat.
-ADD_SECTION
-# COMMDB_ID = 10
-	##This name is a predefined name for the template for the IPProto APs.
-	##Please don't change it!
-	Name=IPProtoDefaultTemplate
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	FIELD_COUNT=6
-END_ADD
-
-############################################################
-## IAP
-## 
-[IAP]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=Loopback_GRPS_1
-	IAPServiceType=OutgoingGPRS
-	IAPService=2
-	IAPBearerType=ModemBearer
-	IAPBearer=2
-	IAPNetwork=1
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=Loopback_GRPS_2
-	IAPServiceType=OutgoingGPRS
-	IAPService=3
-	IAPBearerType=ModemBearer
-	IAPBearer=3
-	IAPNetwork=1
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=Loopback_GRPS_3
-	IAPServiceType=OutgoingGPRS
-	IAPService=4
-	IAPBearerType=ModemBearer
-	IAPBearer=4
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=Loopback_GRPS_4
-	IAPServiceType=OutgoingGPRS
-	IAPService=5
-	IAPBearerType=ModemBearer
-	IAPBearer=5
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=Loopback_GRPS_5
-	IAPServiceType=OutgoingGPRS
-	IAPService=2
-	IAPBearerType=ModemBearer
-	IAPBearer=4
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=Loopback_GRPS_6
-	IAPServiceType=OutgoingGPRS
-	IAPService=6
-	IAPBearerType=ModemBearer
-	IAPBearer=7
-	IAPNetwork=3
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=Loopback_GRPS_7
-	IAPServiceType=OutgoingGPRS
-	IAPService=7
-	IAPBearerType=ModemBearer
-	IAPBearer=8
-	IAPNetwork=4
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=Loopback_GRPS_8
-	IAPServiceType=OutgoingGPRS
-	IAPService=8
-	IAPBearerType=ModemBearer
-	IAPBearer=9
-	IAPNetwork=5
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=Loopback_GRPS_9
-	IAPServiceType=OutgoingGPRS
-	IAPService=9
-	IAPBearerType=ModemBearer
-	IAPBearer=10
-	IAPNetwork=6
-	IAPNetworkWeighting=0
-	Location=3
-	FIELD_COUNT=9
-END_ADD
-
-
-############################################################
-## ConnectionPreferences
-## 
-[ConnectionPreferences]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=DefaultRecordName-1
-	Ranking=1
-	Direction=OUTGOING
-	BearerSet=PSD
-	DialogPref=DONOTPROMPT
-	IAP=2
-	FIELD_COUNT=7
-END_ADD
-
-
-############################################################
-## TierTable
-## 
-[TierTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=2048
-	TierImplUid=271064536
-	Name=Tier1
-	TierThreadName=ESock_IP
-	TierManagerName=NetworkTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10000
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=271064560
-	TierImplUid=271064560
-	Name=Tier2
-	TierThreadName=ESock_IP
-	TierManagerName=ProtoTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10001
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=271064565
-	TierImplUid=271064565
-	Name=Tier3
-	TierThreadName=ESock_IP
-	TierManagerName=LinkTierManager
-##NB defaultAccessPoint not present in this layer. This is only needed here to satisfy the check
-##on the link layer. However important that once this field has a value it has to be linked to a
-##correct accesspoint record in the accesspoint table because this will be checked either.
-	DefaultAccessPoint=Link.AccessPointTable.1
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-
-############################################################
-## MCprTable
-## 
-[MCprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=netmcpr
-	MCprUid=271009095
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipprotomcpr
-	MCprUid=271064558
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=pppmcpr
-	MCprUid=271064556
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=ethmcpr
-	MCprUid=271064572
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=rawipmcpr
-	MCprUid=271064576
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=tunnelmcpr
-	MCprUid=271064578
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=qospppmcpr
-	MCprUid=271064556
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=dummynifmcpr
-	MCprUid=271064580
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=hungrynifmcpr
-	MCprUid=271064580
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Id=10
-	Name=pdpmcpr
-	MCprUid=271065840
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## CprTable
-## 
-[CprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=ipcpr
-	CprUid=270561519
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipprotocpr
-	CprUid=271064531
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=agentcpr
-	CprUid=271064552
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=vanillacpr
-	CprUid=271065843
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## SCprTable
-## 
-[SCprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=qosipscpr
-	SCprUid=0xFFFFFFFF
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipprotoscpr
-	SCprUid=271064529
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=agentscpr
-	SCprUid=271064554
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=pdpscpr
-	SCprUid=271065824
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=pppscpr
-	SCprUid=271065852
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=vanillascpr
-	SCprUid=271065844
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=ipscpr
-	SCprUid=271065811
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=ipqosprotoscpr
-	SCprUid=271065816
-	FIELD_COUNT=3
-END_ADD
-
-
-############################################################
-## ProtocolTable
-## 
-[ProtocolTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=sapshim
-	ProtocolUid=270496898
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=2
-	Name=ipshim4
-	ProtocolUid=271064118
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=3
-	Name=ppp
-	ProtocolUid=271064143
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=4
-	Name=ethernet
-	ProtocolUid=271064539
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=5
-	Name=rawip
-	ProtocolUid=271064562
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=6
-	Name=tunnel
-	ProtocolUid=271064567
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=7
-	Name=qosppp
-	ProtocolUid=271064148
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=8
-	Name=dummynif
-	ProtocolUid=271064123
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=9
-	Name=hungrynif
-	ProtocolUid=271064125
-	FIELD_COUNT=3
-END_ADD
-
-[UmtsR99QoSAndOn]
-ADD_SECTION
-# COMMDB_ID = 1
-  	Name=PRIMARY1
-        ReqTrafficClass=4
-        MinTrafficClass=4
-        ReqDeliveryOrder=4
-        MinDeliveryOrder=4
-        ReqDeliverErroneousSDU=8
-        MinDeliverErroneousSDU=8
-        ReqMaxSDUSize=0
-        MinAcceptableMaxSDUSize=0
-        ReqMaxUplinkRate=128
-        ReqMinUplinkRate=128
-        ReqMaxDownlinkRate=128
-        ReqMinDownlinkRate=128
-        ReqBER=32
-        MaxBER=32
-        ReqSDUErrorRatio=16
-        MaxSDUErrorRatio=16
-        ReqTrafficHandlingPriority=4
-        MinTrafficHandlingPriority=4
-        ReqTransferDelay=128
-        MaxTransferDelay=128
-        ReqGuaranteedUplinkRate=128
-        MinGuaranteedUplinkRat=128
-        ReqGuaranteedDownlinkRate=128
-        MinGuaranteedDownlinkRate=128
-        SignallingIndication=FALSE
-        IMCNSignallingIndication=FALSE
-        SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-  	Name=SECONDARY1
-        ReqTrafficClass=4
-        MinTrafficClass=4
-        ReqDeliveryOrder=1
-        MinDeliveryOrder=1
-        ReqDeliverErroneousSDU=8
-        MinDeliverErroneousSDU=8
-        ReqMaxSDUSize=768
-        MinAcceptableMaxSDUSize=512
-        ReqMaxUplinkRate=1024
-        ReqMinUplinkRate=1024
-        ReqMaxDownlinkRate=1024
-        ReqMinDownlinkRate=1024
-        ReqBER=0
-        MaxBER=0
-        ReqSDUErrorRatio=1
-        MaxSDUErrorRatio=1
-        ReqTrafficHandlingPriority=1
-        MinTrafficHandlingPriority=1
-        ReqTransferDelay=250
-        MaxTransferDelay=250
-        ReqGuaranteedUplinkRate=1024
-        MinGuaranteedUplinkRat=1024
-        ReqGuaranteedDownlinkRate=1024
-        MinGuaranteedDownlinkRate=1024
-        SignallingIndication=FALSE
-        IMCNSignallingIndication=FALSE
-        SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-[PolicySelectorTable]
-ADD_SECTION
-# COMMDB_ID = 1
-  PolicyId=1
-  AppUid=0
-  SrcAddress=0.0.0.0
-  SrcMask=255.255.255.255
-  DstAddress=192.168.1.1
-  DstMask=255.255.255.255
-  SrcPort=0
-  SrcPortMax=1031
-  DstPort=3461
-  DstPortMax=3461
-  ProtocolId=17
-  IapId=2
-  Priority=1
-  FIELD_COUNT=13
-END_ADD  
-
-ADD_SECTION
-# COMMDB_ID = 2
-  PolicyId=2
-  AppUid=0
-  SrcPort=0
-  SrcPortMax=0
-  ProtocolId=1
-  IapId=2
-  Priority=1
-  FIELD_COUNT=7
-END_ADD  
--- a/telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/group/bld.inf	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/Te_UmtsGprsSCPR/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -17,16 +17,11 @@
 
 prj_testexports
 
-../configs/te_UmtsGprsScpr_CapTest.xml			z:/testdata/configs/te_umtsgprsscpr_captest.xml
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-../configs/te_umtsgprsscpr_captest_pdpcpr.cfg		z:/testdata/configs/te_umtsgprsscpr_captest.cfg
-../configs/te_umtsgprsscpr_captest2_pdpcpr.cfg		z:/testdata/configs/te_umtsgprsscpr_captest2.cfg
-#else
-../configs/te_umtsgprsscpr_captest.cfg			z:/testdata/configs/te_umtsgprsscpr_captest.cfg
-../configs/te_umtsgprsscpr_captest2.cfg			z:/testdata/configs/te_umtsgprsscpr_captest2.cfg
-#endif
-../configs/te_UmtsGprsScpr_NoDefaults.xml		z:/testdata/configs/te_umtsgprsscpr_nodefaults.xml
-../configs/TE_UmtsGprsScprLoopbackCSY.ini		z:/testdata/configs/te_umtsgprsscprloopbackcsy.ini
+../configs/te_UmtsGprsScpr_CapTest.xml          z:/testdata/configs/te_umtsgprsscpr_captest.xml
+../configs/te_umtsgprsscpr_captest_pdpcpr.cfg   z:/testdata/configs/te_umtsgprsscpr_captest.cfg
+../configs/te_umtsgprsscpr_captest2_pdpcpr.cfg  z:/testdata/configs/te_umtsgprsscpr_captest2.cfg
+../configs/te_UmtsGprsScpr_NoDefaults.xml       z:/testdata/configs/te_umtsgprsscpr_nodefaults.xml
+../configs/TE_UmtsGprsScprLoopbackCSY.ini       z:/testdata/configs/te_umtsgprsscprloopbackcsy.ini
 
 
 // configuration 1 commdb settings //
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/TE_RawIpSize.cfg	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/TE_RawIpSize.cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -911,7 +911,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
@@ -973,7 +973,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
@@ -1035,7 +1035,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
@@ -1066,7 +1066,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
@@ -1097,7 +1097,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
@@ -1128,7 +1128,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
@@ -1159,7 +1159,7 @@
 	AccessPointSelectionPolicy=0
 	Tier=Link.TierTable.271064565
 	MCpr=MCprTable.10
-	Cpr=CprTable.3
+	Cpr=CprTable.8
 	SCpr=SCprTable.4
 	Protocol=ProtocolTable.5
 	CprConfig=0
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_SpudNetworkSide.xml	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_SpudNetworkSide.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -205,7 +205,7 @@
         <MessageValidityPeriod>0</MessageValidityPeriod>
         <MessageDeliveryReport>FALSE</MessageDeliveryReport>
         <LastSessionClosedTimeout>4</LastSessionClosedTimeout>
-        <LastSocketClosedTimeout>6</LastSocketClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
         <LastSocketActivityTimeout>180</LastSocketActivityTimeout>
         <CommRole>0</CommRole>
     </ModemBearer>
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6.cfg	Wed Jun 23 19:32:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1552 +0,0 @@
-############################################################
-## AUTO-GENERATED CONFIGURATION FILE
-## CommsDat Database Dump Utility
-## 1.1
-############################################################
-
-############################################################
-## Network
-## 
-[Network]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=Intranet
-	FIELD_COUNT=1
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=Intranet2
-	FIELD_COUNT=1
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=Intranet3
-	FIELD_COUNT=1
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=Intranet4
-	FIELD_COUNT=1
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=Intranet5
-	FIELD_COUNT=1
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=Intranet6
-	FIELD_COUNT=1
-END_ADD
-
-
-############################################################
-## ModemBearer
-## 
-[ModemBearer]
-ADD_TEMPLATE
-	Name=Default Loopback Modem
-	TSYName=SIM
-	CSYName=PKTLOOPBACK
-	LastSocketActivityTimeout=180
-	LastSessionClosedTimeout=4
-	LastSocketClosedTimeout=6
-	DataBits=8
-	StopBits=1
-	Parity=NONE
-	Rate=115200
-	Handshaking=0
-	SpecialRate=0
-	XonChar=0
-	XoffChar=0
-	FaxClassPref=AUTO
-	SpeakerPref=NEVER
-	SpeakerVolPref=QUIET
-	ModemInitString=AT
-	DataInitString=AT
-	FaxInitString=AT
-	DialPauseLength=S8=
-	SpeakerVolContorlLow=L0
-	SpeakerVolControlMedium=L1
-	SpeakerVolControlHigh=L2
-	SpeakerAlwaysOff=M0
-	SpeakerOnUntilCarrier=M1
-	SpeakerAlwaysOn=M2
-	SpeakerOnAfterUntilCarrier=M3
-	DialToneWaitModifier=W
-	CallProgress1=X1
-	CallProgress2=X2
-	CallProgress3=X3
-	CallProgress4=X4
-	EchoOff=E0
-	VerboseText=V1
-	QuietOff=Q0
-	QuietOn=Q1
-	DialCommandStateModifier=;
-	OnLine=O
-	ResetConfiguration=Z
-	ReturnToFactoryDefs=&F
-	DCDOnDuringLink=&C1
-	DTRHangUp=&D2
-	DSRAlwaysOn=&S0
-	RTSCTSHandshake=&K3
-	XonXoffHandshake=&K4
-	EscapeCharacter=+
-	EscapeGuardPeriod=S12
-	NoDialTone=NO DIAL TONE
-	Busy=BUSY
-	NoAnswer=NO ANSWER
-	Carrier=CARRIER
-	Connect=CONNECT
-	CompressionClass5=COMPRESSION:CLASS 5
-	CompressionV42bis=COMPRESSION:V.42 bis
-	CompressionNone=COMPRESSION:NONE
-	ProtocolLAPD=PROTOCOL:LAPD
-	ProtocolALT=PROTOCOL:ALT
-	ProtocolALTCELLULAR=PROTOCOL:ALT-CELLULAR
-	ProtocolNone=PROTOCOL:NONE
-	MessageValidityPeriod=0
-	MessageDeliveryReport=FALSE
-	CommRole=0
-	BCAStack=C32Bca
-	Agent=NULLAGT
-	FIELD_COUNT=65
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=Loopback_RawIP_1
-	IfName=RAWIP
-	PortName=PKTLOOPBACK::501
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=Loopback_SPUD_2
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=Loopback_RawIP_3
-	IfName=RAWIP
-	PortName=PKTLOOPBACK::503
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=Loopback_SPUD_4
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=WinTunnel_SPUD_5
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=Loopback_SPUD_5
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=Loopback_SPUD_6
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=Loopback_SPUD_7
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Name=Loopback_SPUD_8
-	IfName=SPUD
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## Location
-## 
-[Location]
-ADD_TEMPLATE
-	Name=Default Location
-	IntlPrefixCode=+
-	NatPrefixCode=0
-	NatCode=44
-	Mobile=TRUE
-	UsePulseDial=FALSE
-	WaitForDialTone=FALSE
-	PauseAfterDialout=0
-	FIELD_COUNT=8
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=Office
-	IntlPrefixCode=00
-	AreaCode=171
-	DialOutCode=9,
-	Mobile=FALSE
-	FIELD_COUNT=5
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=Mobile
-	FIELD_COUNT=1
-END_ADD
-
-
-############################################################
-## OutgoingGPRS
-## 
-[OutgoingGPRS]
-ADD_TEMPLATE
-	Name=Default Outgoing GPRS
-	APN=Test
-	PDPType=IPV4
-	ReqPrecedence=2
-	ReqDelay=4
-	ReqReliability=3
-	ReqPeakThroughput=3
-	ReqMeanThroughput=31
-	MinPrecedence=2
-	MinDelay=4
-	MinReliability=3
-	MinPeakThroughput=3
-	MinMeanThroughput=31
-	DataCompression=FALSE
-	HeaderCompression=FALSE
-	GprsUseEdge=FALSE
-	AnonymousAccess=FALSE
-	IfNetworks=ip
-	IfPromptForAuth=FALSE
-	IfAuthName=RasUser
-	AuthRetries=1
-	IpNetMask=255.255.255.0
-	IpGateway=0.0.0.1
-	IpAddrFromServer=FALSE
-	IpDNSAddrFromServer=FALSE
-	IpNameServer1=194.72.6.51
-	IpNameServer2=194.72.6.51
-	EnableLCPExtension=FALSE
-	DisablePlainTextAuth=FALSE
-	UmtsR99QoSAndOn=1
-	FIELD_COUNT=30
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=RawIP_Bounce_1
-	IpAddrFromServer=TRUE
-	IpAddr=192.168.1.1
-	IpDNSAddrFromServer=TRUE
-	FIELD_COUNT=4
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=SPUD_Echo_2
-	APN=orangeinternet
-	PDPType=IPV6
-	IfParams=lowernif=RAWIP
-	IfNetworks=ip6
-	IpAddrFromServer=TRUE
-	IpAddr=fe80::19:5bff:fe8a:c0eb
-	Ip6DNSAddrFromServer=FALSE
-	IP6NameServer1=fe80::19:5bff:fe8a:dead
-	IP6NameServer2=fe80::19:5bff:fe8a:beef
-	IpNetMask=ffff:ffff:ffff:ffff:ffff:0000
-	IpGateway=0:0:0:0:0:1
-	IfAuthName=web
-	IfAuthPass=web
-	FIELD_COUNT=14
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=RawIP_Bounce_3
-	IpAddr=192.168.2.3
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=SPUD_Echo_4
-	IfParams=lowernif=RAWIP
-	IpAddr=192.168.2.4
-	FIELD_COUNT=3
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=SPUD_Multi_1
-	APN=orangeinternet
-	PDPType=IPV6
-	IfParams=lowernif=RAWIP
-	IfNetworks=ip6
-	IpAddrFromServer=TRUE
-	IpAddr=fe80::19:5bff:fe8a:c0ec
-	Ip6DNSAddrFromServer=FALSE
-	IP6NameServer1=fe80::19:5bff:fe8a:dead
-	IP6NameServer2=fe80::19:5bff:fe8a:beef
-	IpNetMask=ffff:ffff:ffff:ffff:ffff:0000
-	IpGateway=0:0:0:0:0:1
-	IfAuthName=web
-	IfAuthPass=web
-	FIELD_COUNT=14
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=SPUD_Multi_2
-	APN=orangeinternet
-	PDPType=IPV6
-	IfParams=lowernif=RAWIP
-	IfNetworks=ip6
-	IpAddrFromServer=TRUE
-	IpAddr=fe80::19:5bff:fe8a:c0ed
-	Ip6DNSAddrFromServer=FALSE
-	IP6NameServer1=fe80::19:5bff:fe8a:dead
-	IP6NameServer2=fe80::19:5bff:fe8a:beef
-	IpNetMask=ffff:ffff:ffff:ffff:ffff:0000
-	IpGateway=0:0:0:0:0:1
-	IfAuthName=web
-	IfAuthPass=web
-	FIELD_COUNT=14
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=SPUD_Multi_3
-	APN=orangeinternet
-	PDPType=IPV6
-	IfParams=lowernif=RAWIP
-	IfNetworks=ip6
-	IpAddrFromServer=TRUE
-	IpAddr=fe80::19:5bff:fe8a:c0ee
-	Ip6DNSAddrFromServer=FALSE
-	IP6NameServer1=fe80::19:5bff:fe8a:dead
-	IP6NameServer2=fe80::19:5bff:fe8a:beef
-	IpNetMask=ffff:ffff:ffff:ffff:ffff:0000
-	IpGateway=0:0:0:0:0:1
-	IfAuthName=web
-	IfAuthPass=web
-	FIELD_COUNT=14
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=SPUD_Multi_4
-	APN=orangeinternet
-	PDPType=IPV6
-	IfParams=lowernif=RAWIP
-	IfNetworks=ip6
-	IpAddrFromServer=TRUE
-	IpAddr=fe80::19:5bff:fe8a:c0ef
-	Ip6DNSAddrFromServer=FALSE
-	IP6NameServer1=fe80::19:5bff:fe8a:dead
-	IP6NameServer2=fe80::19:5bff:fe8a:beef
-	IpNetMask=ffff:ffff:ffff:ffff:ffff:0000
-	IpGateway=0:0:0:0:0:1
-	IfAuthName=web
-	IfAuthPass=web
-	FIELD_COUNT=14
-END_ADD
-
-############################################################
-## DefaultGPRS
-## 
-[DefaultGPRS]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=Dummy Default GPRS Settings
-	Usage=1
-	APN=Access point name
-	PDPType=IPV6
-	PDPAddress=www.wid.com
-	Precedence=1
-	Delay=1
-	Reliability=1
-	PeakThroughput=1
-	MeanThroughput=1
-	MinPrecedence=1
-	MinDelay=1
-	MinReliability=1
-	MinPeakThroughput=1
-	MinMeanThroughput=1
-	DataCompression=TRUE
-	HeaderCompression=TRUE
-	GprsUseEdge=FALSE
-	AnonymousAccess=TRUE
-	FIELD_COUNT=19
-END_ADD
-
-
-############################################################
-## APPrioritySelectionPolicyTable
-## 
-[APPrioritySelectionPolicyTable]
-ADD_SECTION
-# COMMDB_ID = 254
-	Id=20000
-	Name=APSelPolNetworkDefault
-	AP1=Link.AccessPointTable.10004
-	APCOUNT=1
-	FIELD_COUNT=4
-END_ADD
-
-
-############################################################
-## TierTable
-## 
-[TierTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=2048
-	Name=Tier1
-	TierImplUid=271064536
-	TierThreadName=ESock_IP
-	TierManagerName=NetworkTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10000
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=271064560
-	Name=Tier2
-	TierImplUid=271064560
-	TierThreadName=ESock_IP
-	TierManagerName=ProtoTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10004
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=271064565
-	Name=Tier3
-	TierImplUid=271064565
-	TierThreadName=ESock_IP
-	TierManagerName=LinkTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10000
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=536887799
-	Name=Tier4
-	TierImplUid=536887799
-	TierThreadName=ESock_SIP
-	TierManagerName=SIPTierManager
-	DefaultAccessPoint=Link.AccessPointTable.10002
-	PromptUser=0
-	FIELD_COUNT=7
-END_ADD
-
-
-############################################################
-## MCprTable
-## 
-[MCprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=netmcpr
-	MCprUid=271009095
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=ipprotomcpr
-	MCprUid=271064558
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=pppmcpr
-	MCprUid=271064556
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=ethmcpr
-	MCprUid=271064572
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=rawipmcpr
-	MCprUid=271064576
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=tunnelmcpr
-	MCprUid=271064578
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=qospppmcpr
-	MCprUid=271064556
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=dummynifmcpr
-	MCprUid=271064580
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Name=hungrynifmcpr
-	MCprUid=271064580
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Name=pdpmcpr
-	MCprUid=271065840
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 11
-	Name=sipmcpr
-	MCprUid=536887801
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 13
-	Name=panethermcpr
-	MCprUid=271070626
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## CprTable
-## 
-[CprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=ipcpr
-	CprUid=270561519
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=ipprotocpr
-	CprUid=271064531
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=agentcpr
-	CprUid=271064552
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=vanillacpr
-	CprUid=271065843
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=sipcpr
-	CprUid=271010872
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=tunnelagentcpr
-	CprUid=271080968
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=pdpcpr
-	CprUid=271065826
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## SCprTable
-## 
-[SCprTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=qosipscpr
-	SCprUid=270549768
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=ipprotoscpr
-	SCprUid=271064529
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=agentscpr
-	SCprUid=271064554
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=pdpscpr
-	SCprUid=271065824
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=pppscpr
-	SCprUid=271065852
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=vanillascpr
-	SCprUid=271065844
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=qosscpr
-	SCprUid=271065811
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=sipscpr
-	SCprUid=271010839
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## ProtocolTable
-## 
-[ProtocolTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=sapshim
-	ProtocolUid=270496898
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=ipshim4
-	ProtocolUid=271064118
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=ppp
-	ProtocolUid=271064143
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=ethernet
-	ProtocolUid=271064539
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=rawip
-	ProtocolUid=271064562
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=tunnel
-	ProtocolUid=271064567
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=qosppp
-	ProtocolUid=271064148
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=dummynif
-	ProtocolUid=271064123
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Name=hungrynif
-	ProtocolUid=271064125
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Name=panether
-	ProtocolUid=271070627
-	FIELD_COUNT=2
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 11
-	Name=rawip2
-	ProtocolUid=271084280
-	FIELD_COUNT=2
-END_ADD
-
-
-############################################################
-## BearerTypeTable
-## 
-[BearerTypeTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=ppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.3
-	Cpr=CprTable.3
-	SCpr=SCprTable.5
-	Protocol=ProtocolTable.3
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=ethint
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.4
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.4
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=rawip
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=tunnelnif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.6
-	Cpr=CprTable.7
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.6
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=qosppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.7
-	Cpr=CprTable.3
-	SCpr=SCprTable.5
-	Protocol=ProtocolTable.7
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=dummynif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.8
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.8
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=hungrynif
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.9
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.9
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=spud-ppp
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.3
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Name=spud-rawip
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Name=IPProtoDefaultTemplate
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 11
-	Name=NetworkDefaultTemplate
-	Tier=Link.TierTable.2048
-	MCpr=MCprTable.1
-	Cpr=CprTable.1
-	SCpr=SCprTable.7
-	Protocol=ProtocolTable.1
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 12
-	Name=rawip2
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.8
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.11
-	FIELD_COUNT=6
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 13
-	Name=spud-rawip2
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.8
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.11
-	FIELD_COUNT=6
-END_ADD
-
-
-############################################################
-## AccessPointTable
-## 
-[AccessPointTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Id=1
-	Name=rawipMappedFromIAP1
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Id=10003
-	Name=IPProto_generated_10003
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=1
-	CustomSelectionPolicy=1
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Id=2
-	Name=spud-rawipMappedFromIAP2
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Id=10004
-	Name=IPProto_generated_10004
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=2
-	CustomSelectionPolicy=2
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Id=3
-	Name=rawipMappedFromIAP3
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Id=10005
-	Name=IPProto_generated_10005
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=3
-	CustomSelectionPolicy=3
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Id=4
-	Name=spud-rawipMappedFromIAP4
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Id=10006
-	Name=IPProto_generated_10006
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=4
-	CustomSelectionPolicy=4
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Id=5
-	Name=rawipMappedFromIAP5
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.5
-	Cpr=CprTable.3
-	SCpr=SCprTable.3
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 10
-	Id=10007
-	Name=IPProto_generated_10007
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=5
-	CustomSelectionPolicy=5
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 11
-	Id=6
-	Name=spud-rawipMappedFromIAP6
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 12
-	Id=10008
-	Name=IPProto_generated_10008
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=6
-	CustomSelectionPolicy=6
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 13
-	Id=7
-	Name=spud-rawipMappedFromIAP7
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 14
-	Id=10009
-	Name=IPProto_generated_10009
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=7
-	CustomSelectionPolicy=7
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 15
-	Id=8
-	Name=spud-rawipMappedFromIAP8
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 16
-	Id=10010
-	Name=IPProto_generated_10010
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=8
-	CustomSelectionPolicy=8
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 17
-	Id=9
-	Name=spud-rawipMappedFromIAP9
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064565
-	MCpr=MCprTable.10
-	Cpr=CprTable.3
-	SCpr=SCprTable.4
-	Protocol=ProtocolTable.5
-	CprConfig=0
-	AppSID=0
-	Priority=4294967295
-	FIELD_COUNT=11
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 18
-	Id=10011
-	Name=IPProto_generated_10011
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.271064560
-	MCpr=MCprTable.2
-	Cpr=CprTable.2
-	SCpr=SCprTable.2
-	Protocol=ProtocolTable.2
-	CprConfig=9
-	CustomSelectionPolicy=9
-	FIELD_COUNT=10
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 252
-	Id=10002
-	Name=SIPDefault
-	AccessPointSelectionPolicy=0
-	Tier=Link.TierTable.536887799
-	MCpr=MCprTable.11
-	Cpr=CprTable.5
-	SCpr=SCprTable.8
-	Protocol=ProtocolTable.2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 254
-	Id=10000
-	Name=NetworkDefault
-	AccessPointSelectionPolicy=Link.APPrioritySelectionPolicyTable.20000
-	Tier=Link.TierTable.2048
-	MCpr=MCprTable.1
-	Cpr=CprTable.1
-	SCpr=SCprTable.7
-	Protocol=ProtocolTable.1
-	FIELD_COUNT=8
-END_ADD
-
-
-############################################################
-## GlobalSettings
-## 
-[GlobalSettings]
-ADD_TEMPLATE
-	DefaultTier=1
-	FIELD_COUNT=1
-END_TEMPLATE
-
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=DefaultRecordName-1
-	ConnectionAttempts=2
-	RedialAttempts=3
-	SmsReceiveMode=2
-	GPRSAttachMode=1
-	AcceptIncomingGprs=1
-	GPRSClassCBearer=GSM
-	ModemForDataAndFax=2
-	ModemForPhoneServicesAndSMS=2
-	LocationForDataAndFax=2
-	LocationForPhoneServicesAndSMS=2
-	DefaultNetwork=1
-	BearerAvailabilityCheckTSY=mm
-	FIELD_COUNT=13
-END_ADD
-
-
-############################################################
-## IAP
-## 
-[IAP]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=Loopback_GRPS_1
-	IAPServiceType=OutgoingGPRS
-	IAPService=1
-	IAPBearerType=ModemBearer
-	IAPBearer=1
-	IAPNetwork=1
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=Loopback_GRPS_2
-	IAPServiceType=OutgoingGPRS
-	IAPService=2
-	IAPBearerType=ModemBearer
-	IAPBearer=2
-	IAPNetwork=1
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=Loopback_GRPS_3
-	IAPServiceType=OutgoingGPRS
-	IAPService=3
-	IAPBearerType=ModemBearer
-	IAPBearer=3
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=Loopback_GRPS_4
-	IAPServiceType=OutgoingGPRS
-	IAPService=4
-	IAPBearerType=ModemBearer
-	IAPBearer=4
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 5
-	Name=Loopback_GRPS_5
-	IAPServiceType=OutgoingGPRS
-	IAPService=1
-	IAPBearerType=ModemBearer
-	IAPBearer=3
-	IAPNetwork=2
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 6
-	Name=Loopback_GRPS_6
-	IAPServiceType=OutgoingGPRS
-	IAPService=5
-	IAPBearerType=ModemBearer
-	IAPBearer=6
-	IAPNetwork=3
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 7
-	Name=Loopback_GRPS_7
-	IAPServiceType=OutgoingGPRS
-	IAPService=6
-	IAPBearerType=ModemBearer
-	IAPBearer=7
-	IAPNetwork=4
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 8
-	Name=Loopback_GRPS_8
-	IAPServiceType=OutgoingGPRS
-	IAPService=7
-	IAPBearerType=ModemBearer
-	IAPBearer=8
-	IAPNetwork=5
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 9
-	Name=Loopback_GRPS_9
-	IAPServiceType=OutgoingGPRS
-	IAPService=8
-	IAPBearerType=ModemBearer
-	IAPBearer=9
-	IAPNetwork=6
-	IAPNetworkWeighting=0
-	Location=2
-	FIELD_COUNT=8
-END_ADD
-
-
-############################################################
-## ConnectionPreferences
-## 
-[ConnectionPreferences]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=DefaultRecordName-1
-	Ranking=1
-	Direction=OUTGOING
-	BearerSet=PSD
-	DialogPref=DONOTPROMPT
-	IAP=2
-	FIELD_COUNT=6
-END_ADD
-
-
-############################################################
-## UmtsR99QoSAndOn
-## 
-[UmtsR99QoSAndOn]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=PRIMARY1
-	ReqTrafficClass=1
-	MinTrafficClass=1
-	ReqDeliveryOrder=1
-	MinDeliveryOrder=1
-	ReqDeliverErroneousSDU=1
-	MinDeliverErroneousSDU=1
-	ReqMaxSDUSize=0
-	MinAcceptableMaxSDUSize=0
-	ReqMaxUplinkRate=0
-	ReqMinUplinkRate=0
-	ReqMaxDownlinkRate=0
-	ReqMinDownlinkRate=0
-	ReqBER=1
-	MaxBER=1
-	ReqSDUErrorRatio=1
-	MaxSDUErrorRatio=1
-	ReqTrafficHandlingPriority=1
-	MinTrafficHandlingPriority=1
-	ReqTransferDelay=0
-	MaxTransferDelay=0
-	ReqGuaranteedUplinkRate=0
-	MinGuaranteedUplinkRat=0
-	ReqGuaranteedDownlinkRate=0
-	MinGuaranteedDownlinkRate=0
-	SignallingIndication=FALSE
-	ImCnSignallingIndication=FALSE
-	SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=SECONDARY1
-	ReqTrafficClass=4
-	MinTrafficClass=4
-	ReqDeliveryOrder=1
-	MinDeliveryOrder=1
-	ReqDeliverErroneousSDU=8
-	MinDeliverErroneousSDU=8
-	ReqMaxSDUSize=768
-	MinAcceptableMaxSDUSize=512
-	ReqMaxUplinkRate=1024
-	ReqMinUplinkRate=1024
-	ReqMaxDownlinkRate=1024
-	ReqMinDownlinkRate=1024
-	ReqBER=0
-	MaxBER=0
-	ReqSDUErrorRatio=1
-	MaxSDUErrorRatio=1
-	ReqTrafficHandlingPriority=1
-	MinTrafficHandlingPriority=1
-	ReqTransferDelay=250
-	MaxTransferDelay=250
-	ReqGuaranteedUplinkRate=1024
-	MinGuaranteedUplinkRat=1024
-	ReqGuaranteedDownlinkRate=1024
-	MinGuaranteedDownlinkRate=1024
-	SignallingIndication=FALSE
-	ImCnSignallingIndication=FALSE
-	SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 3
-	Name=PRIMARY2
-	ReqTrafficClass=1
-	MinTrafficClass=1
-	ReqDeliveryOrder=1
-	MinDeliveryOrder=1
-	ReqDeliverErroneousSDU=1
-	MinDeliverErroneousSDU=1
-	ReqMaxSDUSize=0
-	MinAcceptableMaxSDUSize=0
-	ReqMaxUplinkRate=0
-	ReqMinUplinkRate=0
-	ReqMaxDownlinkRate=0
-	ReqMinDownlinkRate=0
-	ReqBER=1
-	MaxBER=1
-	ReqSDUErrorRatio=1
-	MaxSDUErrorRatio=1
-	ReqTrafficHandlingPriority=1
-	MinTrafficHandlingPriority=1
-	ReqTransferDelay=0
-	MaxTransferDelay=0
-	ReqGuaranteedUplinkRate=0
-	MinGuaranteedUplinkRat=0
-	ReqGuaranteedDownlinkRate=0
-	MinGuaranteedDownlinkRate=0
-	SignallingIndication=FALSE
-	ImCnSignallingIndication=FALSE
-	SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 4
-	Name=SECONDARY2
-	ReqTrafficClass=4
-	MinTrafficClass=4
-	ReqDeliveryOrder=1
-	MinDeliveryOrder=1
-	ReqDeliverErroneousSDU=8
-	MinDeliverErroneousSDU=8
-	ReqMaxSDUSize=768
-	MinAcceptableMaxSDUSize=512
-	ReqMaxUplinkRate=1024
-	ReqMinUplinkRate=1024
-	ReqMaxDownlinkRate=1024
-	ReqMinDownlinkRate=1024
-	ReqBER=0
-	MaxBER=0
-	ReqSDUErrorRatio=1
-	MaxSDUErrorRatio=1
-	ReqTrafficHandlingPriority=1
-	MinTrafficHandlingPriority=1
-	ReqTransferDelay=250
-	MaxTransferDelay=250
-	ReqGuaranteedUplinkRate=1024
-	MinGuaranteedUplinkRat=1024
-	ReqGuaranteedDownlinkRate=1024
-	MinGuaranteedDownlinkRate=1024
-	SignallingIndication=FALSE
-	ImCnSignallingIndication=FALSE
-	SourceStatisticsDescriptor=0
-	FIELD_COUNT=28
-END_ADD
-
-
-############################################################
-## PolicySelectorTable
-## 
-[PolicySelectorTable]
-ADD_SECTION
-# COMMDB_ID = 1
-	Name=DefaultRecordName-1
-	PolicyId=1
-	SrcAddress=0:0:0:0:0:0
-	SrcMask=ffff:ffff:ffff:ffff:ffff:ffff
-	DstAddress=fe80::19:5bff:fe8a:abcd
-	DstMask=ffff:ffff:ffff:ffff:ffff:ffff
-	SrcPort=0
-	DstPort=3461
-	SrcPortMax=1031
-	DstPortMax=3461
-	ProtocolId=17
-	IAPid=2
-	Priority=1
-	FIELD_COUNT=13
-END_ADD
-
-ADD_SECTION
-# COMMDB_ID = 2
-	Name=DefaultRecordName-2
-	PolicyId=2
-	SrcPort=0
-	SrcPortMax=0
-	ProtocolId=1
-	IAPid=2
-	Priority=1
-	FIELD_COUNT=7
-END_ADD
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6_pdpcpr.cfg	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_pdplayer_ip6_pdpcpr.cfg	Tue Jul 06 15:36:38 2010 +0300
@@ -55,7 +55,7 @@
 	CSYName=PKTLOOPBACK
 	LastSocketActivityTimeout=180
 	LastSessionClosedTimeout=4
-	LastSocketClosedTimeout=6
+	LastSocketClosedTimeout=30
 	DataBits=8
 	StopBits=1
 	Parity=NONE
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_spudNetworkSide_r4_and_r5.xml	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/configs/te_spudNetworkSide_r4_and_r5.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -271,7 +271,7 @@
         <MessageValidityPeriod>0</MessageValidityPeriod>
         <MessageDeliveryReport>FALSE</MessageDeliveryReport>
         <LastSessionClosedTimeout>4</LastSessionClosedTimeout>
-        <LastSocketClosedTimeout>6</LastSocketClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
         <LastSocketActivityTimeout>180</LastSocketActivityTimeout>
         <CommRole>0</CommRole>
     </ModemBearer>
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/group/BLD.INF	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/group/BLD.INF	Tue Jul 06 15:36:38 2010 +0300
@@ -81,43 +81,39 @@
 ../configs/te_SpudNetworkSide.xml					z:/testdata/configs/te_spudnetworkside.xml
 ../configs/te_spudnetworkside_promptforauth.xml		z:/testdata/configs/te_spudnetworkside_promptforauth.xml
 ../configs/te_SpudNetworkSide_ppp.xml				z:/testdata/configs/te_spudnetworkside_ppp.xml
-../configs/TE_SpudNetworkSide_PppLoopback.xml			z:/testdata/configs/te_spudnetworkside_ppploopback.xml
-../configs/te_SpudNetworkSide_nifman.xml				z:/testdata/configs/te_spudnetworkside_nifman.xml
-../configs/te_spudNetworkSide_r4_and_r5.xml			z:/testdata/configs/te_spudnetworkside_r4_and_r5.xml
-../configs/te_spudNetworkSide.ini					z:/testdata/configs/te_spudnetworkside.ini
-../configs/TE_SpudNetworkSideLoopbackCSY.ini		z:/testdata/configs/te_spudnetworksideloopbackcsy.ini
-../configs/TE_SpudNetworkSideLoopbackCSY_serial.ini	z:/testdata/configs/te_spudnetworksideloopbackcsy_serial.ini
-../configs/te_spudNetworkSide_nifman.ini			z:/testdata/configs/te_spudnetworkside_nifman.ini
-../configs/te_spudNetworkSide_r4_and_r5.ini			z:/testdata/configs/te_spudnetworkside_r4_and_r5.ini
+../configs/TE_SpudNetworkSide_PppLoopback.xml       z:/testdata/configs/te_spudnetworkside_ppploopback.xml
+../configs/te_SpudNetworkSide_nifman.xml            z:/testdata/configs/te_spudnetworkside_nifman.xml
+../configs/te_spudNetworkSide_r4_and_r5.xml         z:/testdata/configs/te_spudnetworkside_r4_and_r5.xml
+../configs/te_spudNetworkSide.ini                   z:/testdata/configs/te_spudnetworkside.ini
+../configs/TE_SpudNetworkSideLoopbackCSY.ini        z:/testdata/configs/te_spudnetworksideloopbackcsy.ini
+../configs/TE_SpudNetworkSideLoopbackCSY_serial.ini z:/testdata/configs/te_spudnetworksideloopbackcsy_serial.ini
+../configs/te_spudNetworkSide_nifman.ini            z:/testdata/configs/te_spudnetworkside_nifman.ini
+../configs/te_spudNetworkSide_r4_and_r5.ini         z:/testdata/configs/te_spudnetworkside_r4_and_r5.ini
 
 ../configs/TE_PppSize_spud.ini						z:/testdata/configs/te_pppsize_spud.ini
 ../configs/TE_PppSize_spud.xml						z:/testdata/configs/te_pppsize_spud.xml
-../configs/TE_PppSize_config.txt					z:/testdata/configs/te_pppsize_config.txt
+../configs/TE_PppSize_config.txt                    z:/testdata/configs/te_pppsize_config.txt
 
-../configs/TE_SpudNetworkSide_Channel_config.txt		z:/testdata/configs/TE_SpudNetworkSide_Channel_config.txt
+../configs/TE_SpudNetworkSide_Channel_config.txt    z:/testdata/configs/TE_SpudNetworkSide_Channel_config.txt
 
 // Some error codes are platsec dependent
-../configs/TE_SpudNetworkSide_9x.ini 	z:/testdata/configs/te_spudnetworkside_platsec.ini
+../configs/TE_SpudNetworkSide_9x.ini                z:/testdata/configs/te_spudnetworkside_platsec.ini
 
 //Used to trigger GuQos to use Qospolicies.ini file for SetDefaultQoS
-../configs/qospolicies.ini							z:/testdata/configs/qospolicies.ini
+../configs/qospolicies.ini                          z:/testdata/configs/qospolicies.ini
 
-../configs/te_pdplayer_ip6.ini							z:/testdata/configs/te_pdplayer_ip6.ini
-#ifdef SYMBIAN_ADAPTIVE_TCP_RECEIVE_WINDOW
-../configs/te_pdplayer_ip6_pdpcpr.cfg						z:/testdata/configs/te_pdplayer_ip6.cfg
-#else
-../configs/te_pdplayer_ip6.cfg							z:/testdata/configs/te_pdplayer_ip6.cfg
-#endif
-
-../configs/te_pdplayer_ip6_loopbackcsy.ini							z:/testdata/configs/te_pdplayer_ip6_loopbackcsy.ini
-../configs/te_pdplayer_ip6_simtsy_config.txt							z:/testdata/configs/te_pdplayer_ip6_simtsy_config.txt
+// IPv6 testing
+../configs/te_pdplayer_ip6.ini                      z:/testdata/configs/te_pdplayer_ip6.ini
+../configs/te_pdplayer_ip6_pdpcpr.cfg               z:/testdata/configs/te_pdplayer_ip6.cfg
+../configs/te_pdplayer_ip6_loopbackcsy.ini          z:/testdata/configs/te_pdplayer_ip6_loopbackcsy.ini
+../configs/te_pdplayer_ip6_simtsy_config.txt        z:/testdata/configs/te_pdplayer_ip6_simtsy_config.txt
 
 //stress tests
 ../configs/te_pdpstresstestsparam.ini				z:/testdata/configs/te_pdpstresstestsparam.ini
 
 //sip tests
-../configs/te_spudnetworkside_sipaddress.ini				z:/testdata/configs/te_spudnetworkside_sipaddress.ini
-../configs/te_spudnetworkside_sipaddress_config.txt			z:/testdata/configs/te_spudnetworkside_sipaddress_config.txt
+../configs/te_spudnetworkside_sipaddress.ini        z:/testdata/configs/te_spudnetworkside_sipaddress.ini
+../configs/te_spudnetworkside_sipaddress_config.txt z:/testdata/configs/te_spudnetworkside_sipaddress_config.txt
 
 //Min Max MMU tests
 ../configs/TE_RawIpSize.ini				z:/testdata/configs/te_rawipsize.ini
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -80,7 +80,7 @@
 
 #ifdef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
 TVerdict CSpudNetSideTestBase::doTestStepPostambleL()
-	{	
+	{
 	ClearPolicySelector2QosParametersTableL();
 	return TestStepResult();
 	}
@@ -97,7 +97,18 @@
 	TestL(RProperty::Set(KUidPSCsyWriteResultCategory, aPortNum, aErrorCode), _L("Set PSCsy write result"));
   	INFO_PRINTF3(_L("Next write on [PKTLOOPBACK::%d] is going to fail with [%d]"), aPortNum, aErrorCode);
   	}
-	
+
+void CSpudNetSideTestBase::ClearNextPktLoopbackCsyWriteL(TInt aPortNum)
+    {
+    TInt dummy(0);
+    TInt ret = RProperty::Get(KUidPSCsyWriteResultCategory, aPortNum, dummy);
+    if(ret != KErrNotFound)
+        {
+        RProperty::Set(KUidPSCsyWriteResultCategory, aPortNum, KErrNone);
+        }
+    INFO_PRINTF2(_L("Reset to KErrNone for the next write on [PKTLOOPBACK::%d] port"), aPortNum);
+    }
+
 /**
 Blocks until Nifman progress notification is received.
 
@@ -1636,6 +1647,7 @@
 	
 	StopSecondaryL();
 	
+	ClearNextPktLoopbackCsyWriteL(loopbackPort);
 	return EPass;
 	}
 
@@ -1719,6 +1731,7 @@
 	// In the meanwhile, we sneak in and stop the interface.
 	
 	StopInterfaceL();
+	ClearNextPktLoopbackCsyWriteL(loopbackPort);
 	return EPass;	
 	};
 
@@ -1981,6 +1994,12 @@
 
 	// start rawipnif instance opposite the SPUD's secondary context, and open a socket on it
 	CConnectionStart *secondaryIfStart = CConnectionStart::NewLC(iEsock, *this, oppositeSecondaryIapId);
+
+    TRequestStatus progressReqSt;   
+    
+	secondaryIfStart->iInterface.ProgressNotification(iProgressBuf, progressReqSt, 7000);
+	WaitForProgressNotificationL(progressReqSt, 7000, 0); // We can wait here forever. Set timeout on test step.
+
 #ifndef SYMBIAN_NON_SEAMLESS_NETWORK_BEARER_MOBILITY
 	WaitForQoSEventL(_L("SecondaryActivationEvent2"), _L("SecondaryActivationEvent2Reason"));
 #else
@@ -2247,6 +2266,20 @@
     	TestL(p->Start(iap1prefs),primaryCreationErr, _L("RConnection::Start the interface"));
 	    }
 
+	//check if all contexts are still there
+	for (TInt i = 0; i < maximumConnections; i++)
+	    {
+        TBuf<32> primaryIap;
+        primaryIap.Format(KPrimaryIapFormatLit, i + 1);
+    	if (!GetIntFromConfig(ConfigSection(), primaryIap, primaryIapId))
+    		{
+    		User::Leave(KErrNotFound);
+    		}
+		INFO_PRINTF2(_L("Verify context #%d is still there"), i);
+		VerifySubconnectionCountL(2, primaryIapId);
+		INFO_PRINTF2(_L("Context #%d is still there"), i);
+	    }
+
 	
 	for (TInt i = (interfaces.Count() - 1); i >= 0; i--)
 	    {
--- a/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.h	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/pdplayer/umts/test/te_spudNetworkSide/src/te_spudNetworkSideSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -147,6 +147,7 @@
 #endif
 		
 		void FailNextPktLoopbackCsyWriteL(TInt aPortNum, TInt aErrorCode);
+		void ClearNextPktLoopbackCsyWriteL(TInt aPortNum);
 		TEtelRequestType RetrieveNetSideEventRequestFromConfigL(const TDesC& aEventName);
 		void EtelRequestL(TEtelRequestType aEtelCommand, TInt aNewValue);
 		TInt RetrieveNetSideEventValFromConfigL(const TDesC& aEventValName);
--- a/telephonyprotocols/qosextnapi/src/sblpextn.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/qosextnapi/src/sblpextn.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -69,27 +69,39 @@
 
 EXPORT_C CSblpParameters::TFlowIdentifier& CSblpParameters::GetFlowId(TInt aIndex)
 	{
-	__ASSERT_DEBUG(aIndex<iFlowIds.Count(),User::Panic(_L("Sblp"),KErrArgument));
+	__ASSERT_DEBUG(aIndex<iFlowIds.Count(),User::Panic(_L("CSblpParameters::GetFlowId"),KErrArgument));
 	return iFlowIds[aIndex];
 	}
 
 EXPORT_C void CSblpParameters::SetFlowIds(const RArray<TFlowIdentifier> &aFlowIds)
 	{
+    //in case of low memory the function might not set all the ids
 	iFlowIds.Reset();
 	TInt i;
 	for(i=0; i<aFlowIds.Count();i++)
 		{
-		this->iFlowIds.Append(aFlowIds[i]);
+		TInt errorCode = this->iFlowIds.Append(aFlowIds[i]);
+		if (errorCode != KErrNone) 
+		    {
+            OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPARAMETERS_SETFLOWID, "Not Enough Memory");
+		    }
 		}
 	}
 
 EXPORT_C TInt CSblpParameters::GetFlowIds(RArray<TFlowIdentifier>& aFlowIds)
 	{
+    //in case of low memory the function might not get all the ids and returns an error code
 	aFlowIds.Reset();
 	TInt i;
+	TInt errorCode = KErrNone;
 	for(i=0; i<iFlowIds.Count();i++)
 		{
-		aFlowIds.Append(this->iFlowIds[i]);
+        errorCode = aFlowIds.Append(this->iFlowIds[i]);
+        if (errorCode != KErrNone) 
+            {
+            OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_BORDER, CSBLPPARAMETERS_GETFLOWID, "Not Enough Memory");
+            return errorCode;
+            }
 		}
 	return KErrNone;
 	}
@@ -168,7 +180,7 @@
 	header.reserved = 0;
 	header.protocol_id = 0;
 	bufPtr.Append((TUint8*)&header, sizeof(pfqos_configure));
-
+	
 	pfqos_extension extensionType;
 	extensionType.pfqos_ext_len = 0;
 	extensionType.pfqos_ext_type = EPfqosExtExtension;
@@ -187,11 +199,11 @@
 	iSblp->GetMAT(authToken);
 	SetStringBlockHeader(stringBlock,authToken,KDescSblpMediaAuthorizationToken);
 	bufPtr.Append((TUint8*)&stringBlock, sizeof(pfqos_configblock));
+
 	// put the string now
 	authToken.ZeroTerminate();
 	bufPtr.Append((TUint8*)authToken.Ptr(),KAuthorizationTokenAdjustedStringLength);
 
-
 	// Flowids
 	pfqos_configblock_int ext;
 	TInt i;
@@ -200,11 +212,13 @@
 		CSblpParameters::TFlowIdentifier& flowId = iSblp->GetFlowId(i);
 		SetIntValue(ext,flowId.iMediaComponentNumber,KDescSblpMediaComponentNumber);
 		bufPtr.Append((TUint8*)&ext, sizeof(pfqos_configblock_int));
+
 		SetIntValue(ext,flowId.iIPFlowNumber,KDescSblpIPFlowNumber);
 		bufPtr.Append((TUint8*)&ext, sizeof(pfqos_configblock_int));
 		}
 
 	bufPtr.AppendFill(0, header.pfqos_configure_len * 8 - byte_len);
+
 	return *iData;
 	}
 
@@ -237,8 +251,9 @@
 	// following code is to create logs
 	TAuthorizationToken authToken;
 	iSblp->GetMAT (authToken);
-	RArray<CSblpParameters::TFlowIdentifier> flowIds;
+    RArray<CSblpParameters::TFlowIdentifier> flowIds;
 	iSblp->GetFlowIds(flowIds);
+	// in case of low memory GetFlowIds might return an error and flowIds might not have all the ids, but we still try to log as much as we can
 	TBuf<KAuthorizationTokenSize> label;
 	label.Copy(authToken);
 		
--- a/telephonyprotocols/qosextnapi/traces/fixed_id.definitions	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/qosextnapi/traces/fixed_id.definitions	Tue Jul 06 15:36:38 2010 +0300
@@ -7,6 +7,8 @@
 [TRACE]TRACE_BORDER[0x84]_CIMSPOLICY_SETIMSPARAMETER_5=0x5a
 [TRACE]TRACE_BORDER[0x84]_CIMSPOLICY_SETIMSPARAMETER_6=0x5b
 [TRACE]TRACE_BORDER[0x84]_CIMSPOLICY_SETIMSPARAMETER_7=0x5c
+[TRACE]TRACE_BORDER[0x84]_CSBLPPARAMETERS_GETFLOWID=0x5e
+[TRACE]TRACE_BORDER[0x84]_CSBLPPARAMETERS_SETFLOWID=0x5d
 [TRACE]TRACE_BORDER[0x84]_CSBLPPOLICY_SETSBLPPARAMETERS_1=0x1
 [TRACE]TRACE_BORDER[0x84]_CSBLPPOLICY_SETSBLPPARAMETERS_2=0x2
 [TRACE]TRACE_BORDER[0x84]_CSBLPPOLICY_SETSBLPPARAMETERS_3=0x3
--- a/telephonyprotocols/rawipnif/src/Receiver.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/rawipnif/src/Receiver.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -74,10 +74,13 @@
 /**
  * Destructor.
  */
-	{
-	iData.Close();
-	Cancel();
-	}
+    {
+    Cancel();
+    // iData is a shared bit of memory between raw ip and bca
+    // you cannot delete it while bca might be using it otherwise
+    // bad things may happen.
+    iData.Close();
+    }
 
 void CReceiver::RunL()
 /**
--- a/telephonyprotocols/rawipnif/src/Sender.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyprotocols/rawipnif/src/Sender.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -75,10 +75,13 @@
 /**
  * Destructor.
  */
-	{
-	iSendBuffer.Close();
-	Cancel();
-	}
+    {
+    Cancel();
+    // iSendBuffer is a shared bit of memory between raw ip and bca
+    // you cannot delete it while bca might be using it otherwise
+    // bad things may happen.
+    iSendBuffer.Close();
+    }
 
 void CSender::RunL()
 /**
--- a/telephonyserver/etelpacketdata/dtsy/dpcktlog.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserver/etelpacketdata/dtsy/dpcktlog.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -42,7 +42,7 @@
  *	In debug mode the logfile will not be deleted at start of new session
  */
 	{
-	iFs.Connect();
+	User::LeaveIfError(iFs.Connect());
 	TInt ret=KErrNone;
 	ret=iFile.Open(iFs,KLogFileName,EFileShareAny|EFileWrite);
 	if(ret!=KErrNone)
--- a/telephonyserver/etelsimtoolkit/dtsy/Dsatlog.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserver/etelsimtoolkit/dtsy/Dsatlog.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -46,7 +46,7 @@
  * In debug mode the logfile will not be deleted at start of new session
  */
 	{
-	iFs.Connect();
+	User::LeaveIfError(iFs.Connect());
 	TInt ret=KErrNone;
 	ret=iFile.Open(iFs,KLogFileName,EFileShareAny|EFileWrite);
 	if(ret!=KErrNone)
--- a/telephonyserver/etelsimtoolkit/tetel/TSatLog.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserver/etelsimtoolkit/tetel/TSatLog.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -44,7 +44,7 @@
 
 void CTestLogger::ConstructL()
 	{
-	iFs.Connect();
+	User::LeaveIfError(iFs.Connect());
 	TInt ret=iFile.Open(iFs,KLogFileName,EFileShareAny|EFileWrite);
 	if(ret!=KErrNone)
 		ret=iFile.Create(iFs,KLogFileName,EFileShareAny|EFileWrite);
--- a/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmphonefactorytsy.h	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/commontsy/inc/mmtsy/cmmphonefactorytsy.h	Tue Jul 06 15:36:38 2010 +0300
@@ -1,19 +1,19 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:
-*
-*/
+ * Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies this distribution, and is available
+ * at the URL "http://www.eclipse.org/legal/epl-v10.html".
+ *
+ * Initial Contributors:
+ * Nokia Corporation - initial contribution.
+ *
+ * Contributors:
+ *
+ * Description:
+ *
+ */
 
 
 
@@ -56,7 +56,7 @@
         void ConstructL();
 
         /**
-         * Returns Phone instance
+         * Returns a new Phone instance
          */
         CPhoneBase* NewPhoneL( const TDesC& aName );
 
@@ -103,12 +103,21 @@
         TBool IsSupported( const TInt aFunctionalUnit );    
 #ifdef USING_CTSY_DISPATCHER     
     protected:
-    	
-    	TBool UsingCtsyDispatcher();
-    	MLtsyFactoryBase* LoadLibraryL();
+        
+        TBool UsingCtsyDispatcher();
 #endif // #endif USING_CTSY_DISPATCHER
+        MLtsyFactoryBase* LoadLibraryL();
+        
+    private:
+        void InitCtsyL(MLtsyFactoryBase* aLtsyFactory);
+        TPtrC ReadDllNameFromConfigL(const TDesC& aConfigData);
+        TUint ReadDllUidFromConfigL(const TDesC& aConfigData);
+        static void ReadConfigFileL(RBuf* aConfigData);
+        static TPtrC GetValueForKeyL(const TDesC& aKeysValues, const TDesC& aKey);
+
     private:    // Data
     
+        MLtsyFactoryBase* iLtsyFactory;
         /**
          * Pointer to PhoneTSY
          * Not owned.
@@ -120,17 +129,8 @@
          * Not owned.
          */
         MMessageRouter* iMessageRouter;
-                
-        /**
-         * Pointer to LTSY factory, used to retrieve LTSY and SIM ATK TSY
-         * Not owned.
-         */
-        MLtsyFactoryBase* iLtsyFactory;
-#ifdef USING_CTSY_DISPATCHER        
+
         RLibrary iLoadedLib; //can either be LicenseeTsy or CtsyDispatcher dlls
-#endif // #ifdef USING_CTSY_DISPATCHER
     };
 
 #endif // CMMPHONEFACTORYTSY_H
-
-// End of File
--- a/telephonyserverplugins/common_tsy/group/bld.inf	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -16,6 +16,7 @@
 
 
 PRJ_EXPORTS
+
 #ifndef CTSY_G_BUILD_WITHOUT_DISPATCHER
 //Exported headers used in the Dispatcher component
 PRJ_EXPORTS				
@@ -94,9 +95,10 @@
 #endif
 
 // variant information. c32.exe SID is 101F7989
-../commontsy/inc/operatorVariants.ini	/epoc32/data/z/private/101f7989/operatorvariants.ini
-../commontsy/inc/operatorVariants.ini	/epoc32/release/winscw/udeb/z/private/101f7989/operatorvariants.ini
-../commontsy/inc/operatorVariants.ini	/epoc32/release/winscw/urel/z/private/101f7989/operatorvariants.ini
+../commontsy/inc/operatorVariants.ini	z:/private/101f7989/operatorvariants.ini
+
+// by default load the non-dispatcher LTSY
+../phonetsy/data/ltsydata.ini 			z:/private/101f7989/ltsydata.ini
 
 // ROM
 
@@ -107,8 +109,8 @@
 
 // ConfML files
 ../conf/ctsy.confml              	 OS_LAYER_EXPORTS_CONFML(ctsy.confml)
-../conf/ctsy_10282DFE.crml           OS_LAYER_EXPORTS_CRML(ctsy_10282dfe.crml)
-../conf/ctsy_102029A2.crml           OS_LAYER_EXPORTS_CRML(ctsy_102029a2.crml)
+../conf/ctsy_10282DFE.crml           OS_LAYER_EXPORTS_CRML(ctsy_10282DFE.crml)
+../conf/ctsy_102029A2.crml           OS_LAYER_EXPORTS_CRML(ctsy_102029A2.crml)
 ../conf/ctsy_10282826.crml           OS_LAYER_EXPORTS_CRML(ctsy_10282826.crml)
 ../conf/ctsy_10282827.crml           OS_LAYER_EXPORTS_CRML(ctsy_10282827.crml)
 
--- a/telephonyserverplugins/common_tsy/group/ctsy.iby	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/group/ctsy.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -36,6 +36,7 @@
 
 // c32.exe SID is 101F7989
 data=ZPRIVATE\101f7989\operatorVariants.ini		private\101f7989\operatorVariants.ini
+data=ZPRIVATE\101f7989\ltsydata.ini				private\101f7989\ltsydata.ini
 
 //*** customapi ***
 file=ABI_DIR\DEBUG_DIR\CUSTOMAPI.DLL        Sys\Bin\CUSTOMAPI.DLL
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/phonetsy/data/ltsydata.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+[LicenseeTSY]
+LicenseeTsyDllName = licenseetsy.dll
+LicenseeTsyUid3 = 0x2000BEE4
--- a/telephonyserverplugins/common_tsy/phonetsy/group/phonetsy.mmh	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/phonetsy/group/phonetsy.mmh	Tue Jul 06 15:36:38 2010 +0300
@@ -58,6 +58,7 @@
 #endif //CTSY_DISPATCHER
 LIBRARY         licenseetsy.lib // LTSY 
 LIBRARY         featmgr.lib     // for featuremanager
+LIBRARY         efsrv.lib		// config file reading
 
 //  End of file
 
--- a/telephonyserverplugins/common_tsy/phonetsy/src/cmmphonefactorytsy.cpp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/phonetsy/src/cmmphonefactorytsy.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -16,32 +16,33 @@
 
 
 
-
 #include "OstTraceDefinitions.h"
 #ifdef OST_TRACE_COMPILER_IN_USE
 #include "cmmphonefactorytsyTraces.h"
 #endif
-
 #include <featmgr/featurecontrol.h>
 #include <featureuids.h>
 
-#include "cmmphonefactorytsy.h"
-#include "cmmphonetsy.h"
 #include <ctsy/mmtsy_names.h>
-#include "MmTsy_conf.h"
-#include "cmmmessagemanagerbase.h"
 #include <ctsy/serviceapi/ctsysatmessagingbase.h>
 
+#include "cmmmessagemanagerbase.h"
+#include "cmmphonefactorytsy.h"
+#include "cmmphonetsy.h"
+#include "MmTsy_conf.h"
+
+_LIT(KLtsyIniFile, "ltsydata.ini");
+
 #ifdef USING_CTSY_DISPATCHER
-_LIT(KLicenseeTsyDllName, "licenseetsy.dll");
-_LIT(KCtsyDispatcherDllName, "ctsydispatcher.dll");
-
-const TInt KLicenseeTsyUID3 = 0x2000BEE4;
-const TInt KCtsyDispatcherUID3 =  0x10285C38;
+_LIT(KDefaultLicenseeTsyDllName, "ctsydispatcher.dll");
+const TInt KDefaultLicenseeTsyUID3 =  0x10285C38;
+#else
+_LIT(KDefaultLicenseeTsyDllName, "licenseetsy.dll");
+const TInt KDefaultLicenseeTsyUID3 = 0x2000BEE4;
+#endif //USING_CTSY_DISPATCHER
 
 typedef MLtsyFactoryBase*(*TFactoryBaseNewL)();
 
-#endif //USING_CTSY_DISPATCHER
 // ======== MEMBER FUNCTIONS ========
 
 CMmPhoneFactoryTsy::CMmPhoneFactoryTsy()
@@ -68,10 +69,8 @@
 
 CMmPhoneFactoryTsy::~CMmPhoneFactoryTsy()
     {
-#ifdef USING_CTSY_DISPATCHER
     iLoadedLib.Close();
-#endif //USING_CTSY_DISPATCHER
-	}
+    }
 
 // ---------------------------------------------------------------------------
 // CMmPhoneFactoryTsy::NewPhoneL
@@ -88,84 +87,31 @@
     // In case of debug build, print flag info.
 #ifdef TF_LOGGING_ENABLED
     
-	RFeatureControl featureControl;
-	TInt err = featureControl.Open();
-	if (err != KErrNone)
-		{
+    RFeatureControl featureControl;
+    TInt err = featureControl.Open();
+    if (err != KErrNone)
+        {
 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_2, "CMmPhoneFactoryTsy::NewPhoneL - failed to connect to FeatMgr");
-		}
-	else if (featureControl.FeatureSupported(NFeature::KCsVideoTelephony) == KFeatureSupported) 
+        }
+    else if (featureControl.FeatureSupported(NFeature::KCsVideoTelephony) == KFeatureSupported) 
         {
 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_3, "TSY: __CS_VIDEO_TELEPHONY -flag is on");
         }
-	else if (featureControl.FeatureSupported(NFeature::KEmergencyCallsEnabledInOfflineMode) == KFeatureSupported)
+    else if (featureControl.FeatureSupported(NFeature::KEmergencyCallsEnabledInOfflineMode) == KFeatureSupported)
         {
 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_4, "TSY: __COMMON_TSY__EMERGENCY_CALLS_ENABLED_IN_OFFLINE_MODE -flag is on");
         }
 
-	featureControl.Close();
+    featureControl.Close();
 #endif
-	
+    
     // Check if the Phone Name is OK
     if ( KErrNone == aName.CompareF( KMmTsyPhoneName ) )
         {
         iMessageRouter = NULL;
-
-        // Create Message Manager (the 'core' of the LTSY Plug-in API)
-        CMmMessageManagerBase* messageManager = CMmMessageManagerBase::NewL();
-        if ( messageManager )
-            {
-	        CleanupStack::PushL( messageManager );
-        
-            // LTSY Plug-in API successfully created
-OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_5, "TSY: CMmPhoneFactoryTsy::NewL - Starting to open LicenceeTSY");
-            
-            // get TSY message manager callback object
-            MmMessageManagerCallback* callBack = 
-                messageManager->GetMessageManagerCallback();
-            
-#ifdef USING_CTSY_DISPATCHER
-            iLtsyFactory = LoadLibraryL();
-#else
-            // library entry for LTSY, get base factory object
-            iLtsyFactory = LTsyFactoryL();
-            
-#endif //USING_CTSY_DISPATCHER
-
-            if( iLtsyFactory )
-                {
-                // Get message router from LTSY. All current interface versions
-                // have the same GetMessageRouter defined in version 1.
-                MLtsyFactoryV1* ptr_v1 = 
-                	static_cast<MLtsyFactoryV1*>( iLtsyFactory );
-                        
-                iMessageRouter = ptr_v1->GetMessageRouter( *callBack );
-		        User::LeaveIfNull( iMessageRouter );
-        
-		        // Licencee Tsy successfully created
-OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_6, "TSY: CMmPhoneFactoryTsy::NewL -  LicenceeTSY successfully opened");
-
-	            // set the pointer to the message router object
-	            messageManager->SetMessageRouter( iMessageRouter );
-
-	            // Ownership of messageManager passed to iPhoneTsy.
-                CleanupStack::Pop( messageManager );
-	            // Create Phone Tsy (which creates the whole Common TSY)
-OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_7, "TSY: CMmPhoneFactoryTsy::NewL - Starting to open CommonTSY");
-	            iPhoneTsy = CMmPhoneTsy::NewL( 
-	                messageManager, this, iLtsyFactory );
-
-	            if ( iPhoneTsy )
-	                {
-OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWPHONEL_8, "TSY: CMmPhoneFactoryTsy::NewL - CommonTSY successfully opened");
-	                messageManager->SetPhoneTsy( iPhoneTsy );
-	                }
-                }
-            else
-            	{
-    	        CleanupStack::PopAndDestroy( messageManager );
-            	}
-            }
+                
+        // Dynamic loading of LTSY
+        iLtsyFactory = LoadLibraryL();
         }
 
     return iPhoneTsy;
@@ -294,20 +240,23 @@
     if ( KErrNone == aName.CompareF( KSatToolkit ) )
         {
 OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_NEWSIMATK_1, "TSY: CMmPhoneFactoryTsy::NewSimAtk - Starting to open SimAtkTSY");
-
-        if( iLtsyFactory )
+       
+        if (iLtsyFactory == NULL)
+            {
+            TRAP_IGNORE(iLtsyFactory = LoadLibraryL());
+            }
+        
+        if (iLtsyFactory != NULL)
             {
             // Get SIM ATK TSY messaging service from LicenseeTsy
-            MLtsyFactoryV1* ptr_v1 = 
-            	static_cast<MLtsyFactoryV1*>( iLtsyFactory );
+            MLtsyFactoryV1* ptr_v1 = static_cast<MLtsyFactoryV1*>( iLtsyFactory );
      
-#ifdef USING_CTSY_DISPATCHER     	
-           	satMessaging = ptr_v1->GetSatMessagingService( 
-            	iPhoneTsy->SmsService() );
+#ifdef USING_CTSY_DISPATCHER        
+            satMessaging = ptr_v1->GetSatMessagingService(iPhoneTsy->SmsService());
 #else
-           	satMessaging = ptr_v1->GetSatMessagingService( );
+            satMessaging = ptr_v1->GetSatMessagingService( );
 #endif
-            }
+            }        
         }
 
     return satMessaging;
@@ -344,48 +293,209 @@
 
 #ifdef USING_CTSY_DISPATCHER
 TBool CMmPhoneFactoryTsy::UsingCtsyDispatcher()
-	{
-	//function to determine whether the setup is using the CTSY Dispatcher layer.
-#ifdef USING_CTSY_DISPATCHER 
-	return ETrue; 
-#else
-	return EFalse;
-#endif
-	}
-
-MLtsyFactoryBase* CMmPhoneFactoryTsy::LoadLibraryL()
-	{
-	//load library.  This can either be LicenseeTsy or CtsyDispatcher dlls
-	TPtrC dllname;
-	TInt uid3_int;
-	if(UsingCtsyDispatcher())
-		{
-		dllname.Set(KCtsyDispatcherDllName);
-		uid3_int = KCtsyDispatcherUID3;
-		}
-	else
-		{
-		dllname.Set(KLicenseeTsyDllName);
-		uid3_int = KLicenseeTsyUID3;
-		}
-	
-	OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_LOADLIBRARYL_1, "TSY: CMmPhoneFactoryTsy::LoadLibraryL - Loading Dll=%S, UID3=0x%8X", dllname, (TUint)uid3_int);
-	
-	TUidType uid(KNullUid, KNullUid, TUid::Uid(uid3_int));
-	
-	User::LeaveIfError(iLoadedLib.Load(dllname));
-	
-	// Check the Uid3 is as expected
-	if(iLoadedLib.Type()[2]!=TUid::Uid(uid3_int))
-		User::Leave(KErrBadLibraryEntryPoint);
-	
-	TFactoryBaseNewL libEntry=(TFactoryBaseNewL)iLoadedLib.Lookup(1);	
-	MLtsyFactoryBase* factory=(*libEntry)();	// libEntry may leave.
-	
-	return factory;
-	}
+/**
+ * Function to determine whether the setup is using the CTSY Dispatcher layer.
+ */
+    {
+    return ETrue; 
+    }
 #endif //USING_CTSY_DISPATCHER
 
-//  End of File
+// ---------------------------------------------------------------------------
+// CMmPhoneFactoryTsy::LoadLibraryL
+// Dynamically loads a LTSY.
+// ---------------------------------------------------------------------------
+//
+MLtsyFactoryBase* CMmPhoneFactoryTsy::LoadLibraryL()
+    {
+    TPtrC ltsyDllName(0, NULL);
+    TUint ltsyDllUid = 0;
+    
+#ifdef USING_CTSY_DISPATCHER 
+    ltsyDllName.Set(KDefaultLicenseeTsyDllName);
+    ltsyDllUid = KDefaultLicenseeTsyUID3; 
+#else
+    RBuf configData;
+    CleanupClosePushL(configData);
+    
+    TRAPD(ret,
+          {
+          ReadConfigFileL(&configData);
+          ltsyDllName.Set(ReadDllNameFromConfigL(configData));
+          ltsyDllUid = ReadDllUidFromConfigL(configData);
+          });
+    
+    if (ret != KErrNone)
+        {
+        ltsyDllName.Set(KDefaultLicenseeTsyDllName);
+        ltsyDllUid = KDefaultLicenseeTsyUID3;
+OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_ERROR, CMMPHONEFACTORYTSY_LOADLIBRARYL_1A, "TSY: Failed to load LTSY dll details from ini (error: %d), using defaults", ret);
+        }
+#endif
+    
+OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_LOADLIBRARYL_1, "TSY: CMmPhoneFactoryTsy::LoadLibraryL - Loading Dll=%S, UID3=0x%8X", ltsyDllName, ltsyDllUid);
+    User::LeaveIfError(iLoadedLib.Load(ltsyDllName));
+    
+#ifndef USING_CTSY_DISPATCHER
+    CleanupStack::PopAndDestroy();  // configData
+#endif
+    
+    // Check the Uid3 is as expected
+    if (iLoadedLib.Type()[2] != TUid::Uid(ltsyDllUid))
+        {
+        User::Leave(KErrBadLibraryEntryPoint);
+        }
+    
+    TFactoryBaseNewL libEntry = reinterpret_cast<TFactoryBaseNewL>(iLoadedLib.Lookup(1));   
+    MLtsyFactoryBase* factory = (*libEntry)();    // libEntry may leave.
+    User::LeaveIfNull(factory);
+    
+    InitCtsyL(factory);
+    
+OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_LOADLIBRARYL_2, "TSY: Loaded LTSY");
+    return factory;
+    }
+
+void CMmPhoneFactoryTsy::InitCtsyL(MLtsyFactoryBase* aLtsyFactory)
+/**
+ * Initialises iPhoneTsy
+ */
+    {    
+    if (iPhoneTsy != NULL)
+        {
+        return;
+        }
+    
+    // Create Message Manager (the 'core' of the LTSY Plug-in API)
+    CMmMessageManagerBase* messageManager = CMmMessageManagerBase::NewL();
+    User::LeaveIfNull(messageManager);
+    CleanupStack::PushL( messageManager );
+
+    // get TSY message manager callback object
+    MmMessageManagerCallback* callBack = 
+        messageManager->GetMessageManagerCallback();
+
+    // Get message router from LTSY. All current interface versions
+    // have the same GetMessageRouter defined in version 1.
+    MLtsyFactoryV1* ptr_v1 = 
+         static_cast<MLtsyFactoryV1*>( aLtsyFactory );
+             
+    iMessageRouter = ptr_v1->GetMessageRouter( *callBack );
+    User::LeaveIfNull( iMessageRouter );
+    
+    // set the pointer to the message router object
+    messageManager->SetMessageRouter( iMessageRouter );
+
+    // Ownership of messageManager to be passed to iPhoneTsy.
+    CleanupStack::Pop( messageManager );
+    
+    // LTSY Plug-in API successfully created
+OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_INITLTSYL_1, "TSY: CMmPhoneFactoryTsy::NewL - Starting to open CommonTSY");
+    // Create Phone Tsy (which creates the whole Common TSY)
+    iPhoneTsy = CMmPhoneTsy::NewL(messageManager, this, aLtsyFactory);
 
+    if (iPhoneTsy != NULL)
+        {
+        // Licencee Tsy successfully created
+OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_NORMAL, CMMPHONEFACTORYTSY_INITLTSYL_2, "TSY: CMmPhoneFactoryTsy::NewL -  CommonTSY successfully opened");
+        messageManager->SetPhoneTsy( iPhoneTsy );
+        }
+    else
+        {
+OstTraceDef0(OST_TRACE_CATEGORY_DEBUG, TRACE_WARNING, CMMPHONEFACTORYTSY_INITLTSYL_3, "TSY: CMmPhoneFactoryTsy::NewL - CommonTSY not opened");
+        }
+    }
 
+TPtrC CMmPhoneFactoryTsy::ReadDllNameFromConfigL(const TDesC& aConfigData)
+    {
+    _LIT(KLicenseeTsyDllKeyName, "LicenseeTsyDllName");
+    TPtrC dllName = GetValueForKeyL(aConfigData, KLicenseeTsyDllKeyName);
+OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_READDLLNAMEFROMCONFIGL_1, "TSY: Config file: LTSY DLL name = %S", dllName);
+    return dllName;
+    }
+
+TUint CMmPhoneFactoryTsy::ReadDllUidFromConfigL(const TDesC& aConfigData)
+    {
+    _LIT(KLicenseeTsyUid3, "LicenseeTsyUid3");
+
+    const TDesC& rawUid = GetValueForKeyL(aConfigData, KLicenseeTsyUid3);
+    // only take the right 8 characters (ie discard the "0x")
+    ASSERT(rawUid.Length() >= 8);
+    TLex lex(rawUid.Right(8));   
+    TUint uid;
+    User::LeaveIfError(lex.Val(uid, EHex));
+OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_READUIDFROMCONFIGL_1, "TSY: Config file: LTSY UID3 = 0x%x", uid);
+    return uid;
+    }
+
+/*static*/
+void CMmPhoneFactoryTsy::ReadConfigFileL(RBuf* aConfigData)
+/**
+ * Reads config file from system drive or, if not present, from ROM
+ *
+ * @param aConfigData This buffer gets created and has the ini file contents loaded into it
+ */
+    {
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+
+OstTraceDef1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_READCONFIGFILE_1, "TSY: Trying to load from %d (C) drive", fs.GetSystemDrive());
+    fs.SetSessionToPrivate(fs.GetSystemDrive());
+
+    RFile configFile;
+    TInt ret = configFile.Open(fs, KLtsyIniFile, EFileShareExclusive);
+    if (ret == KErrNotFound)
+        {
+OstTraceDefExt2(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_READCONFIGFILE_2, "TSY: Trying to load ini from %d (Z) drive, as read for system drive returned error %d", EDriveZ, ret);
+        User::LeaveIfError(fs.SetSessionToPrivate(EDriveZ));
+        User::LeaveIfError(configFile.Open(fs, KLtsyIniFile, EFileShareExclusive));
+        }
+
+OstTraceDefExt1(OST_TRACE_CATEGORY_DEBUG, TRACE_INTERNALS, CMMPHONEFACTORYTSY_READCONFIGFILE_3, "TSY: Reading ini file %S", KLtsyIniFile);
+    
+    CleanupClosePushL(configFile);
+
+    TInt configFileSize;
+    User::LeaveIfError(configFile.Size(configFileSize));
+
+    RBuf8 fileBuf;
+    fileBuf.Create(configFileSize);
+    CleanupClosePushL(fileBuf);
+    User::LeaveIfError(configFile.Read(fileBuf));
+
+    aConfigData->CreateL(configFileSize);
+    aConfigData->Copy(fileBuf);
+
+    CleanupStack::PopAndDestroy(3, &fs); // fs, configFile, fileBuf
+    }
+
+/*static*/
+TPtrC CMmPhoneFactoryTsy::GetValueForKeyL(const TDesC& aKeysValues, const TDesC& aKey)
+/**
+ * Gets the value for a specified key. The expected format is
+ * <pre>
+ * key1 value1
+ * key2 value2
+ * </pre>
+ * 
+ * However the parsing is flexible enough to allow "key1 =value1" as it allows an equals separator and extra whitespace
+ * The value cannot include whitespace, even if quoted.
+ */
+    {
+    // this matches the bracket expression in this regexp: \w+\s*=?\s*(\w+)[\s$]
+    TInt startOfKey = aKeysValues.Find(aKey);
+    TLex valueExtractor(aKeysValues);
+    valueExtractor.Inc(startOfKey + aKey.Length());
+    valueExtractor.SkipSpaceAndMark();
+    // allow equals separating key and value
+    if (valueExtractor.Peek() == '=')
+        {
+        valueExtractor.Inc();
+        valueExtractor.SkipSpaceAndMark();
+        }
+    
+    TPtrC value = valueExtractor.NextToken();
+    __ASSERT_ALWAYS(value.Length() > 0, User::Leave(KErrCorrupt));
+    return value;
+    }
--- a/telephonyserverplugins/common_tsy/test/component/group/bld.inf	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -1,4 +1,5 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+//
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -12,6 +13,7 @@
 //
 // Description:
 //
+//
 
 
 PRJ_MMPFILES
@@ -54,6 +56,10 @@
 ../scripts/te_ctsycomponent_timeout_all.script  	z:/testdata/scripts/te_ctsycomponent_timeout_all.script
 ../scripts/te_ctsycomponent_fullrun.script			z:/testdata/scripts/te_ctsycomponent_fullrun.script
 
+// Scripts which can be used to copy/remove MockLtsy ini file to/from C: drive
+../scripts/mockltsy_copy_ini_file.script			z:/testdata/scripts/mockltsy_copy_ini_file.script
+../scripts/mockltsy_remove_ini_file.script			z:/testdata/scripts/mockltsy_remove_ini_file.script
+
 ../scripts/te_ctsycomponent_lbs_individual.script	z:/testdata/scripts/te_ctsycomponent_lbs_individual.script
 ../scripts/te_ctsycomponent_smsstore_individual.script	z:/testdata/scripts/te_ctsycomponent_smsstore_individual.script
 ../scripts/te_ctsycomponent_datacallcontrol_individual.script	z:/testdata/scripts/te_ctsycomponent_datacallcontrol_individual.script
--- a/telephonyserverplugins/common_tsy/test/component/group/te_ctsy_component.iby	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/group/te_ctsy_component.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -1,4 +1,5 @@
-// Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+//
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -12,6 +13,7 @@
 //
 // Description:
 //
+//
 
 #ifndef __TE_CTSY_COMPONENT_IBY__
 #define __TE_CTSY_COMPONENT_IBY__
@@ -33,7 +35,7 @@
 file=ABI_DIR\DEBUG_DIR\te_ctsy_component.exe		SYSTEM_BINDIR\te_ctsy_component.exe
 
 // executables needed by te_ctsy_component.exe
-file=ABI_DIR\DEBUG_DIR\licenseetsy.dll     	SYSTEM_BINDIR\licenseetsy.dll
+file=ABI_DIR\DEBUG_DIR\mocklicenseetsy.dll     	SYSTEM_BINDIR\mocklicenseetsy.dll
 file=ABI_DIR\DEBUG_DIR\mockltsydll.dll     	SYSTEM_BINDIR\mockltsydll.dll
 
 // MockHWRM
@@ -53,6 +55,12 @@
 data=ZPRIVATE/10202be9/10205043.txt 	private\10202be9\10205043.txt
 #endif //HWRM_IS_SUPPORTED
 
+// MockLTSY
+data=EPOCROOT##epoc32\data\z\testdata\configs\ltsydata_mock.ini 		     	testdata\configs\ltsydata_mock.ini
+// MockLTSY scripts that allow dynamic loading of mocklicenseetsy.dll
+data=EPOCROOT##epoc32\data\z\testdata\scripts\mockltsy_copy_ini_file.script		testdata\scripts\mockltsy_copy_ini_file.script
+data=EPOCROOT##epoc32\data\z\testdata\scripts\mockltsy_remove_ini_file.script		testdata\scripts\mockltsy_remove_ini_file.script
+
 // Runnable Scripts
 data=EPOCROOT##epoc32\data\z\testdata\scripts\te_ctsycomponent.script			testdata\scripts\te_ctsycomponent.script
 data=EPOCROOT##epoc32\data\z\testdata\scripts\te_ctsycomponent_timeout_all.script    testdata\scripts\te_ctsycomponent_timeout_all.script
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/bwins/licenseetsyu.def	Wed Jun 23 19:32:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
-	?LTsyFactoryL@@YAPAVMLtsyFactoryBase@@XZ @ 1 NONAME ; class MLtsyFactoryBase * LTsyFactoryL(void)
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/bwins/mocklicenseetsyu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LTsyFactoryL@@YAPAVMLtsyFactoryBase@@XZ @ 1  NONAME ; class MLtsyFactoryBase * LTsyFactoryL(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/data/ltsydata_mock.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+[LicenseeTSY]
+LicenseeTsyDllName = mocklicenseetsy.dll
+LicenseeTsyUid3 = 0x2002EA67
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/licenseetsyu.def	Wed Jun 23 19:32:14 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,943 +0,0 @@
-EXPORTS
-	_Z12LTsyFactoryLv @ 1 NONAME
-	_ZTI14TMockLtsyData1I10TGsmCbsMsgE @ 2 NONAME
-	_ZTI14TMockLtsyData1I11TONStoreMsgE @ 3 NONAME
-	_ZTI14TMockLtsyData1I12TRfStateInfoE @ 4 NONAME
-	_ZTI14TMockLtsyData1I12TServiceTypeE @ 5 NONAME
-	_ZTI14TMockLtsyData1I14TContextParamsE @ 6 NONAME
-	_ZTI14TMockLtsyData1I16TENStoreResponseE @ 7 NONAME
-	_ZTI14TMockLtsyData1I20TLockSettingPasswordE @ 8 NONAME
-	_ZTI14TMockLtsyData1I21TContextConfigurationE @ 9 NONAME
-	_ZTI14TMockLtsyData1I24TCbsCbmiAndLangAndFilterE @ 10 NONAME
-	_ZTI14TMockLtsyData1I25TMbmsNetworkServiceStatusE @ 11 NONAME
-	_ZTI14TMockLtsyData1I25TSendSmsDataAndAttributesE @ 12 NONAME
-	_ZTI14TMockLtsyData1I31TMmMbmsMonitorServiceListParamsE @ 13 NONAME
-	_ZTI14TMockLtsyData1I4TBufILi10EEE @ 14 NONAME
-	_ZTI14TMockLtsyData1I4TBufILi128EEE @ 15 NONAME
-	_ZTI14TMockLtsyData1I4TBufILi15EEE @ 16 NONAME
-	_ZTI14TMockLtsyData1I4TBufILi16EEE @ 17 NONAME
-	_ZTI14TMockLtsyData1I4TBufILi32EEE @ 18 NONAME
-	_ZTI14TMockLtsyData1I4TBufILi6EEE @ 19 NONAME
-	_ZTI14TMockLtsyData1I5TBuf8ILi128EEE @ 20 NONAME
-	_ZTI14TMockLtsyData1I5TBuf8ILi15EEE @ 21 NONAME
-	_ZTI14TMockLtsyData1I5TBuf8ILi16EEE @ 22 NONAME
-	_ZTI14TMockLtsyData1I5TCharE @ 23 NONAME
-	_ZTI14TMockLtsyData1I5TTimeE @ 24 NONAME
-	_ZTI14TMockLtsyData1I7TSmsMsgE @ 25 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI11TAlsSupportEE @ 26 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI11TOperatorIdEE @ 27 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI11TViagParamsEE @ 28 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI12THSxPAStatusEE @ 29 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI12TSetAlsBlockEE @ 30 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI12TSimFileInfoEE @ 31 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI13TSetDriveModeEE @ 32 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI14TBandSelectionEE @ 33 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI16TNetworkModeCapsEE @ 34 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI16TSetAlwaysOnModeEE @ 35 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI18TGetAlsBlockStatusEE @ 36 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI18TViagCacheRecordIdEE @ 37 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI19TViagUHZIUESettingsEE @ 38 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI20TEmerNumberCheckModeEE @ 39 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI5TApduEE @ 40 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI9TDtmfInfoEE @ 41 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone11TAPNEntryV3EE @ 42 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone14TMobileServiceEE @ 43 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone16TMobilePhoneLockEE @ 44 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone16TMobilePhoneNITZEE @ 45 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone19TMobilePhoneALSLineEE @ 46 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone21TMobilePhoneFdnStatusEE @ 47 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone21TMobilePhoneIdServiceEE @ 48 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone22TImsAuthenticateDataV5EE @ 49 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 50 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 51 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockStatusEE @ 52 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCBConditionEE @ 53 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCFConditionEE @ 54 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone23TMobilePhoneNetworkModeEE @ 55 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 56 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone24TMobilePhoneServiceTableEE @ 57 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 58 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 59 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 60 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 61 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 62 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 63 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneSecurityEventEE @ 64 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 65 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 66 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 67 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 68 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone28TAPNControlListServiceStatusEE @ 69 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 70 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 71 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 72 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 73 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 74 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 75 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 76 NONAME
-	_ZTI14TMockLtsyData1IN14RMobileONStore16TMobileONEntryV1EE @ 77 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketContext17TContextConfig_R5EE @ 78 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketContext18TContextConfigCDMAEE @ 79 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketContext18TContextConfigGPRSEE @ 80 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketContext20TContextConfigR99_R4EE @ 81 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketService11TAttachModeEE @ 82 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketService16TPreferredBearerEE @ 83 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketService19TRegistrationStatusEE @ 84 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketService7TStatusEE @ 85 NONAME
-	_ZTI14TMockLtsyData1IN14RPacketService8TMSClassEE @ 86 NONAME
-	_ZTI14TMockLtsyData1IN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 87 NONAME
-	_ZTI14TMockLtsyData1IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 88 NONAME
-	_ZTI14TMockLtsyData1IN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 89 NONAME
-	_ZTI14TMockLtsyData1IN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 90 NONAME
-	_ZTI14TMockLtsyData1IN19RMobileSmsMessaging16TMobileSmsBearerEE @ 91 NONAME
-	_ZTI14TMockLtsyData1IN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 92 NONAME
-	_ZTI14TMockLtsyData1IN6RPhone7TStatusEE @ 93 NONAME
-	_ZTI14TMockLtsyData1IP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 94 NONAME
-	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 95 NONAME
-	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI14TSmsParametersEE @ 96 NONAME
-	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI16TENStoreResponseEE @ 97 NONAME
-	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI7TSmsMsgEE @ 98 NONAME
-	_ZTI14TMockLtsyData1IP18CMobilePhoneCFListE @ 99 NONAME
-	_ZTI14TMockLtsyData1IP18CMobilePhoneCWListE @ 100 NONAME
-	_ZTI14TMockLtsyData1IP25CMobilePhoneNetworkListV2E @ 101 NONAME
-	_ZTI14TMockLtsyData1IP27CMobilePhoneBroadcastIdListE @ 102 NONAME
-	_ZTI14TMockLtsyData1IP29CPcktMbmsMonitoredServiceListE @ 103 NONAME
-	_ZTI14TMockLtsyData1IP4TBufILi100EEE @ 104 NONAME
-	_ZTI14TMockLtsyData1IP6TDesC8E @ 105 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI20TSimCardReaderStatusEE @ 106 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 107 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 108 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 109 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 110 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 111 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 112 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 113 NONAME
-	_ZTI14TMockLtsyData1IPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 114 NONAME
-	_ZTI14TMockLtsyData1IhE @ 115 NONAME
-	_ZTI14TMockLtsyData1IiE @ 116 NONAME
-	_ZTI14TMockLtsyData1IjE @ 117 NONAME
-	_ZTI14TMockLtsyData1IlE @ 118 NONAME
-	_ZTI14TMockLtsyData1ImE @ 119 NONAME
-	_ZTI14TMockLtsyData1IsE @ 120 NONAME
-	_ZTI14TMockLtsyData1ItE @ 121 NONAME
-	_ZTI14TMockLtsyData2I14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 122 NONAME
-	_ZTI14TMockLtsyData2I14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 123 NONAME
-	_ZTI14TMockLtsyData2I14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 124 NONAME
-	_ZTI14TMockLtsyData2I21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 125 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 126 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 127 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EE12TContextMiscE @ 128 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 129 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EE5TBuf8ILi1EEE @ 130 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 131 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 132 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 133 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 134 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 135 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 136 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EES1_E @ 137 NONAME
-	_ZTI14TMockLtsyData2I4TBufILi16EEiE @ 138 NONAME
-	_ZTI14TMockLtsyData2I5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 139 NONAME
-	_ZTI14TMockLtsyData2I5TTimeiE @ 140 NONAME
-	_ZTI14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 141 NONAME
-	_ZTI14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 142 NONAME
-	_ZTI14TMockLtsyData2IN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 143 NONAME
-	_ZTI14TMockLtsyData2IN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 144 NONAME
-	_ZTI14TMockLtsyData2IN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 145 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 146 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 147 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 148 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 149 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 150 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 151 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 152 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 153 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 154 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 155 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 156 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 157 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 158 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 159 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 160 NONAME
-	_ZTI14TMockLtsyData2IN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 161 NONAME
-	_ZTI14TMockLtsyData2IN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 162 NONAME
-	_ZTI14TMockLtsyData2IN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 163 NONAME
-	_ZTI14TMockLtsyData2IN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 164 NONAME
-	_ZTI14TMockLtsyData2IN14RPacketService7TStatusEiE @ 165 NONAME
-	_ZTI14TMockLtsyData2IN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 166 NONAME
-	_ZTI14TMockLtsyData2IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 167 NONAME
-	_ZTI14TMockLtsyData2IN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 168 NONAME
-	_ZTI14TMockLtsyData2IP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 169 NONAME
-	_ZTI14TMockLtsyData2IP13CArrayPtrFlatI7TSmsMsgEiE @ 170 NONAME
-	_ZTI14TMockLtsyData2IP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 171 NONAME
-	_ZTI14TMockLtsyData2IP6TDesC8S1_E @ 172 NONAME
-	_ZTI14TMockLtsyData2IP6TDesC8iE @ 173 NONAME
-	_ZTI14TMockLtsyData2Ih4TBufILi10EEE @ 174 NONAME
-	_ZTI14TMockLtsyData2IhiE @ 175 NONAME
-	_ZTI14TMockLtsyData2IiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 176 NONAME
-	_ZTI14TMockLtsyData2IiP7TSmsMsgE @ 177 NONAME
-	_ZTI14TMockLtsyData2IiiE @ 178 NONAME
-	_ZTI14TMockLtsyData2IjiE @ 179 NONAME
-	_ZTI14TMockLtsyData2IlaE @ 180 NONAME
-	_ZTI14TMockLtsyData2Is5TBuf8ILi165EEE @ 181 NONAME
-	_ZTI15CMockLtsyEngine @ 182 NONAME
-	_ZTI16CMmCustomStubExt @ 183 NONAME
-	_ZTI16CMmMessageRouter @ 184 NONAME
-	_ZTI17TMockLtsyData1BufI10TGsmCbsMsgE @ 185 NONAME
-	_ZTI17TMockLtsyData1BufI11TONStoreMsgE @ 186 NONAME
-	_ZTI17TMockLtsyData1BufI12TRfStateInfoE @ 187 NONAME
-	_ZTI17TMockLtsyData1BufI12TServiceTypeE @ 188 NONAME
-	_ZTI17TMockLtsyData1BufI14TContextParamsE @ 189 NONAME
-	_ZTI17TMockLtsyData1BufI16TENStoreResponseE @ 190 NONAME
-	_ZTI17TMockLtsyData1BufI20TLockSettingPasswordE @ 191 NONAME
-	_ZTI17TMockLtsyData1BufI21TContextConfigurationE @ 192 NONAME
-	_ZTI17TMockLtsyData1BufI24TCbsCbmiAndLangAndFilterE @ 193 NONAME
-	_ZTI17TMockLtsyData1BufI25TMbmsNetworkServiceStatusE @ 194 NONAME
-	_ZTI17TMockLtsyData1BufI25TSendSmsDataAndAttributesE @ 195 NONAME
-	_ZTI17TMockLtsyData1BufI31TMmMbmsMonitorServiceListParamsE @ 196 NONAME
-	_ZTI17TMockLtsyData1BufI4TBufILi10EEE @ 197 NONAME
-	_ZTI17TMockLtsyData1BufI4TBufILi128EEE @ 198 NONAME
-	_ZTI17TMockLtsyData1BufI4TBufILi15EEE @ 199 NONAME
-	_ZTI17TMockLtsyData1BufI4TBufILi16EEE @ 200 NONAME
-	_ZTI17TMockLtsyData1BufI4TBufILi32EEE @ 201 NONAME
-	_ZTI17TMockLtsyData1BufI4TBufILi6EEE @ 202 NONAME
-	_ZTI17TMockLtsyData1BufI5TBuf8ILi128EEE @ 203 NONAME
-	_ZTI17TMockLtsyData1BufI5TBuf8ILi15EEE @ 204 NONAME
-	_ZTI17TMockLtsyData1BufI5TBuf8ILi16EEE @ 205 NONAME
-	_ZTI17TMockLtsyData1BufI5TCharE @ 206 NONAME
-	_ZTI17TMockLtsyData1BufI5TTimeE @ 207 NONAME
-	_ZTI17TMockLtsyData1BufI7TSmsMsgE @ 208 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI11TAlsSupportEE @ 209 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI11TOperatorIdEE @ 210 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI11TViagParamsEE @ 211 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI12THSxPAStatusEE @ 212 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI12TSetAlsBlockEE @ 213 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI12TSimFileInfoEE @ 214 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI13TSetDriveModeEE @ 215 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI14TBandSelectionEE @ 216 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI16TNetworkModeCapsEE @ 217 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI16TSetAlwaysOnModeEE @ 218 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI18TGetAlsBlockStatusEE @ 219 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI18TViagCacheRecordIdEE @ 220 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI19TViagUHZIUESettingsEE @ 221 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI20TEmerNumberCheckModeEE @ 222 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI5TApduEE @ 223 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI9TDtmfInfoEE @ 224 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone11TAPNEntryV3EE @ 225 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone14TMobileServiceEE @ 226 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneLockEE @ 227 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneNITZEE @ 228 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone19TMobilePhoneALSLineEE @ 229 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneFdnStatusEE @ 230 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneIdServiceEE @ 231 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TImsAuthenticateDataV5EE @ 232 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 233 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 234 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockStatusEE @ 235 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCBConditionEE @ 236 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCFConditionEE @ 237 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneNetworkModeEE @ 238 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 239 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneServiceTableEE @ 240 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 241 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 242 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 243 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 244 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 245 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 246 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneSecurityEventEE @ 247 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 248 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 249 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 250 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 251 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone28TAPNControlListServiceStatusEE @ 252 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 253 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 254 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 255 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 256 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 257 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 258 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 259 NONAME
-	_ZTI17TMockLtsyData1BufIN14RMobileONStore16TMobileONEntryV1EE @ 260 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketContext17TContextConfig_R5EE @ 261 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketContext18TContextConfigCDMAEE @ 262 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketContext18TContextConfigGPRSEE @ 263 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketContext20TContextConfigR99_R4EE @ 264 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketService11TAttachModeEE @ 265 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketService16TPreferredBearerEE @ 266 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketService19TRegistrationStatusEE @ 267 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketService7TStatusEE @ 268 NONAME
-	_ZTI17TMockLtsyData1BufIN14RPacketService8TMSClassEE @ 269 NONAME
-	_ZTI17TMockLtsyData1BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 270 NONAME
-	_ZTI17TMockLtsyData1BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 271 NONAME
-	_ZTI17TMockLtsyData1BufIN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 272 NONAME
-	_ZTI17TMockLtsyData1BufIN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 273 NONAME
-	_ZTI17TMockLtsyData1BufIN19RMobileSmsMessaging16TMobileSmsBearerEE @ 274 NONAME
-	_ZTI17TMockLtsyData1BufIN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 275 NONAME
-	_ZTI17TMockLtsyData1BufIN6RPhone7TStatusEE @ 276 NONAME
-	_ZTI17TMockLtsyData1BufIP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 277 NONAME
-	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 278 NONAME
-	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI14TSmsParametersEE @ 279 NONAME
-	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI16TENStoreResponseEE @ 280 NONAME
-	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI7TSmsMsgEE @ 281 NONAME
-	_ZTI17TMockLtsyData1BufIP18CMobilePhoneCFListE @ 282 NONAME
-	_ZTI17TMockLtsyData1BufIP18CMobilePhoneCWListE @ 283 NONAME
-	_ZTI17TMockLtsyData1BufIP25CMobilePhoneNetworkListV2E @ 284 NONAME
-	_ZTI17TMockLtsyData1BufIP27CMobilePhoneBroadcastIdListE @ 285 NONAME
-	_ZTI17TMockLtsyData1BufIP29CPcktMbmsMonitoredServiceListE @ 286 NONAME
-	_ZTI17TMockLtsyData1BufIP4TBufILi100EEE @ 287 NONAME
-	_ZTI17TMockLtsyData1BufIP6TDesC8E @ 288 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI20TSimCardReaderStatusEE @ 289 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 290 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 291 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 292 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 293 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 294 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 295 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 296 NONAME
-	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 297 NONAME
-	_ZTI17TMockLtsyData1BufIhE @ 298 NONAME
-	_ZTI17TMockLtsyData1BufIiE @ 299 NONAME
-	_ZTI17TMockLtsyData1BufIjE @ 300 NONAME
-	_ZTI17TMockLtsyData1BufIlE @ 301 NONAME
-	_ZTI17TMockLtsyData1BufImE @ 302 NONAME
-	_ZTI17TMockLtsyData1BufIsE @ 303 NONAME
-	_ZTI17TMockLtsyData1BufItE @ 304 NONAME
-	_ZTI17TMockLtsyData2BufI14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 305 NONAME
-	_ZTI17TMockLtsyData2BufI14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 306 NONAME
-	_ZTI17TMockLtsyData2BufI14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 307 NONAME
-	_ZTI17TMockLtsyData2BufI21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 308 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 309 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 310 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EE12TContextMiscE @ 311 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 312 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EE5TBuf8ILi1EEE @ 313 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 314 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 315 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 316 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 317 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 318 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 319 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EES1_E @ 320 NONAME
-	_ZTI17TMockLtsyData2BufI4TBufILi16EEiE @ 321 NONAME
-	_ZTI17TMockLtsyData2BufI5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 322 NONAME
-	_ZTI17TMockLtsyData2BufI5TTimeiE @ 323 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 324 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 325 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 326 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 327 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 328 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 329 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 330 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 331 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 332 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 333 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 334 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 335 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 336 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 337 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 338 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 339 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 340 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 341 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 342 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 343 NONAME
-	_ZTI17TMockLtsyData2BufIN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 344 NONAME
-	_ZTI17TMockLtsyData2BufIN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 345 NONAME
-	_ZTI17TMockLtsyData2BufIN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 346 NONAME
-	_ZTI17TMockLtsyData2BufIN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 347 NONAME
-	_ZTI17TMockLtsyData2BufIN14RPacketService7TStatusEiE @ 348 NONAME
-	_ZTI17TMockLtsyData2BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 349 NONAME
-	_ZTI17TMockLtsyData2BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 350 NONAME
-	_ZTI17TMockLtsyData2BufIN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 351 NONAME
-	_ZTI17TMockLtsyData2BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 352 NONAME
-	_ZTI17TMockLtsyData2BufIP13CArrayPtrFlatI7TSmsMsgEiE @ 353 NONAME
-	_ZTI17TMockLtsyData2BufIP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 354 NONAME
-	_ZTI17TMockLtsyData2BufIP6TDesC8S1_E @ 355 NONAME
-	_ZTI17TMockLtsyData2BufIP6TDesC8iE @ 356 NONAME
-	_ZTI17TMockLtsyData2BufIh4TBufILi10EEE @ 357 NONAME
-	_ZTI17TMockLtsyData2BufIhiE @ 358 NONAME
-	_ZTI17TMockLtsyData2BufIiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 359 NONAME
-	_ZTI17TMockLtsyData2BufIiP7TSmsMsgE @ 360 NONAME
-	_ZTI17TMockLtsyData2BufIiiE @ 361 NONAME
-	_ZTI17TMockLtsyData2BufIjiE @ 362 NONAME
-	_ZTI17TMockLtsyData2BufIlaE @ 363 NONAME
-	_ZTI17TMockLtsyData2BufIs5TBuf8ILi165EEE @ 364 NONAME
-	_ZTI18CMockLtsyFactoryV1 @ 365 NONAME
-	_ZTI18CMockLtsyFactoryV2 @ 366 NONAME
-	_ZTI18CMockLtsyFactoryV3 @ 367 NONAME
-	_ZTI18TMockLtsyCallData1I4TBufILi129EEE @ 368 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall16TMobileCallEventEE @ 369 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall17TMobileCallInfoV1EE @ 370 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall17TMobileCallStatusEE @ 371 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV1EE @ 372 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV2EE @ 373 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV7EE @ 374 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall21TMobileCallDataCapsV1EE @ 375 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall22TMobileCallHscsdInfoV8EE @ 376 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV1EE @ 377 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV2EE @ 378 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV8EE @ 379 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV1EE @ 380 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV2EE @ 381 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV7EE @ 382 NONAME
-	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV8EE @ 383 NONAME
-	_ZTI18TMockLtsyCallData1IN12RMobilePhone19TMobilePhonePrivacyEE @ 384 NONAME
-	_ZTI18TMockLtsyCallData1IN5RCall14TBearerServiceEE @ 385 NONAME
-	_ZTI18TMockLtsyCallData1IN5RCall7TStatusEE @ 386 NONAME
-	_ZTI18TMockLtsyCallData1IN5RCall9TCommPortEE @ 387 NONAME
-	_ZTI18TMockLtsyCallData1IiE @ 388 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 389 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 390 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 391 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 392 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 393 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 394 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 395 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 396 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 397 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 398 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 399 NONAME
-	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 400 NONAME
-	_ZTI18TMockLtsyCallData2IiiE @ 401 NONAME
-	_ZTI19CMockSmsMessHandler @ 402 NONAME
-	_ZTI20CMockCallMessHandler @ 403 NONAME
-	_ZTI21CMockPhoneMessHandler @ 404 NONAME
-	_ZTI21TMockLtsyCallData1BufI4TBufILi129EEE @ 405 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall16TMobileCallEventEE @ 406 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallInfoV1EE @ 407 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallStatusEE @ 408 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV1EE @ 409 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV2EE @ 410 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV7EE @ 411 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall21TMobileCallDataCapsV1EE @ 412 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall22TMobileCallHscsdInfoV8EE @ 413 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV1EE @ 414 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV2EE @ 415 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV8EE @ 416 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV1EE @ 417 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV2EE @ 418 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV7EE @ 419 NONAME
-	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV8EE @ 420 NONAME
-	_ZTI21TMockLtsyCallData1BufIN12RMobilePhone19TMobilePhonePrivacyEE @ 421 NONAME
-	_ZTI21TMockLtsyCallData1BufIN5RCall14TBearerServiceEE @ 422 NONAME
-	_ZTI21TMockLtsyCallData1BufIN5RCall7TStatusEE @ 423 NONAME
-	_ZTI21TMockLtsyCallData1BufIN5RCall9TCommPortEE @ 424 NONAME
-	_ZTI21TMockLtsyCallData1BufIiE @ 425 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 426 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 427 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 428 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 429 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 430 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 431 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 432 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 433 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 434 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 435 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 436 NONAME
-	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 437 NONAME
-	_ZTI21TMockLtsyCallData2BufIiiE @ 438 NONAME
-	_ZTI21TMockLtsyContextData1I4TBufILi16EEE @ 439 NONAME
-	_ZTI21TMockLtsyContextData2I4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 440 NONAME
-	_ZTI21TMockLtsyContextData2I4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 441 NONAME
-	_ZTI23CMockPcktQoSMessHandler @ 442 NONAME
-	_ZTI23TMockLtsyPacketQoSData1I4TBufILi16EEE @ 443 NONAME
-	_ZTI23TMockLtsyPhoneBookData1I10TPBFdnInfoE @ 444 NONAME
-	_ZTI23TMockLtsyPhoneBookData1I12TPBEntryInfoE @ 445 NONAME
-	_ZTI23TMockLtsyPhoneBookData1I16CStorageInfoDataE @ 446 NONAME
-	_ZTI23TMockLtsyPhoneBookData1IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 447 NONAME
-	_ZTI23TMockLtsyPhoneBookData1IP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 448 NONAME
-	_ZTI23TMockLtsyPhoneBookData1IiE @ 449 NONAME
-	_ZTI23TMockLtsyPhoneBookData2IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 450 NONAME ABSENT
-	_ZTI23TMockLtsyPhoneBookData2IiP20CPhoneBookStoreEntryE @ 451 NONAME
-	_ZTI24TMockLtsyContextData1BufI4TBufILi16EEE @ 452 NONAME
-	_ZTI24TMockLtsyContextData2BufI4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 453 NONAME
-	_ZTI24TMockLtsyContextData2BufI4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 454 NONAME
-	_ZTI26CMmCustomMessHandlerGsmExt @ 455 NONAME
-	_ZTI26CMockTelephonyAudioControl @ 456 NONAME
-	_ZTI26TMockLtsyPhoneBookData1BufI10TPBFdnInfoE @ 457 NONAME
-	_ZTI26TMockLtsyPhoneBookData1BufI12TPBEntryInfoE @ 458 NONAME
-	_ZTI26TMockLtsyPhoneBookData1BufI16CStorageInfoDataE @ 459 NONAME
-	_ZTI26TMockLtsyPhoneBookData1BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 460 NONAME
-	_ZTI26TMockLtsyPhoneBookData1BufIP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 461 NONAME
-	_ZTI26TMockLtsyPhoneBookData1BufIiE @ 462 NONAME
-	_ZTI26TMockLtsyPhoneBookData2BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 463 NONAME ABSENT
-	_ZTI26TMockLtsyPhoneBookData2BufIiP20CPhoneBookStoreEntryE @ 464 NONAME
-	_ZTI27CMockPcktContextMessHandler @ 465 NONAME
-	_ZTI27CMockPcktServiceMessHandler @ 466 NONAME
-	_ZTI30CMockPhoneBookStoreMessHandler @ 467 NONAME
-	_ZTV14TMockLtsyData1I10TGsmCbsMsgE @ 468 NONAME
-	_ZTV14TMockLtsyData1I11TONStoreMsgE @ 469 NONAME
-	_ZTV14TMockLtsyData1I12TRfStateInfoE @ 470 NONAME
-	_ZTV14TMockLtsyData1I12TServiceTypeE @ 471 NONAME
-	_ZTV14TMockLtsyData1I14TContextParamsE @ 472 NONAME
-	_ZTV14TMockLtsyData1I16TENStoreResponseE @ 473 NONAME
-	_ZTV14TMockLtsyData1I20TLockSettingPasswordE @ 474 NONAME
-	_ZTV14TMockLtsyData1I21TContextConfigurationE @ 475 NONAME
-	_ZTV14TMockLtsyData1I24TCbsCbmiAndLangAndFilterE @ 476 NONAME
-	_ZTV14TMockLtsyData1I25TMbmsNetworkServiceStatusE @ 477 NONAME
-	_ZTV14TMockLtsyData1I25TSendSmsDataAndAttributesE @ 478 NONAME
-	_ZTV14TMockLtsyData1I31TMmMbmsMonitorServiceListParamsE @ 479 NONAME
-	_ZTV14TMockLtsyData1I4TBufILi10EEE @ 480 NONAME
-	_ZTV14TMockLtsyData1I4TBufILi128EEE @ 481 NONAME
-	_ZTV14TMockLtsyData1I4TBufILi15EEE @ 482 NONAME
-	_ZTV14TMockLtsyData1I4TBufILi16EEE @ 483 NONAME
-	_ZTV14TMockLtsyData1I4TBufILi32EEE @ 484 NONAME
-	_ZTV14TMockLtsyData1I4TBufILi6EEE @ 485 NONAME
-	_ZTV14TMockLtsyData1I5TBuf8ILi128EEE @ 486 NONAME
-	_ZTV14TMockLtsyData1I5TBuf8ILi15EEE @ 487 NONAME
-	_ZTV14TMockLtsyData1I5TBuf8ILi16EEE @ 488 NONAME
-	_ZTV14TMockLtsyData1I5TCharE @ 489 NONAME
-	_ZTV14TMockLtsyData1I5TTimeE @ 490 NONAME
-	_ZTV14TMockLtsyData1I7TSmsMsgE @ 491 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI11TAlsSupportEE @ 492 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI11TOperatorIdEE @ 493 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI11TViagParamsEE @ 494 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI12THSxPAStatusEE @ 495 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI12TSetAlsBlockEE @ 496 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI12TSimFileInfoEE @ 497 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI13TSetDriveModeEE @ 498 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI14TBandSelectionEE @ 499 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI16TNetworkModeCapsEE @ 500 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI16TSetAlwaysOnModeEE @ 501 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI18TGetAlsBlockStatusEE @ 502 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI18TViagCacheRecordIdEE @ 503 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI19TViagUHZIUESettingsEE @ 504 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI20TEmerNumberCheckModeEE @ 505 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI5TApduEE @ 506 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI9TDtmfInfoEE @ 507 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone11TAPNEntryV3EE @ 508 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone14TMobileServiceEE @ 509 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone16TMobilePhoneLockEE @ 510 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone16TMobilePhoneNITZEE @ 511 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone19TMobilePhoneALSLineEE @ 512 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone21TMobilePhoneFdnStatusEE @ 513 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone21TMobilePhoneIdServiceEE @ 514 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone22TImsAuthenticateDataV5EE @ 515 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 516 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 517 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockStatusEE @ 518 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCBConditionEE @ 519 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCFConditionEE @ 520 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone23TMobilePhoneNetworkModeEE @ 521 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 522 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone24TMobilePhoneServiceTableEE @ 523 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 524 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 525 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 526 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 527 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 528 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 529 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneSecurityEventEE @ 530 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 531 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 532 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 533 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 534 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone28TAPNControlListServiceStatusEE @ 535 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 536 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 537 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 538 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 539 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 540 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 541 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 542 NONAME
-	_ZTV14TMockLtsyData1IN14RMobileONStore16TMobileONEntryV1EE @ 543 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketContext17TContextConfig_R5EE @ 544 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketContext18TContextConfigCDMAEE @ 545 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketContext18TContextConfigGPRSEE @ 546 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketContext20TContextConfigR99_R4EE @ 547 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketService11TAttachModeEE @ 548 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketService16TPreferredBearerEE @ 549 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketService19TRegistrationStatusEE @ 550 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketService7TStatusEE @ 551 NONAME
-	_ZTV14TMockLtsyData1IN14RPacketService8TMSClassEE @ 552 NONAME
-	_ZTV14TMockLtsyData1IN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 553 NONAME
-	_ZTV14TMockLtsyData1IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 554 NONAME
-	_ZTV14TMockLtsyData1IN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 555 NONAME
-	_ZTV14TMockLtsyData1IN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 556 NONAME
-	_ZTV14TMockLtsyData1IN19RMobileSmsMessaging16TMobileSmsBearerEE @ 557 NONAME
-	_ZTV14TMockLtsyData1IN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 558 NONAME
-	_ZTV14TMockLtsyData1IN6RPhone7TStatusEE @ 559 NONAME
-	_ZTV14TMockLtsyData1IP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 560 NONAME
-	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 561 NONAME
-	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI14TSmsParametersEE @ 562 NONAME
-	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI16TENStoreResponseEE @ 563 NONAME
-	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI7TSmsMsgEE @ 564 NONAME
-	_ZTV14TMockLtsyData1IP18CMobilePhoneCFListE @ 565 NONAME
-	_ZTV14TMockLtsyData1IP18CMobilePhoneCWListE @ 566 NONAME
-	_ZTV14TMockLtsyData1IP25CMobilePhoneNetworkListV2E @ 567 NONAME
-	_ZTV14TMockLtsyData1IP27CMobilePhoneBroadcastIdListE @ 568 NONAME
-	_ZTV14TMockLtsyData1IP29CPcktMbmsMonitoredServiceListE @ 569 NONAME
-	_ZTV14TMockLtsyData1IP4TBufILi100EEE @ 570 NONAME
-	_ZTV14TMockLtsyData1IP6TDesC8E @ 571 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI20TSimCardReaderStatusEE @ 572 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 573 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 574 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 575 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 576 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 577 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 578 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 579 NONAME
-	_ZTV14TMockLtsyData1IPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 580 NONAME
-	_ZTV14TMockLtsyData1IhE @ 581 NONAME
-	_ZTV14TMockLtsyData1IiE @ 582 NONAME
-	_ZTV14TMockLtsyData1IjE @ 583 NONAME
-	_ZTV14TMockLtsyData1IlE @ 584 NONAME
-	_ZTV14TMockLtsyData1ImE @ 585 NONAME
-	_ZTV14TMockLtsyData1IsE @ 586 NONAME
-	_ZTV14TMockLtsyData1ItE @ 587 NONAME
-	_ZTV14TMockLtsyData2I14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 588 NONAME
-	_ZTV14TMockLtsyData2I14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 589 NONAME
-	_ZTV14TMockLtsyData2I14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 590 NONAME
-	_ZTV14TMockLtsyData2I21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 591 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 592 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 593 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EE12TContextMiscE @ 594 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 595 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EE5TBuf8ILi1EEE @ 596 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 597 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 598 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 599 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 600 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 601 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 602 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EES1_E @ 603 NONAME
-	_ZTV14TMockLtsyData2I4TBufILi16EEiE @ 604 NONAME
-	_ZTV14TMockLtsyData2I5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 605 NONAME
-	_ZTV14TMockLtsyData2I5TTimeiE @ 606 NONAME
-	_ZTV14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 607 NONAME
-	_ZTV14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 608 NONAME
-	_ZTV14TMockLtsyData2IN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 609 NONAME
-	_ZTV14TMockLtsyData2IN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 610 NONAME
-	_ZTV14TMockLtsyData2IN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 611 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 612 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 613 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 614 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 615 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 616 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 617 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 618 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 619 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 620 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 621 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 622 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 623 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 624 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 625 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 626 NONAME
-	_ZTV14TMockLtsyData2IN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 627 NONAME
-	_ZTV14TMockLtsyData2IN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 628 NONAME
-	_ZTV14TMockLtsyData2IN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 629 NONAME
-	_ZTV14TMockLtsyData2IN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 630 NONAME
-	_ZTV14TMockLtsyData2IN14RPacketService7TStatusEiE @ 631 NONAME
-	_ZTV14TMockLtsyData2IN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 632 NONAME
-	_ZTV14TMockLtsyData2IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 633 NONAME
-	_ZTV14TMockLtsyData2IN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 634 NONAME
-	_ZTV14TMockLtsyData2IP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 635 NONAME
-	_ZTV14TMockLtsyData2IP13CArrayPtrFlatI7TSmsMsgEiE @ 636 NONAME
-	_ZTV14TMockLtsyData2IP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 637 NONAME
-	_ZTV14TMockLtsyData2IP6TDesC8S1_E @ 638 NONAME
-	_ZTV14TMockLtsyData2IP6TDesC8iE @ 639 NONAME
-	_ZTV14TMockLtsyData2Ih4TBufILi10EEE @ 640 NONAME
-	_ZTV14TMockLtsyData2IhiE @ 641 NONAME
-	_ZTV14TMockLtsyData2IiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 642 NONAME
-	_ZTV14TMockLtsyData2IiP7TSmsMsgE @ 643 NONAME
-	_ZTV14TMockLtsyData2IiiE @ 644 NONAME
-	_ZTV14TMockLtsyData2IjiE @ 645 NONAME
-	_ZTV14TMockLtsyData2IlaE @ 646 NONAME
-	_ZTV14TMockLtsyData2Is5TBuf8ILi165EEE @ 647 NONAME
-	_ZTV15CMockLtsyEngine @ 648 NONAME
-	_ZTV16CMmCustomStubExt @ 649 NONAME
-	_ZTV16CMmMessageRouter @ 650 NONAME
-	_ZTV17TMockLtsyData1BufI10TGsmCbsMsgE @ 651 NONAME
-	_ZTV17TMockLtsyData1BufI11TONStoreMsgE @ 652 NONAME
-	_ZTV17TMockLtsyData1BufI12TRfStateInfoE @ 653 NONAME
-	_ZTV17TMockLtsyData1BufI12TServiceTypeE @ 654 NONAME
-	_ZTV17TMockLtsyData1BufI14TContextParamsE @ 655 NONAME
-	_ZTV17TMockLtsyData1BufI16TENStoreResponseE @ 656 NONAME
-	_ZTV17TMockLtsyData1BufI20TLockSettingPasswordE @ 657 NONAME
-	_ZTV17TMockLtsyData1BufI21TContextConfigurationE @ 658 NONAME
-	_ZTV17TMockLtsyData1BufI24TCbsCbmiAndLangAndFilterE @ 659 NONAME
-	_ZTV17TMockLtsyData1BufI25TMbmsNetworkServiceStatusE @ 660 NONAME
-	_ZTV17TMockLtsyData1BufI25TSendSmsDataAndAttributesE @ 661 NONAME
-	_ZTV17TMockLtsyData1BufI31TMmMbmsMonitorServiceListParamsE @ 662 NONAME
-	_ZTV17TMockLtsyData1BufI4TBufILi10EEE @ 663 NONAME
-	_ZTV17TMockLtsyData1BufI4TBufILi128EEE @ 664 NONAME
-	_ZTV17TMockLtsyData1BufI4TBufILi15EEE @ 665 NONAME
-	_ZTV17TMockLtsyData1BufI4TBufILi16EEE @ 666 NONAME
-	_ZTV17TMockLtsyData1BufI4TBufILi32EEE @ 667 NONAME
-	_ZTV17TMockLtsyData1BufI4TBufILi6EEE @ 668 NONAME
-	_ZTV17TMockLtsyData1BufI5TBuf8ILi128EEE @ 669 NONAME
-	_ZTV17TMockLtsyData1BufI5TBuf8ILi15EEE @ 670 NONAME
-	_ZTV17TMockLtsyData1BufI5TBuf8ILi16EEE @ 671 NONAME
-	_ZTV17TMockLtsyData1BufI5TCharE @ 672 NONAME
-	_ZTV17TMockLtsyData1BufI5TTimeE @ 673 NONAME
-	_ZTV17TMockLtsyData1BufI7TSmsMsgE @ 674 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI11TAlsSupportEE @ 675 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI11TOperatorIdEE @ 676 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI11TViagParamsEE @ 677 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI12THSxPAStatusEE @ 678 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI12TSetAlsBlockEE @ 679 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI12TSimFileInfoEE @ 680 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI13TSetDriveModeEE @ 681 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI14TBandSelectionEE @ 682 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI16TNetworkModeCapsEE @ 683 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI16TSetAlwaysOnModeEE @ 684 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI18TGetAlsBlockStatusEE @ 685 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI18TViagCacheRecordIdEE @ 686 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI19TViagUHZIUESettingsEE @ 687 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI20TEmerNumberCheckModeEE @ 688 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI5TApduEE @ 689 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI9TDtmfInfoEE @ 690 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone11TAPNEntryV3EE @ 691 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone14TMobileServiceEE @ 692 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneLockEE @ 693 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneNITZEE @ 694 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone19TMobilePhoneALSLineEE @ 695 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneFdnStatusEE @ 696 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneIdServiceEE @ 697 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TImsAuthenticateDataV5EE @ 698 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 699 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 700 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockStatusEE @ 701 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCBConditionEE @ 702 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCFConditionEE @ 703 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneNetworkModeEE @ 704 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 705 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneServiceTableEE @ 706 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 707 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 708 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 709 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 710 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 711 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 712 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneSecurityEventEE @ 713 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 714 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 715 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 716 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 717 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone28TAPNControlListServiceStatusEE @ 718 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 719 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 720 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 721 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 722 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 723 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 724 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 725 NONAME
-	_ZTV17TMockLtsyData1BufIN14RMobileONStore16TMobileONEntryV1EE @ 726 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketContext17TContextConfig_R5EE @ 727 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketContext18TContextConfigCDMAEE @ 728 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketContext18TContextConfigGPRSEE @ 729 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketContext20TContextConfigR99_R4EE @ 730 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketService11TAttachModeEE @ 731 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketService16TPreferredBearerEE @ 732 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketService19TRegistrationStatusEE @ 733 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketService7TStatusEE @ 734 NONAME
-	_ZTV17TMockLtsyData1BufIN14RPacketService8TMSClassEE @ 735 NONAME
-	_ZTV17TMockLtsyData1BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 736 NONAME
-	_ZTV17TMockLtsyData1BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 737 NONAME
-	_ZTV17TMockLtsyData1BufIN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 738 NONAME
-	_ZTV17TMockLtsyData1BufIN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 739 NONAME
-	_ZTV17TMockLtsyData1BufIN19RMobileSmsMessaging16TMobileSmsBearerEE @ 740 NONAME
-	_ZTV17TMockLtsyData1BufIN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 741 NONAME
-	_ZTV17TMockLtsyData1BufIN6RPhone7TStatusEE @ 742 NONAME
-	_ZTV17TMockLtsyData1BufIP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 743 NONAME
-	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 744 NONAME
-	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI14TSmsParametersEE @ 745 NONAME
-	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI16TENStoreResponseEE @ 746 NONAME
-	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI7TSmsMsgEE @ 747 NONAME
-	_ZTV17TMockLtsyData1BufIP18CMobilePhoneCFListE @ 748 NONAME
-	_ZTV17TMockLtsyData1BufIP18CMobilePhoneCWListE @ 749 NONAME
-	_ZTV17TMockLtsyData1BufIP25CMobilePhoneNetworkListV2E @ 750 NONAME
-	_ZTV17TMockLtsyData1BufIP27CMobilePhoneBroadcastIdListE @ 751 NONAME
-	_ZTV17TMockLtsyData1BufIP29CPcktMbmsMonitoredServiceListE @ 752 NONAME
-	_ZTV17TMockLtsyData1BufIP4TBufILi100EEE @ 753 NONAME
-	_ZTV17TMockLtsyData1BufIP6TDesC8E @ 754 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI20TSimCardReaderStatusEE @ 755 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 756 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 757 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 758 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 759 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 760 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 761 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 762 NONAME
-	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 763 NONAME
-	_ZTV17TMockLtsyData1BufIhE @ 764 NONAME
-	_ZTV17TMockLtsyData1BufIiE @ 765 NONAME
-	_ZTV17TMockLtsyData1BufIjE @ 766 NONAME
-	_ZTV17TMockLtsyData1BufIlE @ 767 NONAME
-	_ZTV17TMockLtsyData1BufImE @ 768 NONAME
-	_ZTV17TMockLtsyData1BufIsE @ 769 NONAME
-	_ZTV17TMockLtsyData1BufItE @ 770 NONAME
-	_ZTV17TMockLtsyData2BufI14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 771 NONAME
-	_ZTV17TMockLtsyData2BufI14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 772 NONAME
-	_ZTV17TMockLtsyData2BufI14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 773 NONAME
-	_ZTV17TMockLtsyData2BufI21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 774 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 775 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 776 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EE12TContextMiscE @ 777 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 778 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EE5TBuf8ILi1EEE @ 779 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 780 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 781 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 782 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 783 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 784 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 785 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EES1_E @ 786 NONAME
-	_ZTV17TMockLtsyData2BufI4TBufILi16EEiE @ 787 NONAME
-	_ZTV17TMockLtsyData2BufI5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 788 NONAME
-	_ZTV17TMockLtsyData2BufI5TTimeiE @ 789 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 790 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 791 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 792 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 793 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 794 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 795 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 796 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 797 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 798 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 799 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 800 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 801 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 802 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 803 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 804 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 805 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 806 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 807 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 808 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 809 NONAME
-	_ZTV17TMockLtsyData2BufIN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 810 NONAME
-	_ZTV17TMockLtsyData2BufIN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 811 NONAME
-	_ZTV17TMockLtsyData2BufIN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 812 NONAME
-	_ZTV17TMockLtsyData2BufIN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 813 NONAME
-	_ZTV17TMockLtsyData2BufIN14RPacketService7TStatusEiE @ 814 NONAME
-	_ZTV17TMockLtsyData2BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 815 NONAME
-	_ZTV17TMockLtsyData2BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 816 NONAME
-	_ZTV17TMockLtsyData2BufIN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 817 NONAME
-	_ZTV17TMockLtsyData2BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 818 NONAME
-	_ZTV17TMockLtsyData2BufIP13CArrayPtrFlatI7TSmsMsgEiE @ 819 NONAME
-	_ZTV17TMockLtsyData2BufIP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 820 NONAME
-	_ZTV17TMockLtsyData2BufIP6TDesC8S1_E @ 821 NONAME
-	_ZTV17TMockLtsyData2BufIP6TDesC8iE @ 822 NONAME
-	_ZTV17TMockLtsyData2BufIh4TBufILi10EEE @ 823 NONAME
-	_ZTV17TMockLtsyData2BufIhiE @ 824 NONAME
-	_ZTV17TMockLtsyData2BufIiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 825 NONAME
-	_ZTV17TMockLtsyData2BufIiP7TSmsMsgE @ 826 NONAME
-	_ZTV17TMockLtsyData2BufIiiE @ 827 NONAME
-	_ZTV17TMockLtsyData2BufIjiE @ 828 NONAME
-	_ZTV17TMockLtsyData2BufIlaE @ 829 NONAME
-	_ZTV17TMockLtsyData2BufIs5TBuf8ILi165EEE @ 830 NONAME
-	_ZTV18CMockLtsyFactoryV1 @ 831 NONAME
-	_ZTV18CMockLtsyFactoryV2 @ 832 NONAME
-	_ZTV18CMockLtsyFactoryV3 @ 833 NONAME
-	_ZTV18TMockLtsyCallData1I4TBufILi129EEE @ 834 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall16TMobileCallEventEE @ 835 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall17TMobileCallInfoV1EE @ 836 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall17TMobileCallStatusEE @ 837 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV1EE @ 838 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV2EE @ 839 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV7EE @ 840 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall21TMobileCallDataCapsV1EE @ 841 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall22TMobileCallHscsdInfoV8EE @ 842 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV1EE @ 843 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV2EE @ 844 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV8EE @ 845 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV1EE @ 846 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV2EE @ 847 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV7EE @ 848 NONAME
-	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV8EE @ 849 NONAME
-	_ZTV18TMockLtsyCallData1IN12RMobilePhone19TMobilePhonePrivacyEE @ 850 NONAME
-	_ZTV18TMockLtsyCallData1IN5RCall14TBearerServiceEE @ 851 NONAME
-	_ZTV18TMockLtsyCallData1IN5RCall7TStatusEE @ 852 NONAME
-	_ZTV18TMockLtsyCallData1IN5RCall9TCommPortEE @ 853 NONAME
-	_ZTV18TMockLtsyCallData1IiE @ 854 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 855 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 856 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 857 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 858 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 859 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 860 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 861 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 862 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 863 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 864 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 865 NONAME
-	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 866 NONAME
-	_ZTV18TMockLtsyCallData2IiiE @ 867 NONAME
-	_ZTV19CMockSmsMessHandler @ 868 NONAME
-	_ZTV20CMockCallMessHandler @ 869 NONAME
-	_ZTV21CMockPhoneMessHandler @ 870 NONAME
-	_ZTV21TMockLtsyCallData1BufI4TBufILi129EEE @ 871 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall16TMobileCallEventEE @ 872 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallInfoV1EE @ 873 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallStatusEE @ 874 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV1EE @ 875 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV2EE @ 876 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV7EE @ 877 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall21TMobileCallDataCapsV1EE @ 878 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall22TMobileCallHscsdInfoV8EE @ 879 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV1EE @ 880 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV2EE @ 881 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV8EE @ 882 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV1EE @ 883 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV2EE @ 884 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV7EE @ 885 NONAME
-	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV8EE @ 886 NONAME
-	_ZTV21TMockLtsyCallData1BufIN12RMobilePhone19TMobilePhonePrivacyEE @ 887 NONAME
-	_ZTV21TMockLtsyCallData1BufIN5RCall14TBearerServiceEE @ 888 NONAME
-	_ZTV21TMockLtsyCallData1BufIN5RCall7TStatusEE @ 889 NONAME
-	_ZTV21TMockLtsyCallData1BufIN5RCall9TCommPortEE @ 890 NONAME
-	_ZTV21TMockLtsyCallData1BufIiE @ 891 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 892 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 893 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 894 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 895 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 896 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 897 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 898 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 899 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 900 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 901 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 902 NONAME
-	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 903 NONAME
-	_ZTV21TMockLtsyCallData2BufIiiE @ 904 NONAME
-	_ZTV21TMockLtsyContextData1I4TBufILi16EEE @ 905 NONAME
-	_ZTV21TMockLtsyContextData2I4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 906 NONAME
-	_ZTV21TMockLtsyContextData2I4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 907 NONAME
-	_ZTV23CMockPcktQoSMessHandler @ 908 NONAME
-	_ZTV23TMockLtsyPacketQoSData1I4TBufILi16EEE @ 909 NONAME
-	_ZTV23TMockLtsyPhoneBookData1I10TPBFdnInfoE @ 910 NONAME
-	_ZTV23TMockLtsyPhoneBookData1I12TPBEntryInfoE @ 911 NONAME
-	_ZTV23TMockLtsyPhoneBookData1I16CStorageInfoDataE @ 912 NONAME
-	_ZTV23TMockLtsyPhoneBookData1IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 913 NONAME
-	_ZTV23TMockLtsyPhoneBookData1IP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 914 NONAME
-	_ZTV23TMockLtsyPhoneBookData1IiE @ 915 NONAME
-	_ZTV23TMockLtsyPhoneBookData2IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 916 NONAME ABSENT
-	_ZTV23TMockLtsyPhoneBookData2IiP20CPhoneBookStoreEntryE @ 917 NONAME
-	_ZTV24TMockLtsyContextData1BufI4TBufILi16EEE @ 918 NONAME
-	_ZTV24TMockLtsyContextData2BufI4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 919 NONAME
-	_ZTV24TMockLtsyContextData2BufI4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 920 NONAME
-	_ZTV26CMmCustomMessHandlerGsmExt @ 921 NONAME
-	_ZTV26CMockTelephonyAudioControl @ 922 NONAME
-	_ZTV26TMockLtsyPhoneBookData1BufI10TPBFdnInfoE @ 923 NONAME
-	_ZTV26TMockLtsyPhoneBookData1BufI12TPBEntryInfoE @ 924 NONAME
-	_ZTV26TMockLtsyPhoneBookData1BufI16CStorageInfoDataE @ 925 NONAME
-	_ZTV26TMockLtsyPhoneBookData1BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 926 NONAME
-	_ZTV26TMockLtsyPhoneBookData1BufIP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 927 NONAME
-	_ZTV26TMockLtsyPhoneBookData1BufIiE @ 928 NONAME
-	_ZTV26TMockLtsyPhoneBookData2BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 929 NONAME ABSENT
-	_ZTV26TMockLtsyPhoneBookData2BufIiP20CPhoneBookStoreEntryE @ 930 NONAME
-	_ZTV27CMockPcktContextMessHandler @ 931 NONAME
-	_ZTV27CMockPcktServiceMessHandler @ 932 NONAME
-	_ZTV30CMockPhoneBookStoreMessHandler @ 933 NONAME
-	_ZTI14TMockLtsyData1IN12RMobilePhone21TMobilePhoneDTMFEventEE @ 934 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneDTMFEventEE @ 935 NONAME
-	_ZTV14TMockLtsyData1IN12RMobilePhone21TMobilePhoneDTMFEventEE @ 936 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneDTMFEventEE @ 937 NONAME
-	_ZTI14TMockLtsyData1IN12RMmCustomAPI15TApduParametersEE @ 938 NONAME
-	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI15TApduParametersEE @ 939 NONAME
-	_ZTV14TMockLtsyData1IN12RMmCustomAPI15TApduParametersEE @ 940 NONAME
-	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI15TApduParametersEE @ 941 NONAME
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/eabi/mocklicenseetsyu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,943 @@
+EXPORTS
+	_Z12LTsyFactoryLv @ 1 NONAME
+	_ZTI14TMockLtsyData1I10TGsmCbsMsgE @ 2 NONAME
+	_ZTI14TMockLtsyData1I11TONStoreMsgE @ 3 NONAME
+	_ZTI14TMockLtsyData1I12TRfStateInfoE @ 4 NONAME
+	_ZTI14TMockLtsyData1I12TServiceTypeE @ 5 NONAME
+	_ZTI14TMockLtsyData1I14TContextParamsE @ 6 NONAME
+	_ZTI14TMockLtsyData1I16TENStoreResponseE @ 7 NONAME
+	_ZTI14TMockLtsyData1I20TLockSettingPasswordE @ 8 NONAME
+	_ZTI14TMockLtsyData1I21TContextConfigurationE @ 9 NONAME
+	_ZTI14TMockLtsyData1I24TCbsCbmiAndLangAndFilterE @ 10 NONAME
+	_ZTI14TMockLtsyData1I25TMbmsNetworkServiceStatusE @ 11 NONAME
+	_ZTI14TMockLtsyData1I25TSendSmsDataAndAttributesE @ 12 NONAME
+	_ZTI14TMockLtsyData1I31TMmMbmsMonitorServiceListParamsE @ 13 NONAME
+	_ZTI14TMockLtsyData1I4TBufILi10EEE @ 14 NONAME
+	_ZTI14TMockLtsyData1I4TBufILi128EEE @ 15 NONAME
+	_ZTI14TMockLtsyData1I4TBufILi15EEE @ 16 NONAME
+	_ZTI14TMockLtsyData1I4TBufILi16EEE @ 17 NONAME
+	_ZTI14TMockLtsyData1I4TBufILi32EEE @ 18 NONAME
+	_ZTI14TMockLtsyData1I4TBufILi6EEE @ 19 NONAME
+	_ZTI14TMockLtsyData1I5TBuf8ILi128EEE @ 20 NONAME
+	_ZTI14TMockLtsyData1I5TBuf8ILi15EEE @ 21 NONAME
+	_ZTI14TMockLtsyData1I5TBuf8ILi16EEE @ 22 NONAME
+	_ZTI14TMockLtsyData1I5TCharE @ 23 NONAME
+	_ZTI14TMockLtsyData1I5TTimeE @ 24 NONAME
+	_ZTI14TMockLtsyData1I7TSmsMsgE @ 25 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI11TAlsSupportEE @ 26 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI11TOperatorIdEE @ 27 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI11TViagParamsEE @ 28 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI12THSxPAStatusEE @ 29 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI12TSetAlsBlockEE @ 30 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI12TSimFileInfoEE @ 31 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI13TSetDriveModeEE @ 32 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI14TBandSelectionEE @ 33 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI16TNetworkModeCapsEE @ 34 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI16TSetAlwaysOnModeEE @ 35 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI18TGetAlsBlockStatusEE @ 36 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI18TViagCacheRecordIdEE @ 37 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI19TViagUHZIUESettingsEE @ 38 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI20TEmerNumberCheckModeEE @ 39 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI5TApduEE @ 40 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI9TDtmfInfoEE @ 41 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone11TAPNEntryV3EE @ 42 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone14TMobileServiceEE @ 43 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone16TMobilePhoneLockEE @ 44 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone16TMobilePhoneNITZEE @ 45 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone19TMobilePhoneALSLineEE @ 46 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone21TMobilePhoneFdnStatusEE @ 47 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone21TMobilePhoneIdServiceEE @ 48 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone22TImsAuthenticateDataV5EE @ 49 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 50 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 51 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockStatusEE @ 52 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCBConditionEE @ 53 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCFConditionEE @ 54 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone23TMobilePhoneNetworkModeEE @ 55 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 56 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone24TMobilePhoneServiceTableEE @ 57 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 58 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 59 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 60 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 61 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 62 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 63 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone25TMobilePhoneSecurityEventEE @ 64 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 65 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 66 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 67 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 68 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone28TAPNControlListServiceStatusEE @ 69 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 70 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 71 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 72 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 73 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 74 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 75 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 76 NONAME
+	_ZTI14TMockLtsyData1IN14RMobileONStore16TMobileONEntryV1EE @ 77 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketContext17TContextConfig_R5EE @ 78 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketContext18TContextConfigCDMAEE @ 79 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketContext18TContextConfigGPRSEE @ 80 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketContext20TContextConfigR99_R4EE @ 81 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketService11TAttachModeEE @ 82 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketService16TPreferredBearerEE @ 83 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketService19TRegistrationStatusEE @ 84 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketService7TStatusEE @ 85 NONAME
+	_ZTI14TMockLtsyData1IN14RPacketService8TMSClassEE @ 86 NONAME
+	_ZTI14TMockLtsyData1IN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 87 NONAME
+	_ZTI14TMockLtsyData1IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 88 NONAME
+	_ZTI14TMockLtsyData1IN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 89 NONAME
+	_ZTI14TMockLtsyData1IN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 90 NONAME
+	_ZTI14TMockLtsyData1IN19RMobileSmsMessaging16TMobileSmsBearerEE @ 91 NONAME
+	_ZTI14TMockLtsyData1IN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 92 NONAME
+	_ZTI14TMockLtsyData1IN6RPhone7TStatusEE @ 93 NONAME
+	_ZTI14TMockLtsyData1IP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 94 NONAME
+	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 95 NONAME
+	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI14TSmsParametersEE @ 96 NONAME
+	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI16TENStoreResponseEE @ 97 NONAME
+	_ZTI14TMockLtsyData1IP13CArrayPtrFlatI7TSmsMsgEE @ 98 NONAME
+	_ZTI14TMockLtsyData1IP18CMobilePhoneCFListE @ 99 NONAME
+	_ZTI14TMockLtsyData1IP18CMobilePhoneCWListE @ 100 NONAME
+	_ZTI14TMockLtsyData1IP25CMobilePhoneNetworkListV2E @ 101 NONAME
+	_ZTI14TMockLtsyData1IP27CMobilePhoneBroadcastIdListE @ 102 NONAME
+	_ZTI14TMockLtsyData1IP29CPcktMbmsMonitoredServiceListE @ 103 NONAME
+	_ZTI14TMockLtsyData1IP4TBufILi100EEE @ 104 NONAME
+	_ZTI14TMockLtsyData1IP6TDesC8E @ 105 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI20TSimCardReaderStatusEE @ 106 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 107 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 108 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 109 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 110 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 111 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 112 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 113 NONAME
+	_ZTI14TMockLtsyData1IPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 114 NONAME
+	_ZTI14TMockLtsyData1IhE @ 115 NONAME
+	_ZTI14TMockLtsyData1IiE @ 116 NONAME
+	_ZTI14TMockLtsyData1IjE @ 117 NONAME
+	_ZTI14TMockLtsyData1IlE @ 118 NONAME
+	_ZTI14TMockLtsyData1ImE @ 119 NONAME
+	_ZTI14TMockLtsyData1IsE @ 120 NONAME
+	_ZTI14TMockLtsyData1ItE @ 121 NONAME
+	_ZTI14TMockLtsyData2I14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 122 NONAME
+	_ZTI14TMockLtsyData2I14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 123 NONAME
+	_ZTI14TMockLtsyData2I14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 124 NONAME
+	_ZTI14TMockLtsyData2I21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 125 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 126 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 127 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EE12TContextMiscE @ 128 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 129 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EE5TBuf8ILi1EEE @ 130 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 131 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 132 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 133 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 134 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 135 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 136 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EES1_E @ 137 NONAME
+	_ZTI14TMockLtsyData2I4TBufILi16EEiE @ 138 NONAME
+	_ZTI14TMockLtsyData2I5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 139 NONAME
+	_ZTI14TMockLtsyData2I5TTimeiE @ 140 NONAME
+	_ZTI14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 141 NONAME
+	_ZTI14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 142 NONAME
+	_ZTI14TMockLtsyData2IN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 143 NONAME
+	_ZTI14TMockLtsyData2IN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 144 NONAME
+	_ZTI14TMockLtsyData2IN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 145 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 146 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 147 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 148 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 149 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 150 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 151 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 152 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 153 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 154 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 155 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 156 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 157 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 158 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 159 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 160 NONAME
+	_ZTI14TMockLtsyData2IN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 161 NONAME
+	_ZTI14TMockLtsyData2IN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 162 NONAME
+	_ZTI14TMockLtsyData2IN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 163 NONAME
+	_ZTI14TMockLtsyData2IN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 164 NONAME
+	_ZTI14TMockLtsyData2IN14RPacketService7TStatusEiE @ 165 NONAME
+	_ZTI14TMockLtsyData2IN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 166 NONAME
+	_ZTI14TMockLtsyData2IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 167 NONAME
+	_ZTI14TMockLtsyData2IN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 168 NONAME
+	_ZTI14TMockLtsyData2IP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 169 NONAME
+	_ZTI14TMockLtsyData2IP13CArrayPtrFlatI7TSmsMsgEiE @ 170 NONAME
+	_ZTI14TMockLtsyData2IP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 171 NONAME
+	_ZTI14TMockLtsyData2IP6TDesC8S1_E @ 172 NONAME
+	_ZTI14TMockLtsyData2IP6TDesC8iE @ 173 NONAME
+	_ZTI14TMockLtsyData2Ih4TBufILi10EEE @ 174 NONAME
+	_ZTI14TMockLtsyData2IhiE @ 175 NONAME
+	_ZTI14TMockLtsyData2IiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 176 NONAME
+	_ZTI14TMockLtsyData2IiP7TSmsMsgE @ 177 NONAME
+	_ZTI14TMockLtsyData2IiiE @ 178 NONAME
+	_ZTI14TMockLtsyData2IjiE @ 179 NONAME
+	_ZTI14TMockLtsyData2IlaE @ 180 NONAME
+	_ZTI14TMockLtsyData2Is5TBuf8ILi165EEE @ 181 NONAME
+	_ZTI15CMockLtsyEngine @ 182 NONAME
+	_ZTI16CMmCustomStubExt @ 183 NONAME
+	_ZTI16CMmMessageRouter @ 184 NONAME
+	_ZTI17TMockLtsyData1BufI10TGsmCbsMsgE @ 185 NONAME
+	_ZTI17TMockLtsyData1BufI11TONStoreMsgE @ 186 NONAME
+	_ZTI17TMockLtsyData1BufI12TRfStateInfoE @ 187 NONAME
+	_ZTI17TMockLtsyData1BufI12TServiceTypeE @ 188 NONAME
+	_ZTI17TMockLtsyData1BufI14TContextParamsE @ 189 NONAME
+	_ZTI17TMockLtsyData1BufI16TENStoreResponseE @ 190 NONAME
+	_ZTI17TMockLtsyData1BufI20TLockSettingPasswordE @ 191 NONAME
+	_ZTI17TMockLtsyData1BufI21TContextConfigurationE @ 192 NONAME
+	_ZTI17TMockLtsyData1BufI24TCbsCbmiAndLangAndFilterE @ 193 NONAME
+	_ZTI17TMockLtsyData1BufI25TMbmsNetworkServiceStatusE @ 194 NONAME
+	_ZTI17TMockLtsyData1BufI25TSendSmsDataAndAttributesE @ 195 NONAME
+	_ZTI17TMockLtsyData1BufI31TMmMbmsMonitorServiceListParamsE @ 196 NONAME
+	_ZTI17TMockLtsyData1BufI4TBufILi10EEE @ 197 NONAME
+	_ZTI17TMockLtsyData1BufI4TBufILi128EEE @ 198 NONAME
+	_ZTI17TMockLtsyData1BufI4TBufILi15EEE @ 199 NONAME
+	_ZTI17TMockLtsyData1BufI4TBufILi16EEE @ 200 NONAME
+	_ZTI17TMockLtsyData1BufI4TBufILi32EEE @ 201 NONAME
+	_ZTI17TMockLtsyData1BufI4TBufILi6EEE @ 202 NONAME
+	_ZTI17TMockLtsyData1BufI5TBuf8ILi128EEE @ 203 NONAME
+	_ZTI17TMockLtsyData1BufI5TBuf8ILi15EEE @ 204 NONAME
+	_ZTI17TMockLtsyData1BufI5TBuf8ILi16EEE @ 205 NONAME
+	_ZTI17TMockLtsyData1BufI5TCharE @ 206 NONAME
+	_ZTI17TMockLtsyData1BufI5TTimeE @ 207 NONAME
+	_ZTI17TMockLtsyData1BufI7TSmsMsgE @ 208 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI11TAlsSupportEE @ 209 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI11TOperatorIdEE @ 210 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI11TViagParamsEE @ 211 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI12THSxPAStatusEE @ 212 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI12TSetAlsBlockEE @ 213 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI12TSimFileInfoEE @ 214 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI13TSetDriveModeEE @ 215 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI14TBandSelectionEE @ 216 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI16TNetworkModeCapsEE @ 217 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI16TSetAlwaysOnModeEE @ 218 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI18TGetAlsBlockStatusEE @ 219 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI18TViagCacheRecordIdEE @ 220 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI19TViagUHZIUESettingsEE @ 221 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI20TEmerNumberCheckModeEE @ 222 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI5TApduEE @ 223 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI9TDtmfInfoEE @ 224 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone11TAPNEntryV3EE @ 225 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone14TMobileServiceEE @ 226 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneLockEE @ 227 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneNITZEE @ 228 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone19TMobilePhoneALSLineEE @ 229 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneFdnStatusEE @ 230 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneIdServiceEE @ 231 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TImsAuthenticateDataV5EE @ 232 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 233 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 234 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockStatusEE @ 235 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCBConditionEE @ 236 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCFConditionEE @ 237 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneNetworkModeEE @ 238 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 239 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneServiceTableEE @ 240 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 241 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 242 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 243 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 244 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 245 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 246 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneSecurityEventEE @ 247 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 248 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 249 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 250 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 251 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone28TAPNControlListServiceStatusEE @ 252 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 253 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 254 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 255 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 256 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 257 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 258 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 259 NONAME
+	_ZTI17TMockLtsyData1BufIN14RMobileONStore16TMobileONEntryV1EE @ 260 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketContext17TContextConfig_R5EE @ 261 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketContext18TContextConfigCDMAEE @ 262 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketContext18TContextConfigGPRSEE @ 263 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketContext20TContextConfigR99_R4EE @ 264 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketService11TAttachModeEE @ 265 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketService16TPreferredBearerEE @ 266 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketService19TRegistrationStatusEE @ 267 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketService7TStatusEE @ 268 NONAME
+	_ZTI17TMockLtsyData1BufIN14RPacketService8TMSClassEE @ 269 NONAME
+	_ZTI17TMockLtsyData1BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 270 NONAME
+	_ZTI17TMockLtsyData1BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 271 NONAME
+	_ZTI17TMockLtsyData1BufIN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 272 NONAME
+	_ZTI17TMockLtsyData1BufIN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 273 NONAME
+	_ZTI17TMockLtsyData1BufIN19RMobileSmsMessaging16TMobileSmsBearerEE @ 274 NONAME
+	_ZTI17TMockLtsyData1BufIN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 275 NONAME
+	_ZTI17TMockLtsyData1BufIN6RPhone7TStatusEE @ 276 NONAME
+	_ZTI17TMockLtsyData1BufIP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 277 NONAME
+	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 278 NONAME
+	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI14TSmsParametersEE @ 279 NONAME
+	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI16TENStoreResponseEE @ 280 NONAME
+	_ZTI17TMockLtsyData1BufIP13CArrayPtrFlatI7TSmsMsgEE @ 281 NONAME
+	_ZTI17TMockLtsyData1BufIP18CMobilePhoneCFListE @ 282 NONAME
+	_ZTI17TMockLtsyData1BufIP18CMobilePhoneCWListE @ 283 NONAME
+	_ZTI17TMockLtsyData1BufIP25CMobilePhoneNetworkListV2E @ 284 NONAME
+	_ZTI17TMockLtsyData1BufIP27CMobilePhoneBroadcastIdListE @ 285 NONAME
+	_ZTI17TMockLtsyData1BufIP29CPcktMbmsMonitoredServiceListE @ 286 NONAME
+	_ZTI17TMockLtsyData1BufIP4TBufILi100EEE @ 287 NONAME
+	_ZTI17TMockLtsyData1BufIP6TDesC8E @ 288 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI20TSimCardReaderStatusEE @ 289 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 290 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 291 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 292 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 293 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 294 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 295 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 296 NONAME
+	_ZTI17TMockLtsyData1BufIPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 297 NONAME
+	_ZTI17TMockLtsyData1BufIhE @ 298 NONAME
+	_ZTI17TMockLtsyData1BufIiE @ 299 NONAME
+	_ZTI17TMockLtsyData1BufIjE @ 300 NONAME
+	_ZTI17TMockLtsyData1BufIlE @ 301 NONAME
+	_ZTI17TMockLtsyData1BufImE @ 302 NONAME
+	_ZTI17TMockLtsyData1BufIsE @ 303 NONAME
+	_ZTI17TMockLtsyData1BufItE @ 304 NONAME
+	_ZTI17TMockLtsyData2BufI14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 305 NONAME
+	_ZTI17TMockLtsyData2BufI14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 306 NONAME
+	_ZTI17TMockLtsyData2BufI14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 307 NONAME
+	_ZTI17TMockLtsyData2BufI21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 308 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 309 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 310 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EE12TContextMiscE @ 311 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 312 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EE5TBuf8ILi1EEE @ 313 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 314 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 315 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 316 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 317 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 318 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 319 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EES1_E @ 320 NONAME
+	_ZTI17TMockLtsyData2BufI4TBufILi16EEiE @ 321 NONAME
+	_ZTI17TMockLtsyData2BufI5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 322 NONAME
+	_ZTI17TMockLtsyData2BufI5TTimeiE @ 323 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 324 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 325 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 326 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 327 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 328 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 329 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 330 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 331 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 332 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 333 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 334 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 335 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 336 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 337 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 338 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 339 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 340 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 341 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 342 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 343 NONAME
+	_ZTI17TMockLtsyData2BufIN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 344 NONAME
+	_ZTI17TMockLtsyData2BufIN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 345 NONAME
+	_ZTI17TMockLtsyData2BufIN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 346 NONAME
+	_ZTI17TMockLtsyData2BufIN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 347 NONAME
+	_ZTI17TMockLtsyData2BufIN14RPacketService7TStatusEiE @ 348 NONAME
+	_ZTI17TMockLtsyData2BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 349 NONAME
+	_ZTI17TMockLtsyData2BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 350 NONAME
+	_ZTI17TMockLtsyData2BufIN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 351 NONAME
+	_ZTI17TMockLtsyData2BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 352 NONAME
+	_ZTI17TMockLtsyData2BufIP13CArrayPtrFlatI7TSmsMsgEiE @ 353 NONAME
+	_ZTI17TMockLtsyData2BufIP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 354 NONAME
+	_ZTI17TMockLtsyData2BufIP6TDesC8S1_E @ 355 NONAME
+	_ZTI17TMockLtsyData2BufIP6TDesC8iE @ 356 NONAME
+	_ZTI17TMockLtsyData2BufIh4TBufILi10EEE @ 357 NONAME
+	_ZTI17TMockLtsyData2BufIhiE @ 358 NONAME
+	_ZTI17TMockLtsyData2BufIiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 359 NONAME
+	_ZTI17TMockLtsyData2BufIiP7TSmsMsgE @ 360 NONAME
+	_ZTI17TMockLtsyData2BufIiiE @ 361 NONAME
+	_ZTI17TMockLtsyData2BufIjiE @ 362 NONAME
+	_ZTI17TMockLtsyData2BufIlaE @ 363 NONAME
+	_ZTI17TMockLtsyData2BufIs5TBuf8ILi165EEE @ 364 NONAME
+	_ZTI18CMockLtsyFactoryV1 @ 365 NONAME
+	_ZTI18CMockLtsyFactoryV2 @ 366 NONAME
+	_ZTI18CMockLtsyFactoryV3 @ 367 NONAME
+	_ZTI18TMockLtsyCallData1I4TBufILi129EEE @ 368 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall16TMobileCallEventEE @ 369 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall17TMobileCallInfoV1EE @ 370 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall17TMobileCallStatusEE @ 371 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV1EE @ 372 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV2EE @ 373 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV7EE @ 374 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall21TMobileCallDataCapsV1EE @ 375 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall22TMobileCallHscsdInfoV8EE @ 376 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV1EE @ 377 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV2EE @ 378 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV8EE @ 379 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV1EE @ 380 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV2EE @ 381 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV7EE @ 382 NONAME
+	_ZTI18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV8EE @ 383 NONAME
+	_ZTI18TMockLtsyCallData1IN12RMobilePhone19TMobilePhonePrivacyEE @ 384 NONAME
+	_ZTI18TMockLtsyCallData1IN5RCall14TBearerServiceEE @ 385 NONAME
+	_ZTI18TMockLtsyCallData1IN5RCall7TStatusEE @ 386 NONAME
+	_ZTI18TMockLtsyCallData1IN5RCall9TCommPortEE @ 387 NONAME
+	_ZTI18TMockLtsyCallData1IiE @ 388 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 389 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 390 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 391 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 392 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 393 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 394 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 395 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 396 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 397 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 398 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 399 NONAME
+	_ZTI18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 400 NONAME
+	_ZTI18TMockLtsyCallData2IiiE @ 401 NONAME
+	_ZTI19CMockSmsMessHandler @ 402 NONAME
+	_ZTI20CMockCallMessHandler @ 403 NONAME
+	_ZTI21CMockPhoneMessHandler @ 404 NONAME
+	_ZTI21TMockLtsyCallData1BufI4TBufILi129EEE @ 405 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall16TMobileCallEventEE @ 406 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallInfoV1EE @ 407 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallStatusEE @ 408 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV1EE @ 409 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV2EE @ 410 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV7EE @ 411 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall21TMobileCallDataCapsV1EE @ 412 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall22TMobileCallHscsdInfoV8EE @ 413 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV1EE @ 414 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV2EE @ 415 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV8EE @ 416 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV1EE @ 417 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV2EE @ 418 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV7EE @ 419 NONAME
+	_ZTI21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV8EE @ 420 NONAME
+	_ZTI21TMockLtsyCallData1BufIN12RMobilePhone19TMobilePhonePrivacyEE @ 421 NONAME
+	_ZTI21TMockLtsyCallData1BufIN5RCall14TBearerServiceEE @ 422 NONAME
+	_ZTI21TMockLtsyCallData1BufIN5RCall7TStatusEE @ 423 NONAME
+	_ZTI21TMockLtsyCallData1BufIN5RCall9TCommPortEE @ 424 NONAME
+	_ZTI21TMockLtsyCallData1BufIiE @ 425 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 426 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 427 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 428 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 429 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 430 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 431 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 432 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 433 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 434 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 435 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 436 NONAME
+	_ZTI21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 437 NONAME
+	_ZTI21TMockLtsyCallData2BufIiiE @ 438 NONAME
+	_ZTI21TMockLtsyContextData1I4TBufILi16EEE @ 439 NONAME
+	_ZTI21TMockLtsyContextData2I4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 440 NONAME
+	_ZTI21TMockLtsyContextData2I4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 441 NONAME
+	_ZTI23CMockPcktQoSMessHandler @ 442 NONAME
+	_ZTI23TMockLtsyPacketQoSData1I4TBufILi16EEE @ 443 NONAME
+	_ZTI23TMockLtsyPhoneBookData1I10TPBFdnInfoE @ 444 NONAME
+	_ZTI23TMockLtsyPhoneBookData1I12TPBEntryInfoE @ 445 NONAME
+	_ZTI23TMockLtsyPhoneBookData1I16CStorageInfoDataE @ 446 NONAME
+	_ZTI23TMockLtsyPhoneBookData1IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 447 NONAME
+	_ZTI23TMockLtsyPhoneBookData1IP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 448 NONAME
+	_ZTI23TMockLtsyPhoneBookData1IiE @ 449 NONAME
+	_ZTI23TMockLtsyPhoneBookData2IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 450 NONAME ABSENT
+	_ZTI23TMockLtsyPhoneBookData2IiP20CPhoneBookStoreEntryE @ 451 NONAME
+	_ZTI24TMockLtsyContextData1BufI4TBufILi16EEE @ 452 NONAME
+	_ZTI24TMockLtsyContextData2BufI4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 453 NONAME
+	_ZTI24TMockLtsyContextData2BufI4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 454 NONAME
+	_ZTI26CMmCustomMessHandlerGsmExt @ 455 NONAME
+	_ZTI26CMockTelephonyAudioControl @ 456 NONAME
+	_ZTI26TMockLtsyPhoneBookData1BufI10TPBFdnInfoE @ 457 NONAME
+	_ZTI26TMockLtsyPhoneBookData1BufI12TPBEntryInfoE @ 458 NONAME
+	_ZTI26TMockLtsyPhoneBookData1BufI16CStorageInfoDataE @ 459 NONAME
+	_ZTI26TMockLtsyPhoneBookData1BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 460 NONAME
+	_ZTI26TMockLtsyPhoneBookData1BufIP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 461 NONAME
+	_ZTI26TMockLtsyPhoneBookData1BufIiE @ 462 NONAME
+	_ZTI26TMockLtsyPhoneBookData2BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 463 NONAME ABSENT
+	_ZTI26TMockLtsyPhoneBookData2BufIiP20CPhoneBookStoreEntryE @ 464 NONAME
+	_ZTI27CMockPcktContextMessHandler @ 465 NONAME
+	_ZTI27CMockPcktServiceMessHandler @ 466 NONAME
+	_ZTI30CMockPhoneBookStoreMessHandler @ 467 NONAME
+	_ZTV14TMockLtsyData1I10TGsmCbsMsgE @ 468 NONAME
+	_ZTV14TMockLtsyData1I11TONStoreMsgE @ 469 NONAME
+	_ZTV14TMockLtsyData1I12TRfStateInfoE @ 470 NONAME
+	_ZTV14TMockLtsyData1I12TServiceTypeE @ 471 NONAME
+	_ZTV14TMockLtsyData1I14TContextParamsE @ 472 NONAME
+	_ZTV14TMockLtsyData1I16TENStoreResponseE @ 473 NONAME
+	_ZTV14TMockLtsyData1I20TLockSettingPasswordE @ 474 NONAME
+	_ZTV14TMockLtsyData1I21TContextConfigurationE @ 475 NONAME
+	_ZTV14TMockLtsyData1I24TCbsCbmiAndLangAndFilterE @ 476 NONAME
+	_ZTV14TMockLtsyData1I25TMbmsNetworkServiceStatusE @ 477 NONAME
+	_ZTV14TMockLtsyData1I25TSendSmsDataAndAttributesE @ 478 NONAME
+	_ZTV14TMockLtsyData1I31TMmMbmsMonitorServiceListParamsE @ 479 NONAME
+	_ZTV14TMockLtsyData1I4TBufILi10EEE @ 480 NONAME
+	_ZTV14TMockLtsyData1I4TBufILi128EEE @ 481 NONAME
+	_ZTV14TMockLtsyData1I4TBufILi15EEE @ 482 NONAME
+	_ZTV14TMockLtsyData1I4TBufILi16EEE @ 483 NONAME
+	_ZTV14TMockLtsyData1I4TBufILi32EEE @ 484 NONAME
+	_ZTV14TMockLtsyData1I4TBufILi6EEE @ 485 NONAME
+	_ZTV14TMockLtsyData1I5TBuf8ILi128EEE @ 486 NONAME
+	_ZTV14TMockLtsyData1I5TBuf8ILi15EEE @ 487 NONAME
+	_ZTV14TMockLtsyData1I5TBuf8ILi16EEE @ 488 NONAME
+	_ZTV14TMockLtsyData1I5TCharE @ 489 NONAME
+	_ZTV14TMockLtsyData1I5TTimeE @ 490 NONAME
+	_ZTV14TMockLtsyData1I7TSmsMsgE @ 491 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI11TAlsSupportEE @ 492 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI11TOperatorIdEE @ 493 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI11TViagParamsEE @ 494 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI12THSxPAStatusEE @ 495 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI12TSetAlsBlockEE @ 496 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI12TSimFileInfoEE @ 497 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI13TSetDriveModeEE @ 498 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI14TBandSelectionEE @ 499 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI16TNetworkModeCapsEE @ 500 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI16TSetAlwaysOnModeEE @ 501 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI18TGetAlsBlockStatusEE @ 502 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI18TViagCacheRecordIdEE @ 503 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI19TViagUHZIUESettingsEE @ 504 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI20TEmerNumberCheckModeEE @ 505 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI5TApduEE @ 506 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI9TDtmfInfoEE @ 507 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone11TAPNEntryV3EE @ 508 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone14TMobileServiceEE @ 509 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone16TMobilePhoneLockEE @ 510 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone16TMobilePhoneNITZEE @ 511 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone19TMobilePhoneALSLineEE @ 512 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone21TMobilePhoneFdnStatusEE @ 513 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone21TMobilePhoneIdServiceEE @ 514 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone22TImsAuthenticateDataV5EE @ 515 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 516 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 517 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone22TMobilePhoneLockStatusEE @ 518 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCBConditionEE @ 519 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone23TMobilePhoneCFConditionEE @ 520 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone23TMobilePhoneNetworkModeEE @ 521 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 522 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone24TMobilePhoneServiceTableEE @ 523 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 524 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 525 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 526 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 527 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 528 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 529 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone25TMobilePhoneSecurityEventEE @ 530 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 531 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 532 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 533 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 534 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone28TAPNControlListServiceStatusEE @ 535 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 536 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 537 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 538 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 539 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 540 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 541 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 542 NONAME
+	_ZTV14TMockLtsyData1IN14RMobileONStore16TMobileONEntryV1EE @ 543 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketContext17TContextConfig_R5EE @ 544 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketContext18TContextConfigCDMAEE @ 545 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketContext18TContextConfigGPRSEE @ 546 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketContext20TContextConfigR99_R4EE @ 547 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketService11TAttachModeEE @ 548 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketService16TPreferredBearerEE @ 549 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketService19TRegistrationStatusEE @ 550 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketService7TStatusEE @ 551 NONAME
+	_ZTV14TMockLtsyData1IN14RPacketService8TMSClassEE @ 552 NONAME
+	_ZTV14TMockLtsyData1IN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 553 NONAME
+	_ZTV14TMockLtsyData1IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 554 NONAME
+	_ZTV14TMockLtsyData1IN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 555 NONAME
+	_ZTV14TMockLtsyData1IN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 556 NONAME
+	_ZTV14TMockLtsyData1IN19RMobileSmsMessaging16TMobileSmsBearerEE @ 557 NONAME
+	_ZTV14TMockLtsyData1IN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 558 NONAME
+	_ZTV14TMockLtsyData1IN6RPhone7TStatusEE @ 559 NONAME
+	_ZTV14TMockLtsyData1IP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 560 NONAME
+	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 561 NONAME
+	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI14TSmsParametersEE @ 562 NONAME
+	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI16TENStoreResponseEE @ 563 NONAME
+	_ZTV14TMockLtsyData1IP13CArrayPtrFlatI7TSmsMsgEE @ 564 NONAME
+	_ZTV14TMockLtsyData1IP18CMobilePhoneCFListE @ 565 NONAME
+	_ZTV14TMockLtsyData1IP18CMobilePhoneCWListE @ 566 NONAME
+	_ZTV14TMockLtsyData1IP25CMobilePhoneNetworkListV2E @ 567 NONAME
+	_ZTV14TMockLtsyData1IP27CMobilePhoneBroadcastIdListE @ 568 NONAME
+	_ZTV14TMockLtsyData1IP29CPcktMbmsMonitoredServiceListE @ 569 NONAME
+	_ZTV14TMockLtsyData1IP4TBufILi100EEE @ 570 NONAME
+	_ZTV14TMockLtsyData1IP6TDesC8E @ 571 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI20TSimCardReaderStatusEE @ 572 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 573 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 574 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 575 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 576 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 577 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 578 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 579 NONAME
+	_ZTV14TMockLtsyData1IPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 580 NONAME
+	_ZTV14TMockLtsyData1IhE @ 581 NONAME
+	_ZTV14TMockLtsyData1IiE @ 582 NONAME
+	_ZTV14TMockLtsyData1IjE @ 583 NONAME
+	_ZTV14TMockLtsyData1IlE @ 584 NONAME
+	_ZTV14TMockLtsyData1ImE @ 585 NONAME
+	_ZTV14TMockLtsyData1IsE @ 586 NONAME
+	_ZTV14TMockLtsyData1ItE @ 587 NONAME
+	_ZTV14TMockLtsyData2I14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 588 NONAME
+	_ZTV14TMockLtsyData2I14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 589 NONAME
+	_ZTV14TMockLtsyData2I14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 590 NONAME
+	_ZTV14TMockLtsyData2I21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 591 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 592 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 593 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EE12TContextMiscE @ 594 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 595 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EE5TBuf8ILi1EEE @ 596 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 597 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 598 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 599 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 600 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 601 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 602 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EES1_E @ 603 NONAME
+	_ZTV14TMockLtsyData2I4TBufILi16EEiE @ 604 NONAME
+	_ZTV14TMockLtsyData2I5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 605 NONAME
+	_ZTV14TMockLtsyData2I5TTimeiE @ 606 NONAME
+	_ZTV14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 607 NONAME
+	_ZTV14TMockLtsyData2IN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 608 NONAME
+	_ZTV14TMockLtsyData2IN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 609 NONAME
+	_ZTV14TMockLtsyData2IN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 610 NONAME
+	_ZTV14TMockLtsyData2IN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 611 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 612 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 613 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 614 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 615 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 616 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 617 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 618 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 619 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 620 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 621 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 622 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 623 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 624 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 625 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 626 NONAME
+	_ZTV14TMockLtsyData2IN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 627 NONAME
+	_ZTV14TMockLtsyData2IN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 628 NONAME
+	_ZTV14TMockLtsyData2IN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 629 NONAME
+	_ZTV14TMockLtsyData2IN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 630 NONAME
+	_ZTV14TMockLtsyData2IN14RPacketService7TStatusEiE @ 631 NONAME
+	_ZTV14TMockLtsyData2IN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 632 NONAME
+	_ZTV14TMockLtsyData2IN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 633 NONAME
+	_ZTV14TMockLtsyData2IN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 634 NONAME
+	_ZTV14TMockLtsyData2IP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 635 NONAME
+	_ZTV14TMockLtsyData2IP13CArrayPtrFlatI7TSmsMsgEiE @ 636 NONAME
+	_ZTV14TMockLtsyData2IP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 637 NONAME
+	_ZTV14TMockLtsyData2IP6TDesC8S1_E @ 638 NONAME
+	_ZTV14TMockLtsyData2IP6TDesC8iE @ 639 NONAME
+	_ZTV14TMockLtsyData2Ih4TBufILi10EEE @ 640 NONAME
+	_ZTV14TMockLtsyData2IhiE @ 641 NONAME
+	_ZTV14TMockLtsyData2IiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 642 NONAME
+	_ZTV14TMockLtsyData2IiP7TSmsMsgE @ 643 NONAME
+	_ZTV14TMockLtsyData2IiiE @ 644 NONAME
+	_ZTV14TMockLtsyData2IjiE @ 645 NONAME
+	_ZTV14TMockLtsyData2IlaE @ 646 NONAME
+	_ZTV14TMockLtsyData2Is5TBuf8ILi165EEE @ 647 NONAME
+	_ZTV15CMockLtsyEngine @ 648 NONAME
+	_ZTV16CMmCustomStubExt @ 649 NONAME
+	_ZTV16CMmMessageRouter @ 650 NONAME
+	_ZTV17TMockLtsyData1BufI10TGsmCbsMsgE @ 651 NONAME
+	_ZTV17TMockLtsyData1BufI11TONStoreMsgE @ 652 NONAME
+	_ZTV17TMockLtsyData1BufI12TRfStateInfoE @ 653 NONAME
+	_ZTV17TMockLtsyData1BufI12TServiceTypeE @ 654 NONAME
+	_ZTV17TMockLtsyData1BufI14TContextParamsE @ 655 NONAME
+	_ZTV17TMockLtsyData1BufI16TENStoreResponseE @ 656 NONAME
+	_ZTV17TMockLtsyData1BufI20TLockSettingPasswordE @ 657 NONAME
+	_ZTV17TMockLtsyData1BufI21TContextConfigurationE @ 658 NONAME
+	_ZTV17TMockLtsyData1BufI24TCbsCbmiAndLangAndFilterE @ 659 NONAME
+	_ZTV17TMockLtsyData1BufI25TMbmsNetworkServiceStatusE @ 660 NONAME
+	_ZTV17TMockLtsyData1BufI25TSendSmsDataAndAttributesE @ 661 NONAME
+	_ZTV17TMockLtsyData1BufI31TMmMbmsMonitorServiceListParamsE @ 662 NONAME
+	_ZTV17TMockLtsyData1BufI4TBufILi10EEE @ 663 NONAME
+	_ZTV17TMockLtsyData1BufI4TBufILi128EEE @ 664 NONAME
+	_ZTV17TMockLtsyData1BufI4TBufILi15EEE @ 665 NONAME
+	_ZTV17TMockLtsyData1BufI4TBufILi16EEE @ 666 NONAME
+	_ZTV17TMockLtsyData1BufI4TBufILi32EEE @ 667 NONAME
+	_ZTV17TMockLtsyData1BufI4TBufILi6EEE @ 668 NONAME
+	_ZTV17TMockLtsyData1BufI5TBuf8ILi128EEE @ 669 NONAME
+	_ZTV17TMockLtsyData1BufI5TBuf8ILi15EEE @ 670 NONAME
+	_ZTV17TMockLtsyData1BufI5TBuf8ILi16EEE @ 671 NONAME
+	_ZTV17TMockLtsyData1BufI5TCharE @ 672 NONAME
+	_ZTV17TMockLtsyData1BufI5TTimeE @ 673 NONAME
+	_ZTV17TMockLtsyData1BufI7TSmsMsgE @ 674 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI11TAlsSupportEE @ 675 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI11TOperatorIdEE @ 676 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI11TViagParamsEE @ 677 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI12THSxPAStatusEE @ 678 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI12TSetAlsBlockEE @ 679 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI12TSimFileInfoEE @ 680 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI13TSetDriveModeEE @ 681 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI14TBandSelectionEE @ 682 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI16TNetworkModeCapsEE @ 683 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI16TSetAlwaysOnModeEE @ 684 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI18TGetAlsBlockStatusEE @ 685 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI18TViagCacheRecordIdEE @ 686 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI19TViagUHZIUESettingsEE @ 687 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI20TEmerNumberCheckModeEE @ 688 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI5TApduEE @ 689 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI9TDtmfInfoEE @ 690 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone11TAPNEntryV3EE @ 691 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone14TMobileServiceEE @ 692 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneLockEE @ 693 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone16TMobilePhoneNITZEE @ 694 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone19TMobilePhoneALSLineEE @ 695 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneFdnStatusEE @ 696 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneIdServiceEE @ 697 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TImsAuthenticateDataV5EE @ 698 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneCellInfoV9EE @ 699 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockInfoV1EE @ 700 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone22TMobilePhoneLockStatusEE @ 701 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCBConditionEE @ 702 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneCFConditionEE @ 703 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone23TMobilePhoneNetworkModeEE @ 704 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneSecurityCodeEE @ 705 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone24TMobilePhoneServiceTableEE @ 706 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneBatteryInfoV1EE @ 707 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneCWInfoEntryV1EE @ 708 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1EE @ 709 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2EE @ 710 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5EE @ 711 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8EE @ 712 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone25TMobilePhoneSecurityEventEE @ 713 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone26TMobilePhoneVoicemailIdsV3EE @ 714 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneIdServiceStatusEE @ 715 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneNetworkSecurityEE @ 716 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EE @ 717 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone28TAPNControlListServiceStatusEE @ 718 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone28TMobilePhoneMessageWaitingV1EE @ 719 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EE @ 720 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone29TMobileCallCipheringIndicatorEE @ 721 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneNetworkSelectionV1EE @ 722 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone30TMobilePhoneRegistrationStatusEE @ 723 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneNotifySendSSOperationEE @ 724 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone33TMobilePhoneServiceProviderNameV2EE @ 725 NONAME
+	_ZTV17TMockLtsyData1BufIN14RMobileONStore16TMobileONEntryV1EE @ 726 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketContext17TContextConfig_R5EE @ 727 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketContext18TContextConfigCDMAEE @ 728 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketContext18TContextConfigGPRSEE @ 729 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketContext20TContextConfigR99_R4EE @ 730 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketService11TAttachModeEE @ 731 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketService16TPreferredBearerEE @ 732 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketService19TRegistrationStatusEE @ 733 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketService7TStatusEE @ 734 NONAME
+	_ZTV17TMockLtsyData1BufIN14RPacketService8TMSClassEE @ 735 NONAME
+	_ZTV17TMockLtsyData1BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EE @ 736 NONAME
+	_ZTV17TMockLtsyData1BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EE @ 737 NONAME
+	_ZTV17TMockLtsyData1BufIN17RMobilePhoneStore23TMobilePhoneStoreInfoV1EE @ 738 NONAME
+	_ZTV17TMockLtsyData1BufIN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 739 NONAME
+	_ZTV17TMockLtsyData1BufIN19RMobileSmsMessaging16TMobileSmsBearerEE @ 740 NONAME
+	_ZTV17TMockLtsyData1BufIN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 741 NONAME
+	_ZTV17TMockLtsyData1BufIN6RPhone7TStatusEE @ 742 NONAME
+	_ZTV17TMockLtsyData1BufIP13CArrayFixFlatIN12RMmCustomAPI11TSimCbTopicEEE @ 743 NONAME
+	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEE @ 744 NONAME
+	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI14TSmsParametersEE @ 745 NONAME
+	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI16TENStoreResponseEE @ 746 NONAME
+	_ZTV17TMockLtsyData1BufIP13CArrayPtrFlatI7TSmsMsgEE @ 747 NONAME
+	_ZTV17TMockLtsyData1BufIP18CMobilePhoneCFListE @ 748 NONAME
+	_ZTV17TMockLtsyData1BufIP18CMobilePhoneCWListE @ 749 NONAME
+	_ZTV17TMockLtsyData1BufIP25CMobilePhoneNetworkListV2E @ 750 NONAME
+	_ZTV17TMockLtsyData1BufIP27CMobilePhoneBroadcastIdListE @ 751 NONAME
+	_ZTV17TMockLtsyData1BufIP29CPcktMbmsMonitoredServiceListE @ 752 NONAME
+	_ZTV17TMockLtsyData1BufIP4TBufILi100EEE @ 753 NONAME
+	_ZTV17TMockLtsyData1BufIP6TDesC8E @ 754 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI20TSimCardReaderStatusEE @ 755 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapAkaEE @ 756 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI24TSimAuthenticationEapSimEE @ 757 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationGbaBootstrapEE @ 758 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI30TSimAuthenticationMgvMskUpdateEE @ 759 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI32TSimAuthenticationMgvMskDeletionEE @ 760 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationGbaNafDerivationEE @ 761 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI34TSimAuthenticationMgvMtkGenerationEE @ 762 NONAME
+	_ZTV17TMockLtsyData1BufIPN12RMmCustomAPI36TSimAuthenticationGbaBootstrapUpdateEE @ 763 NONAME
+	_ZTV17TMockLtsyData1BufIhE @ 764 NONAME
+	_ZTV17TMockLtsyData1BufIiE @ 765 NONAME
+	_ZTV17TMockLtsyData1BufIjE @ 766 NONAME
+	_ZTV17TMockLtsyData1BufIlE @ 767 NONAME
+	_ZTV17TMockLtsyData1BufImE @ 768 NONAME
+	_ZTV17TMockLtsyData1BufIsE @ 769 NONAME
+	_ZTV17TMockLtsyData1BufItE @ 770 NONAME
+	_ZTV17TMockLtsyData2BufI14TContextParamsN10RPacketQoS15TQoSR5RequestedEE @ 771 NONAME
+	_ZTV17TMockLtsyData2BufI14TContextParamsN10RPacketQoS17TQoSGPRSRequestedEE @ 772 NONAME
+	_ZTV17TMockLtsyData2BufI14TContextParamsN10RPacketQoS19TQoSR99_R4RequestedEE @ 773 NONAME
+	_ZTV17TMockLtsyData2BufI21TContextConfigurationP13CArrayPtrFlatIN14RPacketContext24CTFTMediaAuthorizationV3EEE @ 774 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 775 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi15EEN12RMmCustomAPI11TLockNumberEE @ 776 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EE12TContextMiscE @ 777 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EE30TMmMbmsActiveServiceListParamsE @ 778 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EE5TBuf8ILi1EEE @ 779 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext11TDataVolumeEE @ 780 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext14TDataChannelV2EE @ 781 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext17TConnectionInfoV1EE @ 782 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEN14RPacketContext18TContextConfigGPRSEE @ 783 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEN18RPacketMbmsContext20TContextConfigMbmsV1EE @ 784 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEPN18RPacketMbmsContext12CMbmsSessionEE @ 785 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EES1_E @ 786 NONAME
+	_ZTV17TMockLtsyData2BufI4TBufILi16EEiE @ 787 NONAME
+	_ZTV17TMockLtsyData2BufI5TBuf8ILi128EEN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 788 NONAME
+	_ZTV17TMockLtsyData2BufI5TTimeiE @ 789 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_13TOperatorLogoEE @ 790 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI11TOperatorIdENS0_7TSsInfoEE @ 791 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI11TViagParamsEP13CArrayFixFlatINS0_12TViagElementEEE @ 792 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI14TBandSelectionENS0_16TNetworkModeCapsEE @ 793 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMmCustomAPI18TViagCacheRecordIdENS0_23TViagCacheRecordContentEE @ 794 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_20TMobilePhoneCFActiveEE @ 795 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone14TMobileServiceENS0_25TMobilePhoneServiceActionEE @ 796 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockInfoV1ENS0_16TMobilePhoneLockEE @ 797 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone22TMobilePhoneLockStatusENS0_23TMobilePhoneLockSettingEE @ 798 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCBConditionENS0_22TMobilePhoneCBChangeV1EE @ 799 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_14TMobileServiceEE @ 800 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone23TMobilePhoneCFConditionENS0_22TMobilePhoneCFChangeV1EE @ 801 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_19TCodeAndUnblockCodeEE @ 802 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone24TMobilePhoneSecurityCodeENS0_30TMobilePhoneSecurityCodeInfoV5EE @ 803 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV1ENS0_26TMobilePhoneLocationAreaV1EE @ 804 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV2ENS0_26TMobilePhoneLocationAreaV1EE @ 805 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV5ENS0_26TMobilePhoneLocationAreaV1EE @ 806 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone25TMobilePhoneNetworkInfoV8ENS0_26TMobilePhoneLocationAreaV1EE @ 807 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone27TMobilePhoneSendSSRequestV3EN20RMobileUssdMessaging23TMobileUssdAttributesV1EE @ 808 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone28TMobilePhonePasswordChangeV2EtE @ 809 NONAME
+	_ZTV17TMockLtsyData2BufIN12RMobilePhone30TMobilePhoneRegistrationStatusENS0_25TMobilePhoneNetworkStatusEE @ 810 NONAME
+	_ZTV17TMockLtsyData2BufIN14RPacketContext17TContextConfig_R5E4TBufILi16EEE @ 811 NONAME
+	_ZTV17TMockLtsyData2BufIN14RPacketContext18TContextConfigGPRSE4TBufILi16EEE @ 812 NONAME
+	_ZTV17TMockLtsyData2BufIN14RPacketContext20TContextConfigR99_R4E4TBufILi16EEE @ 813 NONAME
+	_ZTV17TMockLtsyData2BufIN14RPacketService7TStatusEiE @ 814 NONAME
+	_ZTV17TMockLtsyData2BufIN15RMobileSmsStore20TMobileGsmSmsEntryV1EiE @ 815 NONAME
+	_ZTV17TMockLtsyData2BufIN15RMobileSmsStore21TMobileCdmaSmsEntryV1EiE @ 816 NONAME
+	_ZTV17TMockLtsyData2BufIN18RPacketMbmsContext20TContextConfigMbmsV1E4TBufILi16EEE @ 817 NONAME
+	_ZTV17TMockLtsyData2BufIP13CArrayPtrFlatI12TWcdmaCbsMsgEhE @ 818 NONAME
+	_ZTV17TMockLtsyData2BufIP13CArrayPtrFlatI7TSmsMsgEiE @ 819 NONAME
+	_ZTV17TMockLtsyData2BufIP27CMobilePhoneBroadcastIdListN25RMobileBroadcastMessaging22TMobileBroadcastIdTypeEE @ 820 NONAME
+	_ZTV17TMockLtsyData2BufIP6TDesC8S1_E @ 821 NONAME
+	_ZTV17TMockLtsyData2BufIP6TDesC8iE @ 822 NONAME
+	_ZTV17TMockLtsyData2BufIh4TBufILi10EEE @ 823 NONAME
+	_ZTV17TMockLtsyData2BufIhiE @ 824 NONAME
+	_ZTV17TMockLtsyData2BufIiN12RMobilePhone34TMobilePhoneNetworkManualSelectionEE @ 825 NONAME
+	_ZTV17TMockLtsyData2BufIiP7TSmsMsgE @ 826 NONAME
+	_ZTV17TMockLtsyData2BufIiiE @ 827 NONAME
+	_ZTV17TMockLtsyData2BufIjiE @ 828 NONAME
+	_ZTV17TMockLtsyData2BufIlaE @ 829 NONAME
+	_ZTV17TMockLtsyData2BufIs5TBuf8ILi165EEE @ 830 NONAME
+	_ZTV18CMockLtsyFactoryV1 @ 831 NONAME
+	_ZTV18CMockLtsyFactoryV2 @ 832 NONAME
+	_ZTV18CMockLtsyFactoryV3 @ 833 NONAME
+	_ZTV18TMockLtsyCallData1I4TBufILi129EEE @ 834 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall16TMobileCallEventEE @ 835 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall17TMobileCallInfoV1EE @ 836 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall17TMobileCallStatusEE @ 837 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV1EE @ 838 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV2EE @ 839 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall19TMobileCallParamsV7EE @ 840 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall21TMobileCallDataCapsV1EE @ 841 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall22TMobileCallHscsdInfoV8EE @ 842 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV1EE @ 843 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV2EE @ 844 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall23TMobileDataCallParamsV8EE @ 845 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV1EE @ 846 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV2EE @ 847 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV7EE @ 848 NONAME
+	_ZTV18TMockLtsyCallData1IN11RMobileCall24TMobileHscsdCallParamsV8EE @ 849 NONAME
+	_ZTV18TMockLtsyCallData1IN12RMobilePhone19TMobilePhonePrivacyEE @ 850 NONAME
+	_ZTV18TMockLtsyCallData1IN5RCall14TBearerServiceEE @ 851 NONAME
+	_ZTV18TMockLtsyCallData1IN5RCall7TStatusEE @ 852 NONAME
+	_ZTV18TMockLtsyCallData1IN5RCall9TCommPortEE @ 853 NONAME
+	_ZTV18TMockLtsyCallData1IiE @ 854 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 855 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 856 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 857 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 858 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 859 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 860 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 861 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 862 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 863 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 864 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 865 NONAME
+	_ZTV18TMockLtsyCallData2IN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 866 NONAME
+	_ZTV18TMockLtsyCallData2IiiE @ 867 NONAME
+	_ZTV19CMockSmsMessHandler @ 868 NONAME
+	_ZTV20CMockCallMessHandler @ 869 NONAME
+	_ZTV21CMockPhoneMessHandler @ 870 NONAME
+	_ZTV21TMockLtsyCallData1BufI4TBufILi129EEE @ 871 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall16TMobileCallEventEE @ 872 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallInfoV1EE @ 873 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall17TMobileCallStatusEE @ 874 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV1EE @ 875 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV2EE @ 876 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall19TMobileCallParamsV7EE @ 877 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall21TMobileCallDataCapsV1EE @ 878 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall22TMobileCallHscsdInfoV8EE @ 879 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV1EE @ 880 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV2EE @ 881 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall23TMobileDataCallParamsV8EE @ 882 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV1EE @ 883 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV2EE @ 884 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV7EE @ 885 NONAME
+	_ZTV21TMockLtsyCallData1BufIN11RMobileCall24TMobileHscsdCallParamsV8EE @ 886 NONAME
+	_ZTV21TMockLtsyCallData1BufIN12RMobilePhone19TMobilePhonePrivacyEE @ 887 NONAME
+	_ZTV21TMockLtsyCallData1BufIN5RCall14TBearerServiceEE @ 888 NONAME
+	_ZTV21TMockLtsyCallData1BufIN5RCall7TStatusEE @ 889 NONAME
+	_ZTV21TMockLtsyCallData1BufIN5RCall9TCommPortEE @ 890 NONAME
+	_ZTV21TMockLtsyCallData1BufIiE @ 891 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV1EE @ 892 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV1ENS0_17TMobileCallInfoV8EE @ 893 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV2ENS0_17TMobileCallInfoV8EE @ 894 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall19TMobileCallParamsV7ENS0_17TMobileCallInfoV8EE @ 895 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall22TMobileCallHscsdInfoV8ENS0_21TMobileCallDataCapsV1EE @ 896 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV1ENS0_17TMobileCallInfoV8EE @ 897 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV2ENS0_17TMobileCallInfoV8EE @ 898 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall23TMobileDataCallParamsV8ENS0_17TMobileCallInfoV8EE @ 899 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV1ENS0_17TMobileCallInfoV8EE @ 900 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV2ENS0_17TMobileCallInfoV8EE @ 901 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV7ENS0_17TMobileCallInfoV8EE @ 902 NONAME
+	_ZTV21TMockLtsyCallData2BufIN11RMobileCall24TMobileHscsdCallParamsV8ENS0_17TMobileCallInfoV8EE @ 903 NONAME
+	_ZTV21TMockLtsyCallData2BufIiiE @ 904 NONAME
+	_ZTV21TMockLtsyContextData1I4TBufILi16EEE @ 905 NONAME
+	_ZTV21TMockLtsyContextData2I4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 906 NONAME
+	_ZTV21TMockLtsyContextData2I4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 907 NONAME
+	_ZTV23CMockPcktQoSMessHandler @ 908 NONAME
+	_ZTV23TMockLtsyPacketQoSData1I4TBufILi16EEE @ 909 NONAME
+	_ZTV23TMockLtsyPhoneBookData1I10TPBFdnInfoE @ 910 NONAME
+	_ZTV23TMockLtsyPhoneBookData1I12TPBEntryInfoE @ 911 NONAME
+	_ZTV23TMockLtsyPhoneBookData1I16CStorageInfoDataE @ 912 NONAME
+	_ZTV23TMockLtsyPhoneBookData1IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 913 NONAME
+	_ZTV23TMockLtsyPhoneBookData1IP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 914 NONAME
+	_ZTV23TMockLtsyPhoneBookData1IiE @ 915 NONAME
+	_ZTV23TMockLtsyPhoneBookData2IN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 916 NONAME ABSENT
+	_ZTV23TMockLtsyPhoneBookData2IiP20CPhoneBookStoreEntryE @ 917 NONAME
+	_ZTV24TMockLtsyContextData1BufI4TBufILi16EEE @ 918 NONAME
+	_ZTV24TMockLtsyContextData2BufI4TBufILi16EEP13CArrayFixFlatIN14RPacketContext15TPacketFilterV2EEE @ 919 NONAME
+	_ZTV24TMockLtsyContextData2BufI4TBufILi16EEPN14RPacketContext24CTFTMediaAuthorizationV3EE @ 920 NONAME
+	_ZTV26CMmCustomMessHandlerGsmExt @ 921 NONAME
+	_ZTV26CMockTelephonyAudioControl @ 922 NONAME
+	_ZTV26TMockLtsyPhoneBookData1BufI10TPBFdnInfoE @ 923 NONAME
+	_ZTV26TMockLtsyPhoneBookData1BufI12TPBEntryInfoE @ 924 NONAME
+	_ZTV26TMockLtsyPhoneBookData1BufI16CStorageInfoDataE @ 925 NONAME
+	_ZTV26TMockLtsyPhoneBookData1BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEE @ 926 NONAME
+	_ZTV26TMockLtsyPhoneBookData1BufIP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 927 NONAME
+	_ZTV26TMockLtsyPhoneBookData1BufIiE @ 928 NONAME
+	_ZTV26TMockLtsyPhoneBookData2BufIN21RMobilePhoneBookStore21TPBIndexAndNumEntriesEP12CArrayPtrSegI20CPhoneBookStoreEntryEE @ 929 NONAME ABSENT
+	_ZTV26TMockLtsyPhoneBookData2BufIiP20CPhoneBookStoreEntryE @ 930 NONAME
+	_ZTV27CMockPcktContextMessHandler @ 931 NONAME
+	_ZTV27CMockPcktServiceMessHandler @ 932 NONAME
+	_ZTV30CMockPhoneBookStoreMessHandler @ 933 NONAME
+	_ZTI14TMockLtsyData1IN12RMobilePhone21TMobilePhoneDTMFEventEE @ 934 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneDTMFEventEE @ 935 NONAME
+	_ZTV14TMockLtsyData1IN12RMobilePhone21TMobilePhoneDTMFEventEE @ 936 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMobilePhone21TMobilePhoneDTMFEventEE @ 937 NONAME
+	_ZTI14TMockLtsyData1IN12RMmCustomAPI15TApduParametersEE @ 938 NONAME
+	_ZTI17TMockLtsyData1BufIN12RMmCustomAPI15TApduParametersEE @ 939 NONAME
+	_ZTV14TMockLtsyData1IN12RMmCustomAPI15TApduParametersEE @ 940 NONAME
+	_ZTV17TMockLtsyData1BufIN12RMmCustomAPI15TApduParametersEE @ 941 NONAME
+
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/group/bld.inf	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -18,7 +18,8 @@
 PRJ_PLATFORMS
 DEFAULT
 
-PRJ_EXPORTS
+PRJ_TESTEXPORTS 
+../data/ltsydata_mock.ini 			z:/testdata/configs/ltsydata_mock.ini
 
 PRJ_TESTMMPFILES
 mockltsy.mmp
--- a/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/group/mockltsy.mmp	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/mockltsy/mockltsy/group/mockltsy.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -14,10 +14,10 @@
 * Description:
 *
 */
-TARGET          licenseetsy.dll
+TARGET          mocklicenseetsy.dll
 
 TARGETTYPE      DLL
-UID             0x1000008D 0x2000BEE4
+UID             0x1000008D 0x2002EA67
 
 CAPABILITY CommDD PowerMgmt ReadDeviceData WriteDeviceData TrustedUI ProtServ NetworkControl NetworkServices LocalServices ReadUserData WriteUserData
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/mockltsy_copy_ini_file.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,28 @@
+//
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Copies the file ltsydata_mock.ini from Z: (ROM or simulated ROM) to the C: drive
+// Two reasons for doing this are:
+//   a) It loads the MockLtsy dll (mocklicenseetsy.dll) as the one to use as the LTsy component
+//   b) The file can be edited (or deleted) allowing fall-back to the "normal" licenseetsy.dll
+//
+//
+
+
+// 101f7989 is SID of C32.exe so this should already exist
+RUN_UTILS MkDir       	c:\private\101f7989
+
+// Copy ltsydata_mock.ini from Z: to C:
+RUN_UTILS CopyFile    	 z:\testdata\configs\ltsydata_mock.ini           c:\private\101f7989\ltsydata.ini
+RUN_UTILS MakeReadWrite	 c:\private\101f7989\ltsydata.ini
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/mockltsy_remove_ini_file.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,19 @@
+//
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Deletes the file ltsydata_mock.ini from the C: drive
+// Use this in conjunction with mockltsy_copy_ini_file.script
+// 
+
+RUN_UTILS DeleteFile  c:\private\101f7989\ltsydata.ini
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -14,6 +14,8 @@
 // Description:
 //
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
+
 LOAD_SUITE te_ctsy_component
 
 RUN_SCRIPT z:\TestData\Scripts\te_ctsycomponent_packetservice_individual.script
@@ -90,9 +92,6 @@
 
 
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
 
 
-
-
-
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_airtimeduration_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_airtimeduration_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -38,3 +41,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyAirTimeDurationFU.TestNotifyAirTimeDurationChange0001L
 END_TESTCASE BA-CTSY-ATD-MNATDC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_alternatelineservice_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_alternatelineservice_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -82,3 +85,5 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyAlternateLineServiceFU.TestNotifyALSLineChange0004L
 END_TESTCASE BA-CTSY-ALLS-MNALC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
+
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_alternatingcall_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_alternatingcall_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -137,3 +140,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyAlternatingCallFU.TestNotifyAlternatingCallModeChange0001L
 END_TESTCASE BA-CTSY-ALTC-MNACMC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_apncontrollist_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_apncontrollist_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -302,3 +305,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyAPNControlListFU.TestNotifyAPNControlListServiceStatusChange0004L
 END_TESTCASE BA-CTSY-ACL-MNACLSSC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_authorisation_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_authorisation_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -60,3 +63,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyAuthorisationAndAuthenticationFU.TestSmartCardAuthenticate0001L
 END_TESTCASE BA-CTSY-AAA-MSCA-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_broadcastmessaging_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_broadcastmessaging_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -301,3 +304,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyBroadcastMessagingFU.TestGetCaps0003L
 END_TESTCASE BA-CTSY-BRMSG-BGC-0003
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callbarring_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callbarring_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -203,3 +206,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallBarringFU.TestNotifyCallBarringStatusChange0004L
 END_TESTCASE BA-CTSY-CBAR-MNCBSC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcompletion_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcompletion_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -158,3 +161,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallCompletionFU.TestNotifyCCBSStatusChange0001L
 END_TESTCASE BA-CTSY-CCOM-MNCCBSSC-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -1064,3 +1067,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallControlFU.TestUpdateLifeTime0001L
 END_TESTCASE BA-CTSY-CCON-CNUA-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcost_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callcost_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -93,3 +96,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallCostFU.TestSetPuct0001L
 END_TESTCASE BA-CTSY-CCOS-MSP-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callemergency_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callemergency_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -125,4 +128,6 @@
 //!@SYMTestExpectedResults Pass
 //!@SYMTestType CT
 RUN_TEST_STEP 360 te_ctsy_component TEFUnit.CCTsyCallEmergencyFU.TestDialEmergencyCall0005L
-END_TESTCASE BA-CTSY-CEMG-CDEC-0005
\ No newline at end of file
+END_TESTCASE BA-CTSY-CEMG-CDEC-0005
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callforwarding_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callforwarding_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -180,3 +183,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallForwardingFU.TestNotifyCallForwardingStatusChange0004L
 END_TESTCASE BA-CTSY-CFOR-MNCFSC-0004
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callinformation_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callinformation_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -1644,3 +1647,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallInformationFU.TestNotifyLineHookChange00011L
 END_TESTCASE BA-CTSY-CALLI-LNHCC-00011
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callownership_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callownership_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -136,3 +139,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallOwnershipFU.TestTransferOwnership0006L
 END_TESTCASE BA-CTSY-COWN-CTO-0006
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callwaiting_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_callwaiting_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -137,3 +140,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCallWaitingFU.TestNotifyCallWaitingStatusChange0004L
 END_TESTCASE BA-CTSY-CWAT-MCWSC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_conferencecallcontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_conferencecallcontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -477,3 +480,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyConferenceCallControlFU.TestGetMobileCallInfo0003L
 END_TESTCASE BA-CTSY-CONC-CGMCI-0003
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_customipc_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_customipc_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -2398,4 +2401,4 @@
 END_TESTCASE BA-CTSY-CIPC-GUSS-0004
 
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_datacallcontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_datacallcontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -488,3 +491,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyDataCallControlFU.TestNotifyMobileDataCallCapsChange00011L
 END_TESTCASE BA-CTSY-DATC-CNMDCCC-00011
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_dtmf_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_dtmf_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -216,3 +219,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyDTMFFU.TestContinueDTMFStringSending0001L
 END_TESTCASE BA-CTSY-DTMF-MCDSS-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_eapauthentication_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_eapauthentication_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -26,3 +29,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyEAPAuthenticationFU.TestOpen0001L
 END_TESTCASE BA-CTSY-EAP-EO-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_enstore_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_enstore_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -195,3 +198,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyENStoreFU.TestStart0004L
 END_TESTCASE BA-CTSY-PBEN-ESS-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fax_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fax_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -93,3 +96,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyFaxFU.TestWrite0001L
 END_TESTCASE BA-CTSY-FAX-FW-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_featmgr_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_featmgr_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -26,3 +29,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyFeatMgr.TestFeatMgr0001L
 END_TESTCASE BA-CTSY-FEAT-FEATMGR-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fixeddialling_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fixeddialling_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -178,4 +181,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyFixedDiallingFU.TestNotifyFdnStatusChange0004L
 END_TESTCASE BA-CTSY-FXD-MNFSC-0004
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fullrun.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_fullrun.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,10 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
+
 
 LOAD_SUITE te_ctsy_component
 
@@ -87,4 +91,4 @@
 // TimeOut
 RUN_SCRIPT z:\TestData\Scripts\te_ctsycomponent_timeout_all.script
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ims_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ims_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -71,3 +74,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyIMSFU.TestNotifyImsAuthorizationInfoChange0001L
 END_TESTCASE BA-CTSY-IMS-MNIAIC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_indicator_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_indicator_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -93,3 +96,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyIndicatorFU.TestNotifyIndicatorChange0004L
 END_TESTCASE BA-CTSY-IND-MNIC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_knownfailures_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_knownfailures_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -220,3 +223,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneBookStoreFU.TestWrite00021L
 END_TESTCASE BA-CTSY-PBSTR-PBSW-00021
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_lbs_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_lbs_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -115,3 +118,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyLBSFU.TestSendMolr0001L
 END_TESTCASE BA-CTSY-LBS-LSM-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_linecontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_linecontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -457,3 +460,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyLineControlFU.TestNotifyMobileLineStatusChange00014L
 END_TESTCASE BA-CTSY-LINC-LNMLSC-00014
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mailboxnumbers_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mailboxnumbers_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -104,3 +107,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyMailboxNumbersFU.TestNotifyMailboxNumbersChange0001L
 END_TESTCASE BA-CTSY-MBXN-MNMNC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mbmscontext_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mbmscontext_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,10 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
+
 
 LOAD_SUITE te_ctsy_component
 
@@ -383,3 +387,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyMbmsContextFU.TestNotifyStatusChange0003L
 END_TESTCASE BA-CTSY-MCF-PNSC-0003
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_messagewaiting_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_messagewaiting_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,13 +13,13 @@
 //
 // Description:
 //
-//! @file                   te_ctsycomponent_messagewaiting_individual.script
-//! @SYMScriptAuthor        
-//! @SYMTestSuiteName       te_ctsy_component
-//! @SYMScriptCreationDate  
+//
 
 PRINT Run Message Waiting test cases for suite te_ctsy_component
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
+
+
 LOAD_SUITE te_ctsy_component
 
 START_TESTCASE BA-CTSY-MSGW-MCMW-0001
@@ -178,3 +178,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyMessageWaitingFU.TestNotifyIccMessageWaitingIndicatorsChange0004L
 END_TESTCASE BA-CTSY-MSGW-MNIMWC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mms_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_mms_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -71,3 +74,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyMMSFU.TestSetMmsUserPreferences0001L
 END_TESTCASE BA-CTSY-MMS-MSMUP-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_multicallcallcontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_multicallcallcontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -60,3 +63,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyMulticallCallControlFU.TestNotifyMulticallIndicatorChange0001L
 END_TESTCASE BA-CTSY-MCC-MNMIC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_multimediacallcontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_multimediacallcontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -82,3 +85,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyMultimediaCallControlFU.TestSetMultimediaCallPreference0001L
 END_TESTCASE BA-CTSY-MMCC-MSMCP-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networkcontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networkcontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -942,3 +945,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkControlFU.TestNotifyCellInfoChange0004L
 END_TESTCASE BA-CTSY-NTWC-PNCIC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networksecurity_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_networksecurity_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -117,3 +120,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyNetworkSecurityFU.TestNotifyNetworkSecurityLevelChange0004L
 END_TESTCASE BA-CTSY-NTWS-MNNSLC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_onstore_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_onstore_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,10 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
+
 
 LOAD_SUITE te_ctsy_component
 
@@ -383,3 +387,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyONStoreFU.TestStart0004L
 END_TESTCASE BA-CTSY-PBON-OSS-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetcontext_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetcontext_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -738,5 +741,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPacketContextFU.TestNotifyConnectionInfoChange0004L
 END_TESTCASE BA-CTSY-PKTC-PCNCIC-0004
 
-
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetcontext_individual_no_adaptive_tcp_receive_window.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetcontext_individual_no_adaptive_tcp_receive_window.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -672,6 +675,5 @@
 RUN_TEST_STEP !PanicCode=-28 100 te_ctsy_component TEFUnit.CCTsyPacketContextFU.TestOpenExistingContext0003L
 END_TESTCASE BA-CTSY-PKTC-PCONEC-0003
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
 
-
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetqos_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetqos_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -411,3 +414,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPacketQoSFU.TestOpenExistingQoS0004L
 END_TESTCASE BA-CTSY-PKTQ-QOEQ-0004
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetservice_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_packetservice_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -1399,3 +1402,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPacketServiceFU.TestRetrievePcktMbmsSessionListStart0002L
 END_TESTCASE BA-CTSY-PKTS-PMSLS-0002
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_personalisation_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_personalisation_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -49,3 +52,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPersonalisationFU.TestSetPersonalisationStatus0001L
 END_TESTCASE BA-CTSY-PERS-MSPS-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonebookstore_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonebookstore_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -1894,4 +1897,6 @@
 //!@SYMTestExpectedResults Pass
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneBookStoreFU.TestOpen0001L
-END_TESTCASE BA-CTSY-PBSTR-PBSO2-0001
\ No newline at end of file
+END_TESTCASE BA-CTSY-PBSTR-PBSO2-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonebookstore_individual_fail.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonebookstore_individual_fail.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -1908,10 +1911,4 @@
 END_TESTCASE BA-CTSY-PBSTR-PBSR3-0002
 
 
-
-
-
-
-
-
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonecapability_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonecapability_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -92,3 +95,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneCapabilityFU.TestGetMultimodeCaps0001L
 END_TESTCASE BA-CTSY-PCAP-MGMC-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonecontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonecontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -103,3 +106,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneControlFU.TestGetStatus0001L
 END_TESTCASE BA-CTSY-PCON-PGS-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phoneidentity_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phoneidentity_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -278,3 +281,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneIdentityFU.TestNotifyIdentitySuppressionRejected0001L
 END_TESTCASE BA-CTSY-PID-MNISR-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonepower_hwrm_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonepower_hwrm_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -83,3 +86,4 @@
 RUN_TEST_STEP 400 te_ctsy_component TEFUnit.CCTsyPhonePowerFU.TestHWRMNotifyBatteryInfoChange0004L
 END_TESTCASE BA-CTSY-PPHWRM-MNBIC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonepower_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonepower_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -83,3 +86,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhonePowerFU.TestNotifyBatteryInfoChange0004L
 END_TESTCASE BA-CTSY-PP-MNBIC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonesecurity_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonesecurity_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -490,3 +493,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneSecurityFU.TestNotifySecurityCapsChange0004L
 END_TESTCASE BA-CTSY-NTWS-MNSCC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonestore_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_phonestore_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -60,3 +63,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPhoneStoreFU.TestGetPhoneStoreInfo0004L
 END_TESTCASE BA-CTSY-PSTR-MGPSI-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_privacy_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_privacy_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -170,3 +173,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyPrivacyFU.TestNotifyDefaultPrivacyChange0001L
 END_TESTCASE BA-CTSY-PRI-MNDPC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_sessionmanagement_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_sessionmanagement_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -258,4 +261,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySessionManagementFU.TestInitialiseMM0001L
 END_TESTCASE BA-CTSY-SESMG-MIM-0001
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_signalstrength_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_signalstrength_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -82,3 +85,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySignalStrengthFU.TestNotifySignalStrengthChange0004L
 END_TESTCASE BA-CTSY-SIGS-MNSSC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smartcardapplication_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smartcardapplication_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -93,3 +96,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySmartCardApplicationFU.TestNotifySmartCardAppInfoChange0001L
 END_TESTCASE BA-CTSY-SMCA-MNSCAIC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smsmessaging_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smsmessaging_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -560,3 +563,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySmsMessagingFU.TestGetCaps0003L
 END_TESTCASE BA-CTSY-SMSM-SGC-0003
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smspstore_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smspstore_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -49,3 +52,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySMSPStoreFU.TestStart0004L
 END_TESTCASE BA-CTSY-SMSP-CRMPSL-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smsstore_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_smsstore_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -302,3 +305,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySmsStoreFU.TestStartBatch0001L
 END_TESTCASE BA-CTSY-PBSMS-SMSSSB-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_subscriberinfo_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_subscriberinfo_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -236,3 +239,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySubscriberInfoFU.TestGetIccIdentity0001L
 END_TESTCASE BA-CTSY-SUBI-MGII-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_supplementaryservicecaps_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_supplementaryservicecaps_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -60,3 +63,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySupplementaryServiceCapsFU.TestNotifyCallServiceCapsChange0004L
 END_TESTCASE BA-CTSY-SUSC-MCSCC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_systemstate_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_systemstate_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -26,3 +29,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsySystemState.TestSystemState0001L
 END_TESTCASE BA-CTSY-SYSS-SYSSPLG-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_telephonyaudiocontrol_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_telephonyaudiocontrol_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -125,3 +128,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyTelephonyAudioControlFU.TestNotifyTelephonyAudioControlError0001L
 END_TESTCASE BA-CTSY-CRC-CRCNTACE-0001
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_timeout_all.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_timeout_all.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -1985,3 +1988,5 @@
 //!@SYMTestType CT
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyCustomIPCFU.TestGetUSIMServiceSupport0005L
 END_TESTCASE BA-CTSY-CIPC-GUSS-0005
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_trafficchannel_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_trafficchannel_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -82,3 +85,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyTrafficChannelFU.TestNotifyTrafficChannelConfirmation00011L
 END_TESTCASE BA-CTSY-TRCH-CNTCC-00011
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usernetworkaccess_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usernetworkaccess_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -170,3 +173,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUserNetworkAccessFU.TestSendNetworkServiceRequestNoFdnCheck0004L
 END_TESTCASE BA-CTSY-USNA-MSNSRNFC-0004
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usertousersignalling_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usertousersignalling_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -280,3 +283,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUserToUserSignallingFU.TestNotifyUUSSettingChange0001L
 END_TESTCASE BA-CTSY-UUS-MNUSC-0001
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usimapplication_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_usimapplication_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -126,4 +129,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUSIMApplicationFU.TestGetCurrentActiveUSimApplication0004L
 END_TESTCASE BA-CTSY-SUBI-MGIK-0004
 
-
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ussdmessaging_individual.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsycomponent_ussdmessaging_individual.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -269,3 +272,4 @@
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUssdMessagingFU.TestGetCaps0003L
 END_TESTCASE BA-CTSY-USSDM-UGC-0003
 
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- a/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsyintegration_mbms_auto.script	Wed Jun 23 19:32:14 2010 +0300
+++ b/telephonyserverplugins/common_tsy/test/component/scripts/te_ctsyintegration_mbms_auto.script	Tue Jul 06 15:36:38 2010 +0300
@@ -1,5 +1,5 @@
 //
-// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
 // All rights reserved.
 // This component and the accompanying materials are made available
 // under the terms of "Eclipse Public License v1.0"
@@ -13,6 +13,9 @@
 //
 // Description:
 //
+//
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_copy_ini_file.script
 
 LOAD_SUITE te_ctsy_component
 
@@ -566,3 +569,5 @@
 //!@SYMTestCaseDependencies live/manual
 RUN_TEST_STEP 100 te_ctsy_component TEFUnit.CCTsyUCaseMbms027.CCtsyIntegrationTestMbms0002L
 END_TESTCASE BA-CTSY-INT-MB-0046
+
+RUN_SCRIPT z:\TestData\Scripts\mockltsy_remove_ini_file.script
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/bmarm/WAPMSGCLIU.DEF	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+EXPORTS
+	__28CWapFullySpecDatagramService @ 1 NONAME R3UNUSED ; CWapFullySpecDatagramService::CWapFullySpecDatagramService(void)
+	ConstructL__24CWapBoundDatagramService @ 2 NONAME R3UNUSED ; CWapBoundDatagramService::ConstructL(void)
+	ConstructL__26CWapFullySpecCLPushService @ 3 NONAME R3UNUSED ; CWapFullySpecCLPushService::ConstructL(void)
+	ConstructL__28CWapFullySpecDatagramService @ 4 NONAME R3UNUSED ; CWapFullySpecDatagramService::ConstructL(void)
+	GetLocalAddressesL__16CWapMessageUtilsRt6RArray1ZQ23Wap12TAddressInfo @ 5 NONAME R3UNUSED ; CWapMessageUtils::GetLocalAddressesL(RArray<Wap::TAddressInfo> &)
+	NewL__22CWapBoundCLPushService @ 6 NONAME R3UNUSED ; CWapBoundCLPushService::NewL(void)
+	NewL__24CWapBoundDatagramService @ 7 NONAME R3UNUSED ; CWapBoundDatagramService::NewL(void)
+	NewL__26CWapFullySpecCLPushService @ 8 NONAME R3UNUSED ; CWapFullySpecCLPushService::NewL(void)
+	NewL__28CWapFullySpecDatagramService @ 9 NONAME R3UNUSED ; CWapFullySpecDatagramService::NewL(void)
+	"_._22CWapBoundCLPushService" @ 10 NONAME R3UNUSED ; CWapBoundCLPushService::~CWapBoundCLPushService(void)
+	"_._24CWapBoundDatagramService" @ 11 NONAME R3UNUSED ; CWapBoundDatagramService::~CWapBoundDatagramService(void)
+	"_._26CWapFullySpecCLPushService" @ 12 NONAME R3UNUSED ; CWapFullySpecCLPushService::~CWapFullySpecCLPushService(void)
+	"_._28CWapFullySpecDatagramService" @ 13 NONAME R3UNUSED ; CWapFullySpecDatagramService::~CWapFullySpecDatagramService(void)
+	__22CWapBoundCLPushService @ 14 NONAME R3UNUSED ; CWapBoundCLPushService::CWapBoundCLPushService(void)
+	__24CWapBoundDatagramService @ 15 NONAME R3UNUSED ; CWapBoundDatagramService::CWapBoundDatagramService(void)
+	__26CWapFullySpecCLPushService @ 16 NONAME R3UNUSED ; CWapFullySpecCLPushService::CWapFullySpecCLPushService(void)
+	ConstructL__22CWapBoundCLPushService @ 17 NONAME R3UNUSED ; CWapBoundCLPushService::ConstructL(void)
+	ConstructL__25CWapFullySpecCLWSPService @ 18 NONAME R3UNUSED ; CWapFullySpecCLWSPService::ConstructL(void)
+	NewL__21CWapBoundCLWSPService @ 19 NONAME R3UNUSED ; CWapBoundCLWSPService::NewL(void)
+	NewL__21CWapBoundCLWSPServiceRC4TUid @ 20 NONAME R3UNUSED ; CWapBoundCLWSPService::NewL(TUid const &)
+	NewL__22CWapBoundCLPushServiceRC4TUid @ 21 NONAME R3UNUSED ; CWapBoundCLPushService::NewL(TUid const &)
+	NewL__24CWapBoundDatagramServiceRC4TUid @ 22 NONAME R3UNUSED ; CWapBoundDatagramService::NewL(TUid const &)
+	NewL__25CWapFullySpecCLWSPService @ 23 NONAME R3UNUSED ; CWapFullySpecCLWSPService::NewL(void)
+	NewL__25CWapFullySpecCLWSPServiceRC4TUid @ 24 NONAME R3UNUSED ; CWapFullySpecCLWSPService::NewL(TUid const &)
+	NewL__26CWapFullySpecCLPushServiceRC4TUid @ 25 NONAME R3UNUSED ; CWapFullySpecCLPushService::NewL(TUid const &)
+	NewL__28CWapFullySpecDatagramServiceRC4TUid @ 26 NONAME R3UNUSED ; CWapFullySpecDatagramService::NewL(TUid const &)
+	"_._21CWapBoundCLWSPService" @ 27 NONAME R3UNUSED ; CWapBoundCLWSPService::~CWapBoundCLWSPService(void)
+	"_._25CWapFullySpecCLWSPService" @ 28 NONAME R3UNUSED ; CWapFullySpecCLWSPService::~CWapFullySpecCLWSPService(void)
+	__21CWapBoundCLWSPService @ 29 NONAME R3UNUSED ; CWapBoundCLWSPService::CWapBoundCLWSPService(void)
+	__25CWapFullySpecCLWSPService @ 30 NONAME R3UNUSED ; CWapFullySpecCLWSPService::CWapFullySpecCLWSPService(void)
+	ConstructL__21CWapBoundCLWSPService @ 31 NONAME R3UNUSED ; CWapBoundCLWSPService::ConstructL(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/bwins/WAPMSGCLIU.DEF	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,33 @@
+EXPORTS
+	??0CWapBoundCLPushService@@IAE@XZ @ 1 NONAME ; protected: __thiscall CWapBoundCLPushService::CWapBoundCLPushService(void)
+	??0CWapBoundDatagramService@@IAE@XZ @ 2 NONAME ; protected: __thiscall CWapBoundDatagramService::CWapBoundDatagramService(void)
+	??0CWapFullySpecCLPushService@@IAE@XZ @ 3 NONAME ; protected: __thiscall CWapFullySpecCLPushService::CWapFullySpecCLPushService(void)
+	??0CWapFullySpecDatagramService@@IAE@XZ @ 4 NONAME ; protected: __thiscall CWapFullySpecDatagramService::CWapFullySpecDatagramService(void)
+	??1CWapBoundCLPushService@@UAE@XZ @ 5 NONAME ; public: virtual __thiscall CWapBoundCLPushService::~CWapBoundCLPushService(void)
+	??1CWapBoundDatagramService@@UAE@XZ @ 6 NONAME ; public: virtual __thiscall CWapBoundDatagramService::~CWapBoundDatagramService(void)
+	??1CWapFullySpecCLPushService@@UAE@XZ @ 7 NONAME ; public: virtual __thiscall CWapFullySpecCLPushService::~CWapFullySpecCLPushService(void)
+	??1CWapFullySpecDatagramService@@UAE@XZ @ 8 NONAME ; public: virtual __thiscall CWapFullySpecDatagramService::~CWapFullySpecDatagramService(void)
+	?ConstructL@CWapBoundCLPushService@@IAEXXZ @ 9 NONAME ; protected: void __thiscall CWapBoundCLPushService::ConstructL(void)
+	?ConstructL@CWapBoundDatagramService@@IAEXXZ @ 10 NONAME ; protected: void __thiscall CWapBoundDatagramService::ConstructL(void)
+	?ConstructL@CWapFullySpecCLPushService@@IAEXXZ @ 11 NONAME ; protected: void __thiscall CWapFullySpecCLPushService::ConstructL(void)
+	?ConstructL@CWapFullySpecDatagramService@@IAEXXZ @ 12 NONAME ; protected: void __thiscall CWapFullySpecDatagramService::ConstructL(void)
+	?GetLocalAddressesL@CWapMessageUtils@@SAHAAV?$RArray@VTAddressInfo@Wap@@@@@Z @ 13 NONAME ; public: static int __cdecl CWapMessageUtils::GetLocalAddressesL(class RArray<class Wap::TAddressInfo> &)
+	?NewL@CWapBoundCLPushService@@SAPAV1@XZ @ 14 NONAME ; public: static class CWapBoundCLPushService * __cdecl CWapBoundCLPushService::NewL(void)
+	?NewL@CWapBoundDatagramService@@SAPAV1@XZ @ 15 NONAME ; public: static class CWapBoundDatagramService * __cdecl CWapBoundDatagramService::NewL(void)
+	?NewL@CWapFullySpecCLPushService@@SAPAV1@XZ @ 16 NONAME ; public: static class CWapFullySpecCLPushService * __cdecl CWapFullySpecCLPushService::NewL(void)
+	?NewL@CWapFullySpecDatagramService@@SAPAV1@XZ @ 17 NONAME ; public: static class CWapFullySpecDatagramService * __cdecl CWapFullySpecDatagramService::NewL(void)
+	??0CWapBoundCLWSPService@@IAE@XZ @ 18 NONAME ; protected: __thiscall CWapBoundCLWSPService::CWapBoundCLWSPService(void)
+	??0CWapFullySpecCLWSPService@@IAE@XZ @ 19 NONAME ; protected: __thiscall CWapFullySpecCLWSPService::CWapFullySpecCLWSPService(void)
+	??1CWapBoundCLWSPService@@UAE@XZ @ 20 NONAME ; public: virtual __thiscall CWapBoundCLWSPService::~CWapBoundCLWSPService(void)
+	??1CWapFullySpecCLWSPService@@UAE@XZ @ 21 NONAME ; public: virtual __thiscall CWapFullySpecCLWSPService::~CWapFullySpecCLWSPService(void)
+	?ConstructL@CWapBoundCLWSPService@@IAEXXZ @ 22 NONAME ; protected: void __thiscall CWapBoundCLWSPService::ConstructL(void)
+	?ConstructL@CWapFullySpecCLWSPService@@IAEXXZ @ 23 NONAME ; protected: void __thiscall CWapFullySpecCLWSPService::ConstructL(void)
+	?NewL@CWapBoundCLPushService@@SAPAV1@ABVTUid@@@Z @ 24 NONAME ; public: static class CWapBoundCLPushService * __cdecl CWapBoundCLPushService::NewL(class TUid const &)
+	?NewL@CWapBoundCLWSPService@@SAPAV1@ABVTUid@@@Z @ 25 NONAME ; public: static class CWapBoundCLWSPService * __cdecl CWapBoundCLWSPService::NewL(class TUid const &)
+	?NewL@CWapBoundCLWSPService@@SAPAV1@XZ @ 26 NONAME ; public: static class CWapBoundCLWSPService * __cdecl CWapBoundCLWSPService::NewL(void)
+	?NewL@CWapBoundDatagramService@@SAPAV1@ABVTUid@@@Z @ 27 NONAME ; public: static class CWapBoundDatagramService * __cdecl CWapBoundDatagramService::NewL(class TUid const &)
+	?NewL@CWapFullySpecCLPushService@@SAPAV1@ABVTUid@@@Z @ 28 NONAME ; public: static class CWapFullySpecCLPushService * __cdecl CWapFullySpecCLPushService::NewL(class TUid const &)
+	?NewL@CWapFullySpecCLWSPService@@SAPAV1@ABVTUid@@@Z @ 29 NONAME ; public: static class CWapFullySpecCLWSPService * __cdecl CWapFullySpecCLWSPService::NewL(class TUid const &)
+	?NewL@CWapFullySpecCLWSPService@@SAPAV1@XZ @ 30 NONAME ; public: static class CWapFullySpecCLWSPService * __cdecl CWapFullySpecCLWSPService::NewL(void)
+	?NewL@CWapFullySpecDatagramService@@SAPAV1@ABVTUid@@@Z @ 31 NONAME ; public: static class CWapFullySpecDatagramService * __cdecl CWapFullySpecDatagramService::NewL(class TUid const &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/client/wapmessage.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,508 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+
+#include <wapmessage.h>
+#include <ecom/ecom.h>
+
+/** The WAP Messaging API.  Four interfaces are defined that provide bound and fully-specified versions of WDP and Connectionless Push.
+	An instantiation of each may be obtained using the CreateImplementationL() function, and must be released using Release() when no
+	longer required.  Release() causes the instantiation to be deleted.
+*/
+
+// Use SWS as default WAP stack
+//  If undefined th3em NWSS stack will be used as default
+#define WAPUSE_SWS // since 8.0
+
+#ifndef WAPUSE_SWS
+// Symbian OS 7.0
+_LIT8(KDefBoundWdpCue, "wdp/bound");
+_LIT8(KDefFullSpecWdpCue, "wdp/fullyspec");
+_LIT8(KDefBoundCLPushCue, "clpush/bound");
+_LIT8(KDefFullSpecCLPushCue, "clpush/fullyspec");
+
+_LIT8(KAltBoundWdpCue, "swswdp/bound");
+_LIT8(KAltFullSpecWdpCue, "swswdp/fullyspec");
+_LIT8(KAltBoundCLPushCue, "swsclpush/bound");
+_LIT8(KAltFullSpecCLPushCue, "swsclpush/fullyspec");
+
+#else
+// Symbian OS 8.0
+_LIT8(KAltBoundWdpCue, "wdp/bound");
+_LIT8(KAltFullSpecWdpCue, "wdp/fullyspec");
+_LIT8(KAltBoundCLPushCue, "clpush/bound");
+_LIT8(KAltFullSpecCLPushCue, "clpush/fullyspec");
+
+_LIT8(KDefBoundWdpCue, "swswdp/bound");
+_LIT8(KDefFullSpecWdpCue, "swswdp/fullyspec");
+_LIT8(KDefBoundCLPushCue, "swsclpush/bound");
+_LIT8(KDefFullSpecCLPushCue, "swsclpush/fullyspec");
+#endif
+
+_LIT8(KBoundCLWSPCue, "swsclwsp/bound");
+_LIT8(KFullSpecCLWSPCue, "swsclwsp/fullyspec");
+
+/** Bound WDP
+*/
+
+EXPORT_C 
+CWapBoundDatagramService* CWapBoundDatagramService::NewL()
+	/** Allocates and creates a new CWapBoundDatagramService object. 
+	* 
+	* @return	A new CWapBoundDatagramService object.
+	* @leave	System wide error codes
+	*/
+	{
+	// CWapBoundDatagramService ECOM Interface UID = 101F4471
+	const TUid KUidBoundWDPInterface = {0x101F4471};
+
+	// Set resolving parameters
+	TEComResolverParams resolverParams;
+	resolverParams.SetDataType(KDefBoundWdpCue);
+	resolverParams.SetWildcardMatch(ETrue);
+
+	// Get the instantiation
+	TInt trapValue(0); 
+	TAny* ptr = NULL;
+	TRAP(trapValue, ptr = REComSession::CreateImplementationL(KUidBoundWDPInterface,
+								 _FOFF(CWapBoundDatagramService, iDtor_ID_Key),
+								 resolverParams));
+	if(trapValue)
+	{
+		resolverParams.SetDataType(KAltBoundWdpCue);
+		// Trying to load old wapmessage plug-in
+		ptr = REComSession::CreateImplementationL(KUidBoundWDPInterface,
+								 _FOFF(CWapBoundDatagramService, iDtor_ID_Key),
+								 resolverParams);
+	}
+
+	return REINTERPRET_CAST(CWapBoundDatagramService*, ptr);
+	}
+
+EXPORT_C 
+CWapBoundDatagramService* CWapBoundDatagramService::NewL(const TUid& aImplementation)
+	/** Allocates and creates a new CWapBoundDatagramService object. 
+	* 
+	* @param aImplementation
+	* @return					A new CWapBoundDatagramService object.
+	* @leave					System wide error codes
+	*/
+	{
+		TAny* ptr = REComSession::CreateImplementationL(aImplementation,
+								 _FOFF(CWapBoundDatagramService, iDtor_ID_Key));
+
+	return	REINTERPRET_CAST(CWapBoundDatagramService*, ptr);
+	}
+
+EXPORT_C 
+CWapBoundDatagramService::~CWapBoundDatagramService()
+	/** Destructor */
+	{
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+
+EXPORT_C 
+CWapBoundDatagramService::CWapBoundDatagramService()
+	{
+	}
+
+EXPORT_C 
+void CWapBoundDatagramService::ConstructL()
+	{
+	}
+	
+/** Fully-specified WDP
+*/
+
+EXPORT_C 
+CWapFullySpecDatagramService* CWapFullySpecDatagramService::NewL()
+	/** Allocates and creates a new CWapFullySpecDatagramService object. 
+	* 
+	* @return	A new CWapFullySpecDatagramService object.
+	* @leave	System wide error codes.
+	*/
+	{
+	// MWapFullySpecDatagramService ECOM Interface UID = 101F4473
+	const TUid KUidFullySpecDatagramInterface = {0x101F4473};
+
+	// Set resolving parameters
+	TEComResolverParams resolverParams;
+	resolverParams.SetDataType(KDefFullSpecWdpCue);
+	resolverParams.SetWildcardMatch(ETrue);
+
+	// Get the instantiation
+	TInt trapValue(0); 
+	TAny* ptr = NULL;
+	TRAP(trapValue, ptr = REComSession::CreateImplementationL(KUidFullySpecDatagramInterface,
+								 _FOFF(CWapFullySpecDatagramService, iDtor_ID_Key),
+								 resolverParams));
+	if(trapValue)
+	{
+		// Trying to load old wapmessage plug-in
+		resolverParams.SetDataType(KAltFullSpecWdpCue);
+		ptr = REComSession::CreateImplementationL(KUidFullySpecDatagramInterface,
+								 _FOFF(CWapFullySpecDatagramService, iDtor_ID_Key),
+								 resolverParams);
+	}
+
+	return REINTERPRET_CAST(CWapFullySpecDatagramService*, ptr);
+	}
+
+EXPORT_C 
+CWapFullySpecDatagramService* CWapFullySpecDatagramService::NewL(const TUid& aImplementation)
+	/** Allocates and creates a new CWapFullySpecDatagramService object. 
+	* 
+	* @param aImplementation	
+	* @return					A new CWapFullySpecDatagramService object.
+	* @leave					System wide error codes.
+	*/
+	{
+		TAny* ptr = REComSession::CreateImplementationL(aImplementation,
+								 _FOFF(CWapFullySpecDatagramService, iDtor_ID_Key));
+
+	return	REINTERPRET_CAST(CWapFullySpecDatagramService*, ptr);
+	}
+
+EXPORT_C 
+CWapFullySpecDatagramService::~CWapFullySpecDatagramService()
+	/** Destructor */
+	{
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+
+EXPORT_C 
+CWapFullySpecDatagramService::CWapFullySpecDatagramService()
+	{
+	}
+
+EXPORT_C 
+void CWapFullySpecDatagramService::ConstructL()
+	{
+	}
+
+/** Bound Connection-less Push
+*/
+
+EXPORT_C 
+CWapBoundCLPushService* CWapBoundCLPushService::NewL()
+	/** Allocates and creates a new CWapBoundCLPushService object. 
+	*
+	* @return	A new <code>CWapBoundCLPushService</code> object.
+	* @leave	System wide error codes.
+	*/
+	{
+	// MWapBoundCLPushService ECOM Interface UID = 101F4475
+	const TUid KUidBoundCLPushInterface = {0x101F4475};
+
+	// Set resolving parameters
+	TEComResolverParams resolverParams;
+	resolverParams.SetDataType(KDefBoundCLPushCue);
+	resolverParams.SetWildcardMatch(ETrue);
+
+	// Get the instantiation
+	TInt trapValue(0); 
+	TAny* ptr = NULL;
+	TRAP(trapValue, ptr = REComSession::CreateImplementationL(KUidBoundCLPushInterface,
+								 _FOFF(CWapBoundCLPushService, iDtor_ID_Key),
+								 resolverParams));
+	if(trapValue)
+	{
+		// Trying to load old wapmessage plug-in
+		resolverParams.SetDataType(KAltBoundCLPushCue);
+		ptr = REComSession::CreateImplementationL(KUidBoundCLPushInterface,
+								 _FOFF(CWapBoundCLPushService, iDtor_ID_Key),
+								 resolverParams);
+	}
+	return REINTERPRET_CAST(CWapBoundCLPushService*, ptr);
+	}
+
+EXPORT_C 
+CWapBoundCLPushService* CWapBoundCLPushService::NewL(const TUid& aImplementation)
+	/** Allocates and creates a new CWapBoundCLPushService object. 
+	*
+	* @param aImplementation	
+	* @return					A new CWapBoundCLPushService object.
+	* @leave					System wide error codes.
+	*/
+	{
+		TAny* ptr = REComSession::CreateImplementationL(aImplementation,
+								 _FOFF(CWapBoundCLPushService, iDtor_ID_Key));
+
+	return	REINTERPRET_CAST(CWapBoundCLPushService*, ptr);
+	}
+
+EXPORT_C 
+CWapBoundCLPushService::~CWapBoundCLPushService()
+	/** Destructor */
+	{
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+
+EXPORT_C 
+CWapBoundCLPushService::CWapBoundCLPushService()
+	{
+	}
+
+EXPORT_C 
+void CWapBoundCLPushService::ConstructL()
+	{
+	}
+
+/** Fully-specified Connection-less Push
+*/
+
+EXPORT_C 
+CWapFullySpecCLPushService* CWapFullySpecCLPushService::NewL()
+	/** Allocates and creates a new CWapFullySpecCLPushService object. 
+	*
+	* @return	A new CWapFullySpecCLPushService object.
+	* @leave	System wide error codes.
+	*/
+	{
+	// MWapFullySpecCLPushService ECOM Interface UID = 101F4477
+	const TUid KUidFullySpecCLPushInterface = {0x101F4477};
+
+	// Set resolving parameters
+	TEComResolverParams resolverParams;
+	resolverParams.SetDataType(KDefFullSpecCLPushCue);
+	resolverParams.SetWildcardMatch(ETrue);
+
+	// Get the instantiation
+	TInt trapValue(0); 
+	TAny* ptr = NULL;
+	TRAP(trapValue, ptr = REComSession::CreateImplementationL(KUidFullySpecCLPushInterface,
+								 _FOFF(CWapFullySpecCLPushService, iDtor_ID_Key),
+								 resolverParams));
+	if(trapValue)
+	{
+		// Trying to load old wapmessage plug-in
+		resolverParams.SetDataType(KAltFullSpecCLPushCue);
+		ptr = REComSession::CreateImplementationL(KUidFullySpecCLPushInterface,
+								 _FOFF(CWapFullySpecCLPushService, iDtor_ID_Key),
+								 resolverParams);
+	}
+
+	return REINTERPRET_CAST(CWapFullySpecCLPushService*, ptr);
+	}
+
+EXPORT_C 
+CWapFullySpecCLPushService* CWapFullySpecCLPushService::NewL(const TUid& aImplementation)
+	/** Allocates and creates a new CWapFullySpecCLPushService object. 
+	*
+	* @param aImplementation
+	* @return					A new CWapFullySpecCLPushService object.
+	* @leave					System wide error codes.
+	*/
+	{
+		TAny* ptr = REComSession::CreateImplementationL(aImplementation,
+								 _FOFF(CWapFullySpecCLPushService, iDtor_ID_Key));
+
+	return	REINTERPRET_CAST(CWapFullySpecCLPushService*, ptr);
+	}
+
+EXPORT_C 
+CWapFullySpecCLPushService::~CWapFullySpecCLPushService()
+	/** Destructor */
+	{
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+
+EXPORT_C 
+CWapFullySpecCLPushService::CWapFullySpecCLPushService()
+	{
+	}
+
+EXPORT_C 
+void CWapFullySpecCLPushService::ConstructL()
+	{
+	}
+
+/** Bound WSP
+	New interface and implementation
+*/
+
+EXPORT_C 
+CWapBoundCLWSPService* CWapBoundCLWSPService::NewL()
+	/** Allocates and creates a new CWapBoundCLWSPService object. 
+	*
+	* @return					A new CWapBoundCLWSPService object.
+	* @leave					System wide error codes.
+	*/
+	{
+	// CWapBoundWSPService ECOM Interface UID = 101FBB3B
+	const TUid KUidBoundCLWSPInterface = {0x101FBB3B};
+
+	// Set resolving parameters
+	TEComResolverParams resolverParams;
+	resolverParams.SetDataType(KBoundCLWSPCue);
+	resolverParams.SetWildcardMatch(ETrue);
+
+	// Get the instantiation
+	TAny* ptr = REComSession::CreateImplementationL(KUidBoundCLWSPInterface,
+								 _FOFF(CWapBoundCLWSPService, iDtor_ID_Key),
+								 resolverParams);
+
+	return REINTERPRET_CAST(CWapBoundCLWSPService*, ptr);
+	}
+
+EXPORT_C 
+CWapBoundCLWSPService* CWapBoundCLWSPService::NewL(const TUid& aImplementation)
+	/** Allocates and creates a new CWapBoundCLWSPService object. 
+	*
+	* @param aImplementation
+	* @return					A new CWapBoundCLWSPService object.
+	* @leave					System wide error codes.
+	*/
+	{
+		TAny* ptr = REComSession::CreateImplementationL(aImplementation,
+								 _FOFF(CWapBoundCLWSPService, iDtor_ID_Key));
+
+	return	REINTERPRET_CAST(CWapBoundCLWSPService*, ptr);
+	}
+
+EXPORT_C 
+CWapBoundCLWSPService::~CWapBoundCLWSPService()
+	/** Destructor */
+	{
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+
+EXPORT_C 
+CWapBoundCLWSPService::CWapBoundCLWSPService()
+	{
+	}
+
+EXPORT_C 
+void CWapBoundCLWSPService::ConstructL()
+	{
+	}
+
+/** Fully-specified Connection-less WSP
+	New interface and implementation
+*/
+
+EXPORT_C 
+CWapFullySpecCLWSPService* CWapFullySpecCLWSPService::NewL()
+	/** Allocates and creates a new CWapFullySpecCLWSPService object. 
+	*
+	* @return					A new CWapFullySpecCLWSPService object.
+	* @leave					System wide error codes.
+	*/
+	{
+	// CWapFullySpecCLWSPService ECOM Interface UID = 101FBB3D
+	const TUid KUidFullySpecCLWSPInterface = {0x101FBB3D};
+
+	// Set resolving parameters
+	TEComResolverParams resolverParams;
+	resolverParams.SetDataType(KFullSpecCLWSPCue);
+	resolverParams.SetWildcardMatch(ETrue);
+
+	// Get the instantiation
+	TAny* ptr = REComSession::CreateImplementationL(KUidFullySpecCLWSPInterface,
+								 _FOFF(CWapFullySpecCLWSPService, iDtor_ID_Key),
+								 resolverParams);
+
+	return REINTERPRET_CAST(CWapFullySpecCLWSPService*, ptr);
+	}
+
+EXPORT_C 
+CWapFullySpecCLWSPService* CWapFullySpecCLWSPService::NewL(const TUid& aImplementation)
+	/** Allocates and creates a new CWapFullySpecCLWSPService object. 
+	*
+	* @param aImplementation
+	* @return					A new CWapFullySpecCLWSPService object.
+	* @leave					System wide error codes.
+	*/
+	{
+		TAny* ptr = REComSession::CreateImplementationL(aImplementation,
+								 _FOFF(CWapFullySpecCLWSPService, iDtor_ID_Key));
+
+	return	REINTERPRET_CAST(CWapFullySpecCLWSPService*, ptr);
+	}
+
+EXPORT_C 
+CWapFullySpecCLWSPService::~CWapFullySpecCLWSPService()
+	/** Destructor */
+	{
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+
+EXPORT_C 
+CWapFullySpecCLWSPService::CWapFullySpecCLWSPService()
+	{
+	}
+
+EXPORT_C 
+void CWapFullySpecCLWSPService::ConstructL()
+	{
+	}
+
+   
+EXPORT_C TInt CWapMessageUtils::GetLocalAddressesL(RArray<Wap::TAddressInfo>& aAddressInfo)
+	/** Gets a list of all the available network interface addresses.
+	*
+	* @param aAddressInfo	On return, an array of the available network interface addresses.
+	* @return				KErrNone if successful, KErrNotFound if there are no addresses available. */
+	{
+	Wap::TAddressInfo addrInfo;
+
+	// Check if the esock ini file has been parsed
+//	User::LeaveIfError(Nifman::CheckIniConfig());
+
+	// The list of interfaces is available from a RSocket.GetOpt
+	TAutoClose<RSocketServ> sockServer;
+	User::LeaveIfError(sockServer.iObj.Connect());
+	sockServer.PushL();
+
+	TAutoClose<RSocket> sock;
+	User::LeaveIfError(sock.iObj.Open(sockServer.iObj, _L("udp")));
+	sock.PushL();
+
+	User::LeaveIfError(sock.iObj.SetOpt(KSoInetEnumInterfaces, KSolInetIfCtrl));
+
+	TPckgBuf<TSoInetInterfaceInfo> info, next;
+
+	TInt res=sock.iObj.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, info);
+	if(res!=KErrNone)
+		User::Leave(res);
+
+	TInt validAddr = KErrNotFound;
+
+	while(res==KErrNone)
+		{
+		res=sock.iObj.GetOpt(KSoInetNextInterface, KSolInetIfCtrl, next);
+
+		// Only consider the address is its up, and is point to point.
+		// (TODO-would it be right to include pending state addresses too????)
+		if ( (info().iState == EIfUp) &&
+			 (info().iFeatures & KIfIsPointToPoint) )
+			{
+			// Just want the interface name
+			// = info().iName;
+			// and the address
+			// = info().iAddress;
+			validAddr = KErrNone;	   
+			
+			addrInfo.iAddress = info().iAddress;
+			addrInfo.iName = info().iName;
+			aAddressInfo.Append(addrInfo);
+			}
+		}
+
+	sock.Pop();
+	sockServer.Pop();
+
+	return validAddr;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/client/wapmsgclisource.mmpi	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,19 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Contains just source of wapmsg, not including file that defines the dll entry point
+
+SOURCE			wapmessage.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/eabi/wapmsgcliU.DEF	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,56 @@
+EXPORTS
+	_ZN16CWapMessageUtils18GetLocalAddressesLER6RArrayIN3Wap12TAddressInfoEE @ 1 NONAME
+	_ZN21CWapBoundCLWSPService10ConstructLEv @ 2 NONAME
+	_ZN21CWapBoundCLWSPService4NewLERK4TUid @ 3 NONAME
+	_ZN21CWapBoundCLWSPService4NewLEv @ 4 NONAME
+	_ZTV28CWapFullySpecDatagramService @5 NONAME ; #<VT>#
+	_ZN21CWapBoundCLWSPServiceC2Ev @ 6 NONAME
+	_ZN21CWapBoundCLWSPServiceD0Ev @ 7 NONAME
+	_ZN21CWapBoundCLWSPServiceD1Ev @ 8 NONAME
+	_ZN21CWapBoundCLWSPServiceD2Ev @ 9 NONAME
+	_ZN22CWapBoundCLPushService10ConstructLEv @ 10 NONAME
+	_ZN22CWapBoundCLPushService4NewLERK4TUid @ 11 NONAME
+	_ZN22CWapBoundCLPushService4NewLEv @ 12 NONAME
+	_ZTV26CWapFullySpecCLPushService @13 NONAME ; #<VT>#
+	_ZN22CWapBoundCLPushServiceC2Ev @ 14 NONAME
+	_ZN22CWapBoundCLPushServiceD0Ev @ 15 NONAME
+	_ZN22CWapBoundCLPushServiceD1Ev @ 16 NONAME
+	_ZN22CWapBoundCLPushServiceD2Ev @ 17 NONAME
+	_ZN24CWapBoundDatagramService10ConstructLEv @ 18 NONAME
+	_ZN24CWapBoundDatagramService4NewLERK4TUid @ 19 NONAME
+	_ZN24CWapBoundDatagramService4NewLEv @ 20 NONAME
+	_ZTV25CWapFullySpecCLWSPService @21 NONAME ; #<VT>#
+	_ZN24CWapBoundDatagramServiceC2Ev @ 22 NONAME
+	_ZN24CWapBoundDatagramServiceD0Ev @ 23 NONAME
+	_ZN24CWapBoundDatagramServiceD1Ev @ 24 NONAME
+	_ZN24CWapBoundDatagramServiceD2Ev @ 25 NONAME
+	_ZN25CWapFullySpecCLWSPService10ConstructLEv @ 26 NONAME
+	_ZN25CWapFullySpecCLWSPService4NewLERK4TUid @ 27 NONAME
+	_ZN25CWapFullySpecCLWSPService4NewLEv @ 28 NONAME
+	_ZTV24CWapBoundDatagramService @29 NONAME ; #<VT>#
+	_ZN25CWapFullySpecCLWSPServiceC2Ev @ 30 NONAME
+	_ZN25CWapFullySpecCLWSPServiceD0Ev @ 31 NONAME
+	_ZN25CWapFullySpecCLWSPServiceD1Ev @ 32 NONAME
+	_ZN25CWapFullySpecCLWSPServiceD2Ev @ 33 NONAME
+	_ZN26CWapFullySpecCLPushService10ConstructLEv @ 34 NONAME
+	_ZN26CWapFullySpecCLPushService4NewLERK4TUid @ 35 NONAME
+	_ZN26CWapFullySpecCLPushService4NewLEv @ 36 NONAME
+	_ZTV22CWapBoundCLPushService @37 NONAME ; #<VT>#
+	_ZN26CWapFullySpecCLPushServiceC2Ev @ 38 NONAME
+	_ZN26CWapFullySpecCLPushServiceD0Ev @ 39 NONAME
+	_ZN26CWapFullySpecCLPushServiceD1Ev @ 40 NONAME
+	_ZN26CWapFullySpecCLPushServiceD2Ev @ 41 NONAME
+	_ZN28CWapFullySpecDatagramService10ConstructLEv @ 42 NONAME
+	_ZN28CWapFullySpecDatagramService4NewLERK4TUid @ 43 NONAME
+	_ZN28CWapFullySpecDatagramService4NewLEv @ 44 NONAME
+	_ZTV21CWapBoundCLWSPService @45 NONAME ; #<VT>#
+	_ZN28CWapFullySpecDatagramServiceC2Ev @ 46 NONAME
+	_ZN28CWapFullySpecDatagramServiceD0Ev @ 47 NONAME
+	_ZN28CWapFullySpecDatagramServiceD1Ev @ 48 NONAME
+	_ZN28CWapFullySpecDatagramServiceD2Ev @ 49 NONAME
+	_ZTI21CWapBoundCLWSPService @ 50 NONAME ; #<TI>#
+	_ZTI22CWapBoundCLPushService @ 51 NONAME ; #<TI>#
+	_ZTI24CWapBoundDatagramService @ 52 NONAME ; #<TI>#
+	_ZTI25CWapFullySpecCLWSPService @ 53 NONAME ; #<TI>#
+	_ZTI26CWapFullySpecCLPushService @ 54 NONAME ; #<TI>#
+	_ZTI28CWapFullySpecDatagramService @ 55 NONAME ; #<TI>#
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/bld.inf	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,122 @@
+/*
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+@file
+
+@SYMPurpose WAP messaging
+*/
+
+PRJ_EXPORTS
+// specify the source file followed by its destination here
+// copy will be used to copy the source file to its destination
+// If there's no destination then the source file will be copied
+// to the same name in \epoc32\include
+
+../inc/wapmessage.h SYMBIAN_OS_LAYER_PUBLIC_EXPORT_PATH(wapmessage.h)
+../inc/wapmsgerr.h SYMBIAN_OS_LAYER_PLATFORM_EXPORT_PATH(wapmsgerr.h)
+
+wapmessage.iby /epoc32/rom/include/wapmessage.iby
+
+// Following file is identical to wapstacksuite_config.ini. The
+// hw one is used by iby file to configure wap-stack to use CdmaWapProt
+hwWapStackConfig.ini  z:/system/data/hwwapstackconfig.ini
+
+PRJ_TESTEXPORTS
+// Shortened WAP stack test IBY
+../te_wapstack/group/WapStackSuite.iby   	/epoc32/rom/include/wapstacksuite.iby
+
+
+// .script and .ini files for the test suite
+../te_wapstack/scripts/Te_WapStackSuite.script	/epoc32/release/wins/udeb/z/testdata/scripts/te_wapstacksuite.script
+../te_wapstack/scripts/Te_WapStackSuite.script	/epoc32/release/wins/urel/z/testdata/scripts/te_wapstacksuite.script
+../te_wapstack/scripts/Te_WapStackSuite.script	/epoc32/release/winscw/udeb/z/testdata/scripts/te_wapstacksuite.script
+../te_wapstack/scripts/Te_WapStackSuite.script	/epoc32/release/winscw/urel/z/testdata/scripts/te_wapstacksuite.script
+../te_wapstack/scripts/WapBoundWDP.script	/epoc32/release/wins/udeb/z/testdata/scripts/wapboundwdp.script
+../te_wapstack/scripts/WapBoundWDP.script	/epoc32/release/wins/urel/z/testdata/scripts/wapboundwdp.script
+../te_wapstack/scripts/WapBoundWDP.script	/epoc32/release/winscw/udeb/z/testdata/scripts/wapboundwdp.script
+../te_wapstack/scripts/WapBoundWDP.script	/epoc32/release/winscw/urel/z/testdata/scripts/wapboundwdp.script
+
+../te_wapstack/scripts/WapBoundPush.script	/epoc32/release/wins/udeb/z/testdata/scripts/wapboundpush.script
+../te_wapstack/scripts/WapBoundPush.script	/epoc32/release/wins/urel/z/testdata/scripts/wapboundpush.script
+../te_wapstack/scripts/WapBoundPush.script	/epoc32/release/winscw/udeb/z/testdata/scripts/wapboundpush.script
+../te_wapstack/scripts/WapBoundPush.script	/epoc32/release/winscw/urel/z/testdata/scripts/wapboundpush.script
+
+../te_wapstack/scripts/WapBoundWSP.script	/epoc32/release/wins/udeb/z/testdata/scripts/wapboundwsp.script
+../te_wapstack/scripts/WapBoundWSP.script	/epoc32/release/wins/urel/z/testdata/scripts/wapboundwsp.script
+../te_wapstack/scripts/WapBoundWSP.script	/epoc32/release/winscw/udeb/z/testdata/scripts/wapboundwsp.script
+../te_wapstack/scripts/WapBoundWSP.script	/epoc32/release/winscw/urel/z/testdata/scripts/wapboundwsp.script
+
+../te_wapstack/scripts/WapFullySpecWDP.script	/epoc32/release/wins/udeb/z/testdata/scripts/wapfullyspecwdp.script
+../te_wapstack/scripts/WapFullySpecWDP.script	/epoc32/release/wins/urel/z/testdata/scripts/wapfullyspecwdp.script
+../te_wapstack/scripts/WapFullySpecWDP.script	/epoc32/release/winscw/udeb/z/testdata/scripts/wapfullyspecwdp.script
+../te_wapstack/scripts/WapFullySpecWDP.script	/epoc32/release/winscw/urel/z/testdata/scripts/wapfullyspecwdp.script
+
+../te_wapstack/scripts/WapFullySpecPush.script	/epoc32/release/wins/udeb/z/testdata/scripts/wapfullyspecpush.script
+../te_wapstack/scripts/WapFullySpecPush.script	/epoc32/release/wins/urel/z/testdata/scripts/wapfullyspecpush.script
+../te_wapstack/scripts/WapFullySpecPush.script	/epoc32/release/winscw/udeb/z/testdata/scripts/wapfullyspecpush.script
+../te_wapstack/scripts/WapFullySpecPush.script	/epoc32/release/winscw/urel/z/testdata/scripts/wapfullyspecpush.script
+
+../te_wapstack/scripts/WapFullySpecWSP.script	/epoc32/release/wins/udeb/z/testdata/scripts/wapfullyspecwsp.script
+../te_wapstack/scripts/WapFullySpecWSP.script	/epoc32/release/wins/urel/z/testdata/scripts/wapfullyspecwsp.script
+../te_wapstack/scripts/WapFullySpecWSP.script	/epoc32/release/winscw/udeb/z/testdata/scripts/wapfullyspecwsp.script
+../te_wapstack/scripts/WapFullySpecWSP.script	/epoc32/release/winscw/urel/z/testdata/scripts/wapfullyspecwsp.script
+
+../te_wapstack/scripts/UDPPush.script		/epoc32/release/wins/udeb/z/testdata/scripts/udppush.script
+../te_wapstack/scripts/UDPPush.script		/epoc32/release/wins/urel/z/testdata/scripts/udppush.script
+../te_wapstack/scripts/UDPPush.script		/epoc32/release/winscw/udeb/z/testdata/scripts/udppush.script
+../te_wapstack/scripts/UDPPush.script		/epoc32/release/winscw/urel/z/testdata/scripts/udppush.script
+
+../te_wapstack/testdata/WapStackSuite.ini	/epoc32/release/wins/udeb/z/testdata/configs/wapstacksuite.ini
+../te_wapstack/testdata/WapStackSuite.ini	/epoc32/release/wins/urel/z/testdata/configs/wapstacksuite.ini
+../te_wapstack/testdata/WapStackSuite.ini	/epoc32/release/winscw/udeb/z/testdata/configs/wapstacksuite.ini
+../te_wapstack/testdata/WapStackSuite.ini	/epoc32/release/winscw/urel/z/testdata/configs/wapstacksuite.ini
+
+../te_wapstack/testdata/UDPPush.ini		/epoc32/release/wins/udeb/z/testdata/configs/udppush.ini
+../te_wapstack/testdata/UDPPush.ini		/epoc32/release/wins/urel/z/testdata/configs/udppush.ini
+../te_wapstack/testdata/UDPPush.ini		/epoc32/release/winscw/udeb/z/testdata/configs/udppush.ini
+../te_wapstack/testdata/UDPPush.ini		/epoc32/release/winscw/urel/z/testdata/configs/udppush.ini
+
+../te_wapstack/testdata/pushpdu.bin		/epoc32/release/wins/udeb/z/testdata/configs/pushpdu.bin
+../te_wapstack/testdata/pushpdu.bin		/epoc32/release/wins/urel/z/testdata/configs/pushpdu.bin
+../te_wapstack/testdata/pushpdu.bin		/epoc32/release/winscw/udeb/z/testdata/configs/pushpdu.bin
+../te_wapstack/testdata/pushpdu.bin		/epoc32/release/winscw/urel/z/testdata/configs/pushpdu.bin
+
+../te_wapstack/testdata/WapStackSuite.xml	/epoc32/release/wins/udeb/z/testdata/configs/wapstacksuite.xml
+../te_wapstack/testdata/WapStackSuite.xml	/epoc32/release/wins/urel/z/testdata/configs/wapstacksuite.xml
+../te_wapstack/testdata/WapStackSuite.xml	/epoc32/release/winscw/udeb/z/testdata/configs/wapstacksuite.xml
+../te_wapstack/testdata/WapStackSuite.xml	/epoc32/release/winscw/urel/z/testdata/configs/wapstacksuite.xml
+
+../te_wapstack/testdata/WapSIMTSY.txt		/epoc32/release/wins/udeb/z/testdata/configs/wapsimtsy.txt
+../te_wapstack/testdata/WapSIMTSY.txt		/epoc32/release/wins/urel/z/testdata/configs/wapsimtsy.txt
+../te_wapstack/testdata/WapSIMTSY.txt		/epoc32/release/winscw/udeb/z/testdata/configs/wapsimtsy.txt
+../te_wapstack/testdata/WapSIMTSY.txt		/epoc32/release/winscw/urel/z/testdata/configs/wapsimtsy.txt
+
+../te_wapstack/testdata/WapStackSuite_Config.ini	/epoc32/release/wins/udeb/z/testdata/configs/wapstacksuite_config.ini
+../te_wapstack/testdata/WapStackSuite_Config.ini	/epoc32/release/wins/urel/z/testdata/configs/wapstacksuite_config.ini
+../te_wapstack/testdata/WapStackSuite_Config.ini	/epoc32/release/winscw/udeb/z/testdata/configs/wapstacksuite_config.ini
+../te_wapstack/testdata/WapStackSuite_Config.ini	/epoc32/release/winscw/urel/z/testdata/configs/wapstacksuite_config.ini
+
+PRJ_MMPFILES
+// Client API implementation
+../group/wapmsgcli.mmp
+// Shortened WAP stack
+../group/swapmsg.mmp
+
+PRJ_TESTMMPFILES
+// Shortened WAP stack tests
+../te_wapstack/group/WapStackSuite.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/hwWapStackConfig.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1 @@
+RadioBearer= CDMA
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/releasenote.txt	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,46 @@
+TEXT OF RELEASE NOTE  for Wap Messaging API:
+
+Release 4:
+19/12/2001
+Pending  Changelist number: 139990
+
+Releasenote.txt created and backdated using changelist information.
+Fixed defects:
+ BEU-55DJG3 "4 test harnesses panic with KWapMsgPanicDescriptor "
+ BEU-55DKCJ "Under mem leak testing: ALL the  test harnesses commit an Access Violation"
+ BEU-55HNAZ "T_WDPFullySpec has got 3 resources leaked under OOM testing"
+ BEU-55HG9S "Bad Handle panic  running T_WDPFullySpec OOM  test "
+
+Release 3:
+10/12/2001
+Changelist number: 137374
+
+Changes made after code review of component.
+
+Placed error codes in Wap namespace, and made more unique.
+Removed non relevant comments.
+Replaced empty _LIT's with KNullDesC8
+Added a panic if non-null pointer is passed in to GetLocalAddress
+
+
+Release 2:
+28/11/2001
+Change list number: 133670
+Second release of Wap Messaging API.
+All functions now implemented, and test code submitted as well.
+
+
+Release 1:
+09/11/2001
+Change list number: 128473
+
+Early release of new Hurricane WAP Messaging API.
+This is being released into the mainline now so clients can start to implement code changes against this incomplete, but frozen API, release.
+
+This is a new replacement API for part of the wapstack, but the existing APIs still remain at present, and so no clients will be effected by this components early release.
+
+The new component has been added to the gt.txt file to be build as part of the mainline.
+
+
+END OF RELEASE NOTE TEXT
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/swapmsg.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,55 @@
+// Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP message API ECOM plug-in
+// swswapmsg.dll Supports connectionless WDP, WSP, Push.
+// 
+//
+
+/**
+ @file 
+*/
+
+OPTION CW   -w off
+target swswapmsg.dll
+targettype plugin
+
+UID	0x10009D8D 	0x101fbb36
+VENDORID 0x70000001
+	
+#include <comms-infras/commsdebugutility.mmh>
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+USERINCLUDE		 ../. ../inc
+
+SOURCEPATH ../sws
+
+SOURCE			swswapmsg.cpp 
+#include "../sws/swswapmsgsource.mmpi"
+
+
+start resource 101fbb36.rss
+target swswapmsg.rsc
+end
+
+// Get GDB symbols included?
+SRCDBG
+
+LIBRARY	euser.lib wapmsgcli.lib insock.lib esock.lib efsrv.lib
+
+
+
+CAPABILITY ALL -Tcb
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/wap-stack_wapmessage.history.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<relnotes name="WAP Message API">
+  <purpose>
+    WAP Push, connectionless WSP, and WDP datagram APIs.
+  </purpose>
+
+  <defect number="PDEF105298" title="Cannot recreate watcher plugin thread if Wap Watcher in ROM and watchers panic" revision="001"></defect>
+  <defect number="PDEF118743" title="No checks for null in CWapMessageApiAgent::~CWapMessageApiAgent()" revision="002"></defect>
+    
+  
+</relnotes>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/wap-stack_wapmessage.mrp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,26 @@
+#
+# Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
+# All rights reserved.
+# This component and the accompanying materials are made available
+# under the terms of "Eclipse Public License v1.0"
+# which accompanies this distribution, and is available
+# at the URL "http://www.eclipse.org/legal/epl-v10.html".
+#
+# Initial Contributors:
+# Nokia Corporation - initial contribution.
+#
+# Contributors:
+#
+# Description: 
+#
+
+component	wap-stack_wapmessage
+source	\sf\os\cellularsrv\wapstack\wapmessageapi
+binary	\sf\os\cellularsrv\wapstack\wapmessageapi\group	all
+exports	\sf\os\cellularsrv\wapstack\wapmessageapi\group
+notes_source	\component_defs\release.src
+
+
+ipr E 
+ipr T \sf\os\cellularsrv\wapstack\wapmessageapi\te_wapstack
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/wapmessage.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,28 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __WAPMESSAGE_IBY__
+#define __WAPMESSAGE_IBY__
+
+file=ABI_DIR\DEBUG_DIR\wapmsgcli.dll	System\Libs\wapmsgcli.dll
+ECOM_PLUGIN(swswapmsg.dll,101fbb36.rsc)
+
+    #ifdef CDMA
+    data=ZSYSTEM\Data\hwWapstackConfig.ini System\Data\wapstackconfig.ini
+    #endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/group/wapmsgcli.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+/**
+@file
+
+@SYMPurpose wapmsgcli.dll Wap messaging Ecom plug-in
+*/
+
+OPTION CW   -w off
+TARGET		wapmsgcli.dll
+TARGETTYPE	DLL
+
+UID	0x1000008D 	0x101f447A
+VENDORID 0x70000001
+	
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+USERINCLUDE		 ../. ../inc
+
+SOURCEPATH ../client
+
+#include "../client/wapmsgclisource.mmpi"
+
+// Get GDB symbols included?
+//SRCDBG
+
+LIBRARY	euser.lib ecom.lib esock.lib insock.lib
+
+CAPABILITY ALL -Tcb
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/inc/wapmessage.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,902 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __WAPMESSAGE_H__
+#define __WAPMESSAGE_H__
+
+
+#include <e32base.h>
+#include <e32std.h>
+#include <in_sock.h>
+#include <nifman.h>
+#include <in_iface.h>
+
+/** 
+* @file
+*
+* The WAP Messaging API.  
+*
+* Four interfaces are defined that provide bound and fully-specified versions of WDP and Connectionless Push.
+* An instantiation of each may be obtained using the CreateImplementationL() function, and must be released 
+* using Release() when no longer required.  Release() causes the instantiation to be deleted.
+*
+* For error codes returned by methods in this API, see <wapmsgerr.h>.  Most methods can return a set of general 
+* errors, with some returning additional specific errors.
+*
+* @publishedAll
+* @released since v7.0
+*/
+
+/** 
+* Defines WAP-related types and error codes. 
+*/
+namespace Wap
+	{
+	// Bearer type definition
+	typedef enum
+	/** Type definition for an enum defining WAP bearer types. */
+		{
+		/** All bearers. */
+		EAll,
+		/** Internet Protocol. */
+		EIP,
+		/** 7-bit SMS. */
+		ESMS7,
+		/** 8-bit SMS. */
+		ESMS,
+		/** 7-bit SMS. The bearers WAPSMS and WAPSMS7 are intended for WAP browsing where 
+		delivery reports are not required and the validity period is much shorter (5 minutes). */
+		EWAPSMS7,
+		/** 8-bit SMS. */
+		EWAPSMS
+		} TBearer;
+
+	// Port number definition
+	/** A port number. */
+	typedef TUint16 TPort;
+ 
+	class TAddressInfo
+	/** Encapsulates an interface name and address. */
+		{
+	public:
+		/** Interface name. */
+		TName iName;
+		/** Interface IP address. */
+		TInetAddr iAddress;
+		};
+	}
+
+
+/**
+* The WSP status type definition.
+* @internalComponent
+*/
+typedef TUint8 TWSPStatus;
+	
+/** Bound WDP */
+class CWapBoundDatagramService : public CBase
+/** 
+* Sends and receives datagrams over WDP using a specified local port.
+*
+* The class is an ECom plug-in interface. Clients use NewL() to request an implementation 
+* of the interface, and then call the interface's virtual functions to access 
+* the implementation's services. 
+*
+* The use of the plug-in architecture allows different implementations to use 
+* different underlying WAP stacks.
+*
+* Functions can return system wide error codes, and also API-specific errors 
+* as defined in wapmsgerr.h. 
+* 
+*/
+	{
+public: // creation/deletion
+	IMPORT_C static CWapBoundDatagramService* NewL();
+	IMPORT_C static CWapBoundDatagramService* NewL(const TUid& aImplementation);
+	IMPORT_C virtual ~CWapBoundDatagramService();
+
+public: // API methods
+
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* subsequent incoming datagrams.
+	*
+	* This overload of Connect() allows an IP address associated with a network 
+	* interface to be specified. In multihomed systems, this can be used to specify 
+	* the network interface to which the endpoint should be bound.
+	* 
+	* All CWapBoundDatagramService implementations must automatically close this 
+	* endpoint upon destruction.
+	* 
+	* @param aBearer	The bearer to listen on. Use EAll to specify all bearers.
+	* @param aPort		The port to listen on. If set to 0, a local port will be chosen 
+	* 					for the client's first SendTo()
+	* @param aInetAddr	The IP address of the network interface that should be used 
+	*					in a multihomed system.
+	* @return			KErrNone on successful completion, or one of the system error codes 
+	* 					on failure.
+	*/
+	virtual TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort,TInetAddr aInetAddr)=0;
+
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* subsequent incoming datagrams.
+	* 
+	* All CWapBoundDatagramService implementations must automatically close this 
+	* endpoint upon destruction. 
+	* 
+	* @param aBearer	The bearer to listen on. Use EAll to specify all bearers.
+	* @param aPort		The port to listen on. If set to 0, a local port will be chosen 
+	* 					for the client's first SendTo()
+	* @return			KErrNone on successful completion, or one of the system error codes 
+	* 					on failure.
+	*/
+	virtual TInt Connect(Wap::TBearer aBearer,Wap::TPort aPort)=0;
+
+	/** Sends data to a remote endpoint. 
+	* 
+	* @param aRemoteHost	The address of the remote host to which to send the data. 
+	* 						The format of the address is bearer-specific.
+	* @param aRemotePort	The port on the remote host to which the data will be sent
+	* @param aBuffer		The data buffer to be sent
+	* @param aBearer		The bearer to be used, if the bound connection was opened with EAll
+	* @return				KErrNone on successful completion, or one of the system error codes 
+	* 						on failure.
+	*/
+virtual TInt SendTo(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, const TDesC8& aBuffer, Wap::TBearer aBearer)=0;
+
+	/** 
+	* Waits for a datagram to be received, and discovers the size of buffer required 
+	* to retrieve it.
+	* 
+	* This asynchronous method waits for a datagram to be received and will then 
+	* complete allowing the client to discover how large a buffer is needed to retrieve 
+	* the entire datagram that has been received. A later call to RecvFrom() with 
+	* a buffer of sufficient size will then allow the client to retrieve the datagram 
+	* fully. 
+	* 
+	* @param aDataSizePckg	On completion, the size of data received, in bytes
+	* @param aReqStatus		Asynchonrous status word, used to signal when a data size is known
+	* @return				KErrNone on successful completion, or one of the system error codes 
+	* 						on failure.
+	*/
+	virtual TInt AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus)=0;
+
+	/** 
+	* Receives data on a bound port. 
+	* 
+	* An asynchronous notification is sent to the client when data arrives. 
+	* 
+	* @param aRemoteHost	On completion, the bearer-dependent address of the remote 
+	* 						host from which the data was received
+	* @param aRemotePort	On completion, the port on the remote host from which the 
+	* 						data was received
+	* @param aBuffer		A client-allocated data buffer that on completion is filled 
+	* 						with data received. Data that overflows the buffer is discarded.
+	* @param aTruncated		On completion, indicates whether the received datagram was 
+	* 						truncated to fit in the client's supplied buffer
+	* @param aReqStatus		Asynchronous status word, used to notify the client that 
+	* 						a datagram was received
+	* @param aTimeout		An optional millisecond time-out which allows a timed read 
+	* 						to be made. If no data is received within the timeout period, the request 
+	* 						completes with KErrTimedOut. If a value of 0 is supplied, the timeout is infinite.
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt RecvFrom(TDes8& aRemoteHost, Wap::TPort& aRemotePort, TDes8& aBuffer, TBool& aTruncated, 
+							TRequestStatus& aReqStatus, TUint32 aTimeout)=0;
+ 
+	/** 
+	* Cancels a previously asynchronous RecvFrom() or AwaitRecvDataSize() request. 
+	*
+	* If a datagram arrives at the local host, it will be discarded. 
+	* 
+	*/
+	virtual void CancelRecv()=0;
+
+	/** 
+	* Gets the local port of this endpoint.
+	* 
+	* This is useful if the port was chosen automatically.
+	* 
+	* @param aPort	On return, the port number
+	* @return		KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalPort(Wap::TPort& aPort)=0;
+
+	/** 
+	* Gets the local address of this endpoint. 
+	* 
+	* @param aLocalHost	On return, the address of the local host. Clients must pass 
+	* 					in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	* 					buffer to hold the address, and passes ownership of the buffer to the client.
+	* @return			KErrNone on successful completion, or one of the system error codes on failure.
+	*/
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost)=0;
+
+	/** 
+	* Gets the bearer on which a received datagram arrived. 
+	* 
+	* This is useful when EAll was specified as the bearer in Connect().
+	* 
+	* @param aBearer	On return, the bearer
+	* @return			KErrNone on successful completion, or one of the system error codes on failure.	
+	*/
+	virtual TInt GetBearer(Wap::TBearer& aBearer)=0;
+
+	/** 
+	* Queries the WDP bearer for its maximum datagram size and its nominal datagram size.
+	*
+	* The nominal size is the size within which a datagram won't have to be split 
+	* into smaller individual messages and then re-assembled at the other end. 
+	* 
+	* The function will fail for a stream connection.
+	*
+	* @param aMaxSize		On return, the maximum datagram size
+	* @param aNominalSize	On return, the nominal datagram size
+	* @return				KErrNone on successful completion, or one of the system error codes 
+	*						on failure.
+	*/	
+	virtual TInt GetDatagramSizes(TUint16& aMaxSize, TUint16& aNominalSize)=0;
+	
+protected: // methods
+	IMPORT_C CWapBoundDatagramService();
+	IMPORT_C void ConstructL();
+
+private: // attributes
+	// D'tor Key identification required for ECOM
+	TUid iDtor_ID_Key;
+	};
+
+/** Fully-Specified WDP
+*/
+class CWapFullySpecDatagramService : public CBase
+/** 
+* Sends and receives datagrams over WDP using a specified local port and a single, 
+* named remote host.
+* 
+* The class is an ECom plug-in interface. Clients use NewL() to request an implementation 
+* of the interface, and then call the interface's virtual functions to access 
+* the implementation's services. 
+* 
+* The use of the plug-in architecture allows different implementations to use 
+* different underlying WAP stacks.
+* 
+* Functions can return system wide error codes, and also API-specific errors 
+* as defined in wapmsgerr.h. 
+*/
+	{
+public: // creation/deletion
+	IMPORT_C static CWapFullySpecDatagramService* NewL();
+	IMPORT_C static CWapFullySpecDatagramService* NewL(const TUid& aImplementation);
+	IMPORT_C virtual ~CWapFullySpecDatagramService();
+
+public: // API methods
+
+	// Connect to the wapstack, opening an endpoint which is to be used only with a single, named remote host.
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* subsequent incoming datagrams.
+	*	
+	* This overload of Connect() allows an IP address associated with a network 
+	* interface to be specified. In multihomed systems, this can be used to specify 
+	* the network interface to which the endpoint should be bound.
+	* 
+	* All CWapFullySpecDatagramService implementations must automatically close 
+	* this endpoint upon destruction.
+	* 
+	* @param aRemoteHost	The bearer-dependent address of the remote host with which 
+	* 						the data will be exchanged
+	* @param aRemotePort	The port on the remote host to which data will be sent
+	* @param aBearer		The bearer to use. EAll cannot be used.
+	* @param aInetAddr		The IP address of the network interface that should be used 
+	* 						in a multihomed system.
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TInetAddr aInetAddr)=0;
+
+	// Connect to the wapstack, opening an endpoint which is to be used only with a single, named remote host.
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* subsequent incoming datagrams.
+	* 
+	* All CWapFullySpecDatagramService implementations must automatically close 
+	* this endpoint upon destruction.
+	* 
+	* @param aRemoteHost	The bearer-dependent address of the remote host with which 
+	* 						the data will be exchanged
+	* @param aRemotePort	The port on the remote host to which data will be sent
+	* @param aBearer		The bearer to use. EAll cannot be used.
+	* @return 				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer)=0;
+
+	/** 
+	* Sends data on a fully-specified connection.
+	* 
+	* @param aBuffer	The data buffer to be written over the connection
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Send(const TDesC8& aBuffer)=0;
+
+	/** 
+	* Waits for a datagram to be received, and discover how large a buffer is required 
+	* to retrieve it.
+	* 
+	* This asynchronous request waits for a datagram to be received and will then 
+	* complete allowing the client to discover how large a buffer is needed to retrieve 
+	* the entire datagram that has been received. A later call to Recv() with a 
+	* buffer of sufficent size will then allow the client to retrieve the datagram 
+	* fully. 
+	* 
+	* @param aDataSizePckg	On completion, the size of data received, in bytes
+	* @param aReqStatus		Asynchonrous status word, used to signal when a data size is known
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus)=0;
+
+	/** 
+	* Receives data on a bound port. 
+	* 
+	* An asynchronous notification is sent to the client when data arrives. 
+	* 
+	* @param aBuffer	A client-allocated data buffer that, on completion, is filled 
+	* 					with data received. Data that overflows the buffer is discarded.
+	* @param aTruncated	On completion, indicates whether the received datagram was 
+	* 					truncated to fit in the client's supplied buffer
+	* @param aReqStatus	Asynchronous status word, used to notify the client that 
+	* 					a datagram was received
+	* @param aTimeout	An optional millisecond time-out which allows a timed read 
+	* 					to be made. If no data is received within the timeout period, the request 
+	* 					completes with KErrTimedOut. If a value of 0 is supplied, the timeout is infinite.
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Recv(TDes8& aBuffer, TBool& aTruncated, TRequestStatus& aReqStatus, TUint32 aTimeout)=0;
+
+	/** 
+	* Cancels a previously asynchronous Recv() or AwaitRecvDataSize() request. 
+	* 
+	* If a datagram arrives at the local host, it will be discarded. 
+	* 
+	*/
+	virtual void CancelRecv()=0;
+
+	/** 
+	* Gets the local port of this endpoint.
+	* 
+	* This is useful if the port was chosen automatically.
+	* 
+	* @param aPort	On return, the port number
+	* @return		KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalPort(Wap::TPort& aPort)=0;
+
+	/** 
+	* Gets the local address of this endpoint. 
+	* 
+	* @param aLocalHost	On return, the address of the local host. Clients must pass 
+	* 					in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	* 					buffer to hold the address, and passes ownership of the buffer to the client.
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost)=0;
+
+	/** 
+	* Queries the WDP bearer for its maximum datagram size and its nominal datagram size.
+	* 
+	* The nominal size is the size within which a datagram won't have to be split 
+	* into smaller individual messages and then re-assembled at the other end. 
+	* 
+	* @param aMaxSize		On return, the maximum datagram size
+	* @param aNominalSize	On return, the nominal datagram size
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetDatagramSizes(TUint16& aMaxSize, TUint16& aNominalSize)=0;
+	
+protected: // methods
+	IMPORT_C CWapFullySpecDatagramService();
+	IMPORT_C void ConstructL();
+
+private: // ECOM
+	// D'tor Key identification required for ECOM
+	TUid iDtor_ID_Key;
+	};
+
+/** Bound Connectionless Push
+*/
+class CWapBoundCLPushService : public CBase
+/** 
+* Listens for WAP Push messages from any sender.
+* 
+* The class is an ECom plug-in interface. Clients use NewL() to request an implementation 
+* of the interface, and then call the interface's virtual functions to access 
+* the implementation's services. 
+* 
+* The use of the plug-in architecture allows different implementations to use 
+* different underlying WAP stacks.
+* 
+* Functions can return system wide error codes, and also API-specific errors 
+* as defined in wapmsgerr.h. 
+* 
+*/
+{
+public: // creation/deletion
+	IMPORT_C static CWapBoundCLPushService* NewL();
+	IMPORT_C static CWapBoundCLPushService* NewL(const TUid& aImplementation);
+	IMPORT_C virtual ~CWapBoundCLPushService();
+
+public: // API methods
+
+	
+	// Opens a socket which is to be used to listen for subsequent incoming Push messages from any sender;
+	// i.e. it has only been 'bound' to the local address	 
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* Push messages from any sender.
+	* 
+	* This overload of Connect() allows an IP address associated with a network 
+	* interface to be specified. In multihomed systems, this can be used to specify 
+	* the network interface to which the endpoint should be bound.
+	* 
+	* All CWapBoundCLPushService implementations must automatically close this endpoint 
+	* upon destruction.
+	* 
+	* @param aBearer	The bearer to listen on. Use EAll to specify all bearers.
+	* @param aPort		The port to listen on. If set to 0, a local port will be chosen 
+	* 					for the client's first SendTo()
+	* @param aSecure	Security flag to indicate whether WTLS should be used or not
+	* @param aInetAddr	The address of the adapter to use
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure, TInetAddr aInetAddr)=0;
+
+	
+	// Opens a socket which is to be used to listen for subsequent incoming Push messages from any sender;
+	// i.e. it has only been 'bound' to the local address
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* Push messages from any sender.
+	* 
+	* All CWapBoundCLPushService implementations must automatically close this endpoint 
+	* upon destruction.
+	* 
+	* @param aBearer	The bearer to listen on. Use EAll to specify all bearers.
+	* @param aPort		The port to listen on. If set to 0, a local port will be chosen 
+	* 					for the client's first SendTo()
+	* @param aSecure	Security flag to indicate whether WTLS should be used or not
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure)=0;
+
+	/** 
+	* Requests an asynchronous notification upon arrival of the next push message 
+	* on the listening connection.
+	* 
+	* The request completes upon receipt of the message, filling the buffers with 
+	* as much received data as possible. A return code indicates whether further 
+	* data remains. The call must be re-issued for subsequent messages or to receive 
+	* remaining data from a previous push message.
+	* 
+	* @param aPushHeaders	A client-allocated buffer that, on completion, is filled 
+	* 						with the push message's header data
+	* @param aPushBody		A client-allocated buffer that, on completion, is filled with 
+	* 						the push message's body data
+	* @param aPushIdPckg	On completion, an integer ID that uniquely specifies the 
+	* 						push message
+	* @param aReqStatus		Asynchonrous status word, used by the service provider to 
+	* 						notify the client when a push message has arrived. 
+	*						EMoreData is returned if more pushed data is available.
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt AwaitPush(TDes8& aPushHeaders, TDes8& aPushBody, TPckgBuf<TUint8>& aPushIdPckg, TRequestStatus& aReqStatus)=0;
+
+	/** 
+	* Cancels a previous push message request.
+	* 
+	* If a push message arrives, the client will not be notified. 
+	*
+	*/
+	virtual void CancelAwaitPush()=0;
+
+	/** 
+	* Gets the local port of this endpoint.
+	* 
+	* This is useful if the port was chosen automatically. 
+	* 
+	* @param aPort	On return, the port number
+	* @return		KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalPort(Wap::TPort& aPort)=0;
+
+	/** 
+	* Gets the local address of this endpoint. 
+	* 
+	* @param aLocalHost	On return, the address of the local host. Clients must pass 
+	* 					in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	* 					buffer to hold the address, and passes ownership of the buffer to the client.
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost)=0;
+
+	/** 
+	* Gets the bearer on which a received datagram arrived. 
+	* 
+	* This is useful when EAll was specified as the bearer in Connect().
+	* 
+	* @param aBearer	On return, the bearer
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetBearer(Wap::TBearer& aBearer)=0;
+
+	/**
+	 * Gets the address of the remote server.
+	 *
+	 * This function cannot be called when there is an outstanding AwaitPush().
+	 *
+	 * @param aRemoteHost	On return, the address of the remote host. Clients must pass 
+	 * 						in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	 * 						buffer to hold the address, and passes ownership of the buffer to the client.
+	 * @return				KErrNone on successful completion, KErrNotSupported if not implemented,
+	 * 						or one of the system error codes on failure.
+	 */
+	virtual TInt GetServerAddress(HBufC8*& aRemoteHost)=0;
+	
+protected: // methods
+	IMPORT_C CWapBoundCLPushService();
+	IMPORT_C void ConstructL();
+
+private: // ECOM
+	// D'tor Key identification required for ECOM
+	TUid iDtor_ID_Key;
+};
+
+/** Fully-Specified Connectionless Push
+*/
+class CWapFullySpecCLPushService : public CBase
+/** 
+* Listens for WAP Push messages from a single, named remote host.
+* 
+* The class is an ECom plug-in interface. Clients use NewL() to request an implementation 
+* of the interface, and then call the interface's virtual functions to access 
+* the implementation's services. 
+* 
+* The use of the plug-in architecture allows different implementations to use 
+* different underlying WAP stacks.
+* 
+* Functions can return system wide error codes, and also API-specific errors 
+* as defined in wapmsgerr.h. 
+*/
+{
+public: // creation/deletion
+	IMPORT_C static CWapFullySpecCLPushService* NewL();
+	IMPORT_C static CWapFullySpecCLPushService* NewL(const TUid& aImplementation);
+	IMPORT_C virtual ~CWapFullySpecCLPushService();
+
+public: // API methods
+
+ 	// Opens a socket which is to be used only with a single, named remote host.
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* Push messages from a specified remote host.
+	* 
+	* This overload of Connect() allows an IP address associated with a network 
+	* interface to be specified. In multihomed systems, this can be used to specify 
+	* the network interface to which the endpoint should be bound.
+	* 
+	* All CWapFullySpecCLPushService implementations must automatically close this 
+	* endpoint upon destruction.
+	* 
+	* @param aRemoteHost	The bearer-dependent address of the remote host with which 
+	* 						the data will be exchanged
+	* @param aRemotePort	The port on the remote host to which data will be sent
+	* @param aBearer		The bearer to listen on. You cannot use EAll.
+	* @param aSecure		Security flag to indicate whether WTLS should be used or not
+	* @param aInetAddr		The address of the adapter to use
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure, TInetAddr aInetAddr)=0;
+
+	// Opens a socket which is to be used only with a single, named remote host.
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* Push messages from a specified remote host.
+	* 
+	* All CWapFullySpecCLPushService implementations must automatically close this 
+	* endpoint upon destruction.
+	* 
+	* @param aRemoteHost	The bearer-dependent address of the remote host with which 
+	* 						the data will be exchanged
+	* @param aRemotePort	The port on the remote host to which data will be sent
+	* @param aBearer		The bearer to listen on. You cannot use EAll.
+	* @param aSecure		Security flag to indicate whether WTLS should be used or not
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure)=0;
+
+	/** 
+	* Requests an asynchronous notification upon arrival of the next push message 
+	* on the listening connection.
+	* 
+	* The request completes upon receipt of the message, filling the buffers with 
+	* as much received data as possible. A return code indicates whether further 
+	* data remains. The call must be re-issued for subsequent messages or to receive 
+	* remaining data from a previous push message.
+	* 
+	* @param aPushHeaders	A client-allocated buffer that, on completion, is filled 
+	* 						with the push message's header data
+	* @param aPushBody		A client-allocated buffer that, on completion, is filled with 
+	* 						the push message's body data
+	* @param aPushIdPckg	On completion, an integer ID that uniquely specifies the 
+	* 						push message
+	* @param aReqStatus		Asynchronous status word, used by the service provider to 
+	* 						notify the client when a push message has arrived.  
+	* 						EMoreData is returned if more pushed data is available.
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt AwaitPush(TDes8& aPushHeaders, TDes8& aPushBody, TPckgBuf<TUint8>& aPushIdPckg, TRequestStatus& aReqStatus)=0;
+
+	/** 
+	* Cancels a previous push message request.
+	* 
+	* If a push message arrives, the client will not be notified. 
+	*
+	*/
+	virtual void CancelAwaitPush()=0;
+
+
+	/** 
+	* Gets the local port of this endpoint.
+	* 
+	* This is useful if the port was chosen automatically. 
+	* 
+	* @param aPort	On return, the port number
+	* @return		KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalPort(Wap::TPort& aPort)=0;	// // (out) the port number
+
+
+	/** 
+	* Gets the local address of this endpoint. 
+	* 
+	* @param aLocalHost	On return, the address of the local host. Clients must pass 
+	* 					in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	* 					buffer to hold the address, and passes ownership of the buffer to the client.
+	* @return			KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost)=0;	// // (out) the address of the local host
+
+protected: // methods
+	IMPORT_C CWapFullySpecCLPushService();
+	IMPORT_C void ConstructL();
+
+private: // ECOM
+	// D'tor Key identification required for ECOM
+	TUid iDtor_ID_Key;
+};
+
+/** Bound Connectionless WSP
+*  @released since v8.0
+*/
+class CWapBoundCLWSPService : public CBase
+{
+public: // creation/deletion
+	IMPORT_C static CWapBoundCLWSPService* NewL();
+	IMPORT_C static CWapBoundCLWSPService* NewL(const TUid& aImplementation);
+	IMPORT_C virtual ~CWapBoundCLWSPService();
+
+public: // API methods
+
+	/** 
+	 * Connects to the WAP stack, opening an endpoint that can be used for S-Unit-MethodInvoke and 
+	 * S-Unit-MethodResult primitives.
+	 *
+	 * @param aBearer	The bearer to listen on (use EAll for all bearers)
+	 * @param aPort		The port to listen on. If set to 0, a local port will be chosen for the 
+	 *					client's first MethodInvoke()
+	 * @return			KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt Connect(Wap::TBearer aBearer,Wap::TPort aPort, TBool aSecure)=0;
+
+	/**
+	 * Sends a request to a remote endpoint.
+	 *
+	 * @param aBearer			The bearer to be used, if the bound connection was opened with EAll
+	 * @param aRemoteHost		The address of the remote host to which to send the request. 
+	 * 							The format of the address is bearer-specific.
+	 * @param aRemotePort		The port on the remote host to which the request will be sent
+	 * @param aMethod
+	 * @param aURI
+	 * @param aReqHeaders
+	 * @param aReqBody
+	 * @param aTransactionId
+	 * @return					KErrNone on successful completion, or one of the system error codes on failure.
+	 */ 
+	virtual TInt MethodInvoke(Wap::TBearer aBearer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, const TUint8 aTransactionId)=0;
+
+	/**
+	 * Waits for a datagram to be received.
+	 *
+	 * @param aReqHeaders
+	 * @param aReqBody
+	 * @param aTransactionIdPckg
+	 * @param aWspStatus
+	 * @param aReqStatus			Asynchonrous status word, used to signal when a data size is known
+	 * @param aTimeout
+	 * @return 						KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt MethodResult(TDes8& aReqHeaders, TDes8& aReqBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout)=0;
+
+	/**
+	 * Cancels a previously requested asynchronous MethodResult() notification.
+	 * 
+	 * If a datagram arrives at the local host, it will be discarded.
+	 * 
+	 */	
+	virtual void CancelReq()=0;
+
+
+	/** 
+	 * Gets the local port of this endpoint.
+	 *
+	 * This is useful if the port was chosen automatically.
+ 	 * 
+ 	 * @param aPort	On return, the port number
+	 * @return		KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt GetLocalPort(Wap::TPort& aPort)=0;	// // (out) the port number
+
+	/**
+	 * Gets the local address of this endpoint.
+	 * 
+	 * @param aLocalHost	On return, the address of the local host. Clients must pass 
+	 * 						in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	 * 						buffer to hold the address, and passes ownership of the buffer to the client.
+	 * @return				KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost)=0;	// // (out) the address of the local host
+
+	/**
+	 * Gets the bearer on which a received datagram arrived.
+	 *
+	 * Useful when EAll was specified in Connect()
+	 *
+	 * @param aBearer	On return, the bearer
+	 * @return			KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt GetBearer(Wap::TBearer& /*aBearer*/)=0;
+	
+	/**
+	 * Gets the remote server address.
+	 * 
+	 * @param aServerAddress	On return, the address of the remote server. Clients must pass 
+	 * 							in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	 * 							buffer to hold the address, and passes ownership of the buffer to the client.
+	 * @return					KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt GetServerAddress(HBufC8*& aServerAddress)=0;	// // (out) the address of the remote server
+	
+protected: // methods
+	IMPORT_C CWapBoundCLWSPService();
+	IMPORT_C void ConstructL();
+
+private: // ECOM
+	// D'tor Key identification required for ECOM
+	TUid iDtor_ID_Key;
+};
+
+/** 
+* Fully-Specified Connectionless WSP
+*  @released since v8.0
+*/
+class CWapFullySpecCLWSPService : public CBase
+{
+public: // creation/deletion
+	IMPORT_C static CWapFullySpecCLWSPService* NewL();
+	IMPORT_C static CWapFullySpecCLWSPService* NewL(const TUid& aImplementation);
+	IMPORT_C virtual ~CWapFullySpecCLWSPService();
+
+public: // API methods
+
+	// Opens a socket which is to be used only with a single, named remote host.
+	/** 
+	* Connects to the WAP stack, opening an endpoint that can be used to listen for 
+	* Push messages from a specified remote host.
+	* 
+	* All CWapFullySpecCLWSPService implementations must automatically close this 
+	* endpoint upon destruction.
+	* 
+	* @param aRemoteHost	The bearer-dependent address of the remote host with which 
+	*						the data will be exchanged
+	* @param aRemotePort	The port on the remote host to which data will be sent
+	* @param aBearer		The bearer to listen on. You cannot use EAll.
+	* @param aSecure		Security flag to indicate whether WTLS should be used or not
+	* @return				KErrNone on successful completion, or one of the system error codes on failure. 
+	*/
+	virtual TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure)=0;
+
+	/**
+	 * Sends a request to a remote endpoint.
+	 * 
+	 * @param aMethod
+	 * @param aURI
+	 * @param aReqHeaders
+	 * @param aReqBody
+	 * @param aTransactionId
+	 * @return					KErrNone on successful completion, or one of the system error codes on failure.
+	 */ 
+	virtual TInt MethodInvoke(TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, TUint8 aTransactionId)=0;
+
+	/**
+	 * Waits for a datagram to be received
+	 * 
+	 * @param aReqHeaders
+	 * @param aReqBody
+	 * @param aTransactionIdPckg
+	 * @param aWspStatus
+	 * @param aReqStatus			Asynchonrous status word, used to signal when a data size is known
+	 * @param aTimeout
+	 * @return						KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt MethodResult(TDes8& aReqHeaders, TDes8& aReqBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout)=0;
+
+
+	/**
+	 * Cancels a previously-requested MethodResult() notification. 
+	 *
+	 * If a message arrives the client will not be notified.
+	 * 
+	 */ 
+	virtual void CancelReq()=0;
+
+	/** 
+	 * Gets the local port of this endpoint.
+	 *
+	 * This is useful if the port was chosen automatically.
+ 	 * 
+ 	 * @param aPort	On return, the port number
+	 * @return		KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt GetLocalPort(Wap::TPort& aPort)=0;	// // (out) the port number
+
+	/**
+	 * Gets the local address of this endpoint.
+	 *
+	 * @param aLocalHost	On return, the address of the local host. Clients must pass 
+	 * 						in a reference to a NULL HBufC8 pointer. The function allocates a new HBufC8 
+	 * 						buffer to hold the address, and passes ownership of the buffer to the client.
+	 * @return				KErrNone on successful completion, or one of the system error codes on failure.
+	 */
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost)=0;	// // (out) the address of the local host
+	
+protected: // methods
+	IMPORT_C CWapFullySpecCLWSPService();
+	IMPORT_C void ConstructL();
+
+private: // ECOM
+	// D'tor Key identification required for ECOM
+	TUid iDtor_ID_Key;
+};
+
+
+// Utility class for client/implementation use.
+class CWapMessageUtils : public CBase
+/** Utility functions for use with WAP Messaging. */
+	{
+public:
+	// // Return a list of all the addresses that are available
+	IMPORT_C static TInt GetLocalAddressesL(RArray<Wap::TAddressInfo>& aAddressInfo); 
+	};
+
+	
+#endif // __WAPMESSAGE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/inc/wapmsgerr.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,249 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __WAPMSGERR_H__
+#define __WAPMSGERR_H__
+
+#include <e32base.h>
+
+namespace Wap
+/** 
+* Defines WAP-related types and error codes. 
+*/
+	{
+	_LIT(KWapMsgPanicDescriptor, "WAPMESSAGE");
+
+/** Defines start values for categories of WAP-related error codes. */
+enum 
+	{
+	/** Base value for all error codes. */
+	ERetCodeBase      = -5500,
+	/** Base value for connection-orientated WSP error codes. */
+	EWSPCORetCodeBase = ERetCodeBase + 25,
+	/** Base value for connectionless WSP error codes. */
+	EWSPCLRetCodeBase = ERetCodeBase + 50,
+	/** Base value for WTP error codes. */
+	EWTPRetCodeBase   = ERetCodeBase + 75,
+	/** Base value for WDP error codes. */
+	EWDPRetCodeBase   = ERetCodeBase + 100,
+	/** Base value for WTLS error codes. */
+	EWTLSRetCodeBase  = ERetCodeBase + 125,
+	/** Maximum value for WAP-related error codes. */
+	ERetCodeTop       = ERetCodeBase + 200
+	};
+	
+/** General WAP error codes. */
+enum TGeneralReturnCodes
+	{  
+	/** There is more data to be read. */
+	EMoreData           = ERetCodeBase + 0,
+	/** One of: no bearer set; unknown bearer; a connection exists with different bearer; 
+	* unable to get a local host name from bearer. */
+	EBearerError        = ERetCodeBase + 1,
+	/** The port is already used in another bound connection. */
+	EPortAlreadyBound   = ERetCodeBase + 2,
+	/** Local port cannot be opened. */
+	ECannotOpenPort     = ERetCodeBase + 3,
+	/** There are too many existing connections. */
+	ETooManyConnections = ERetCodeBase + 4,
+	/** Connection handle is invalid. */
+	EBadConnection      = ERetCodeBase + 5,
+	/** Passed buffer is too small. */
+	EBufferTooSmall     = ERetCodeBase + 6
+	};
+
+/** WTLS-related error codes. */
+enum TWtlsReturnCodes
+	{
+	/** Out of memory. */
+	EWtlsOutOfMemory            = EWTLSRetCodeBase + 0,
+	/** Socket error. */
+	EWtlsSocketError            = EWTLSRetCodeBase + 1,
+	/** Invalid parameter used. */
+	EWtlsBadParameters          = EWTLSRetCodeBase + 2,
+	/** Socket error. */
+	EWtlsSocketError2           = EWTLSRetCodeBase + 3,
+	/** Resume ID not found. */
+	EWtlsResumeIDNotFound       = EWTLSRetCodeBase + 4,
+	/** Resume error. */
+	EWtlsResumeError            = EWTLSRetCodeBase + 5,
+	/** Renegotiation request error. */
+	EWtlsRenegotiationRequest   = EWTLSRetCodeBase + 6,
+	/** Illegal call. */
+	EWtlsIllegalCall            = EWTLSRetCodeBase + 7,
+	/** Connection close notify error. */
+	EWtlsConnectionCloseNotify  = EWTLSRetCodeBase + 8,
+	/** Close notify error. */
+	EWtlsSessionCloseNotify     = EWTLSRetCodeBase + 9,
+	/** No connection. */
+	EWtlsNoConnection           = EWTLSRetCodeBase + 10,
+	/** Unexpected message. */
+	EWtlsUnexpectedMessage      = EWTLSRetCodeBase + 11,
+	/** Bad MAC record. */
+	EWtlsBadRecordMac           = EWTLSRetCodeBase + 12,
+	/** Decryption failed. */
+	EWtlsDecryptionFailed       = EWTLSRetCodeBase + 13,
+	/** Record overflow. */
+	EWtlsRecordOverflow         = EWTLSRetCodeBase + 14,
+	/** Handshake failure. */
+	EWtlsHandshakeFailure       = EWTLSRetCodeBase + 15,
+	/** Decompression failure. */
+	EWtlsDecompressionFailure   = EWTLSRetCodeBase + 16,
+	/** Bad certificate. */
+	EWtlsBadCertificate         = EWTLSRetCodeBase + 17,
+	/** Unsupported certificate. */
+	EWtlsUnsupportedCertificate = EWTLSRetCodeBase + 18,
+	/** Certificate revoked. */
+	EWtlsCertificateRevoked     = EWTLSRetCodeBase + 19,
+	/** Certificate expired. */
+	EWtlsCertificateExpired     = EWTLSRetCodeBase + 20,
+	/** Certificate unknown. */
+	EWtlsCertificateUnknown     = EWTLSRetCodeBase + 21,
+	/** Illegal parameter. */
+	EWtlsIllegalParameter       = EWTLSRetCodeBase + 22,
+	/** Unknown certificate authority. */
+	EWtlsUnknownCA              = EWTLSRetCodeBase + 23,
+	/** Access denied. */
+	EWtlsAccessDenied           = EWTLSRetCodeBase + 24,
+	/** Decoding error. */
+	EWtlsDecodeError            = EWTLSRetCodeBase + 25,
+	/** Decryption error. */
+	EWtlsDecryptError           = EWTLSRetCodeBase + 26,
+	/** Unknown key ID. */
+	EWtlsUnknownKeyId           = EWTLSRetCodeBase + 27,
+	/** Disabled key ID. */
+	EWtlsDisableKeyId           = EWTLSRetCodeBase + 28,
+	/** Key exchange disabled. */
+	EWtlsKeyExchangeDisabled    = EWTLSRetCodeBase + 29,
+	/** Session not ready. */
+	EWtlsSessionNotReady        = EWTLSRetCodeBase + 30,
+	/** Unknown parameter index. */
+	EWtlsUnknownParameterIndex  = EWTLSRetCodeBase + 31,
+	/** Duplicate finished Recv() call. */
+	EWtlsDuplicateFinishedRecv  = EWTLSRetCodeBase + 32,
+	/** Export restriction error. */
+	EWtlsExportRestriction      = EWTLSRetCodeBase + 33,
+	/** Protocol version error. */
+	EWtlsProtocolVersion        = EWTLSRetCodeBase + 34,
+	/** Insufficient security. */
+	EWtlsInsufficientSecurity   = EWTLSRetCodeBase + 35,
+	/** Internal error. */
+	EWtlsInternalError          = EWTLSRetCodeBase + 36,
+	/** User cancelled operation. */
+	EWtlsUserCanceled           = EWTLSRetCodeBase + 37,
+	/** No renegotiation. */
+	EWtlsNoRenegotiation        = EWTLSRetCodeBase + 38,
+
+	/** General error. */
+	EWtlsErrGeneral             = EWTLSRetCodeBase + 39,
+	/** Bulk algorithm error. */
+	EWtlsErrBulk                = EWTLSRetCodeBase + 40,
+	/** MAC algorithm error. */
+	EWtlsErrMac                 = EWTLSRetCodeBase + 41,
+	/** Sequence number mode error. */
+	EWtlsErrSequenceNumberMode  = EWTLSRetCodeBase + 42,
+	/** Key refresh rate error. */
+	EWtlsErrKeyRefreshRate      = EWTLSRetCodeBase + 43,
+
+	};
+
+/** Connection-orientated WSP error codes. */
+enum TWspCoReturnCodes
+	{
+	/** Given buffer is too small. */
+	EWspCoBufferTooSmall      = EWSPCORetCodeBase + 0,
+	/** Session handle is not valid. */
+	EWspCoInvalidSession      = EWSPCORetCodeBase + 1,
+	/** Invalid transaction. */
+	EWspCoInvalidTransaction  = EWSPCORetCodeBase + 2,
+	/** Given parameter is invalid. */
+	EWspCoParameterError      = EWSPCORetCodeBase + 3,
+	/** Session is not connected. */
+	EWspCoSessionNotConnected = EWSPCORetCodeBase + 4,
+	/** Functionality is not supported in this session. */
+	EWspCoNotSupported        = EWSPCORetCodeBase + 5,
+	/** Function is not applicable in this state of an object. */
+	EWspCoInvalidState        = EWSPCORetCodeBase + 6,
+	/** Session has been closed. */
+	EWspCoSessionClosed       = EWSPCORetCodeBase + 7,
+	/** Server MRU exceeded. */
+	EWspCoMRUExceeded         = EWSPCORetCodeBase + 8,
+	/** Invalid buffer size. */
+	EWspCoInvalidBufferSize   = EWSPCORetCodeBase + 9,
+	/** Data not available. */
+	EWspCoDataNotAvailable    = EWSPCORetCodeBase + 10,
+	/** Timeout error. */
+	EWspCoErrorTimeout        = EWSPCORetCodeBase + 11
+	};
+	
+
+/** Connectionless WSP error codes. */
+enum TWspClReturnCodes
+	{			
+	/** Given buffer is too small. */
+	EWspClBufferTooSmall      = EWSPCLRetCodeBase + 0,
+	/** Session handle is not valid. */
+	EWspClInvalidSession      = EWSPCLRetCodeBase + 1,
+	/** Given parameter is invalid. */
+	EWspClParameterError      = EWSPCLRetCodeBase + 2,
+	/** Session is not connected. */
+	EWspClSessionNotConnected = EWSPCLRetCodeBase + 3,
+	/** Functionality is not supported in this session. */
+	EWspClNotSupported        = EWSPCLRetCodeBase + 4,
+	/** Function is not applicable in this state of an object. */
+	EWspClInvalidState        = EWSPCLRetCodeBase + 5,
+	/** Session has been closed. */
+	EWspClSessionClosed       = EWSPCLRetCodeBase + 6,
+	/** Server MRU exceeded. */
+	EWspClMRUExceeded		 = EWSPCLRetCodeBase + 7,	
+	/** Invalid buffer size. */
+	EWspClInvalidBufferSize   = EWSPCLRetCodeBase + 8,
+	/** Data not available. */
+	EWspClDataNotAvailable    = EWSPCLRetCodeBase + 9,
+	/** Timeout error. */
+	EWspClErrorTimeout        = EWSPCLRetCodeBase + 10
+	};
+
+/** WTP-related error codes. */
+enum TWtpReturnCodes
+	{
+	/** Out of memory. */
+	EWtpNoMemory                 = EWTPRetCodeBase + 0,
+	/** Invalid argument. */
+	EWtpBadArgument              = EWTPRetCodeBase + 1,
+	/** Provider aborted. */
+	EWtpProviderProtoErr         = EWTPRetCodeBase + 2,
+	/** Provider aborted. */
+	EWtpProviderAbortInvalidTID  = EWTPRetCodeBase + 3,
+	/** Provider aborted. */
+	EWtpProviderAbortNoClass2    = EWTPRetCodeBase + 4,
+	/** Provider aborted. */
+	EWtpProviderAbortNoSAR       = EWTPRetCodeBase + 5,
+	/** Provider aborted. */
+	EWtpProviderAbortNoUACK      = EWTPRetCodeBase + 6,
+	/** Provider aborted. */
+	EWtpProviderAbortVers1       = EWTPRetCodeBase + 7,
+	/** Provider aborted. */
+	EWtpProviderAbortNoResponse  = EWTPRetCodeBase + 8,
+	/** Provider aborted. */
+	EWtpProviderAbortMsgTooLarge = EWTPRetCodeBase + 9,
+	/** Provider aborted. */
+	EWtpProviderAbortGeneral     = EWTPRetCodeBase + 10,
+	/** Service has shutdown. */
+	EWtpShutdownError            = EWTPRetCodeBase + 11
+	};
+}
+
+#endif // __WAPMSGERR_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/101fbb36.rss	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,133 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Registry file for WAP Messaging API, 8.0 WAP Stack bindings DLL
+// Interfaces : MWapBoundDatagramService, MWapFullySpecDatagramService,
+// MWapBoundCLPushService, MWapFullySpecCLPushService,
+// MWapBoundCLWSPService, MWapFullySpecCLWSPService,
+// 
+//
+
+#include <ecom/registryinfo.rh>
+
+RESOURCE REGISTRY_INFO theInfo
+	{
+	// KUidWapMsg
+	dll_uid = 0x101FBB36;
+	interfaces = 
+		{
+		INTERFACE_INFO
+			{
+			// KUidBoundWDPInterface - MWapBoundDatagramService UID
+			interface_uid = 0x101F4471;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					// KUidSWSBoundWDPService - CSWSWapBoundWDPService UID
+					implementation_uid = 0x101FBB37;
+					version_no = 1;
+					display_name = "CSSWapBoundWDPService";
+					default_data = "swswdp/bound";
+					opaque_data = "";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			// KUidFullySpecWDPInterface - MWapFullySpecDatagramService UID
+			interface_uid = 0x101F4473;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					// KUidSWSFullySpecWDPService - CSWSWapFullySpecWDPService UID
+					implementation_uid = 0x101FBB38;
+					version_no = 1;
+					display_name = "CSWSWapFullySpecWDPService";
+					default_data = "swswdp/fullyspec";
+					opaque_data = "";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			// KUidBoundCLPushInterface - MWapBoundCLPushService UID
+			interface_uid = 0x101F4475;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					// KUidSWSBoundCLPushService - CSWSWapBoundCLPushService UID
+					implementation_uid = 0x101FBB39;
+					version_no = 1;
+					display_name = "CSWSWapBoundCLPushService";
+					default_data = "swsclpush/bound";
+					opaque_data = "";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			// KUidFullySpecCLPushInterface - MWapFullySpecCLPushService UID
+			interface_uid = 0x101F4477;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					// KUidSWSFullySpecCLPushService - CSWSWapFullySpecCLPushService UID
+					implementation_uid = 0x101FBB3A;
+					version_no = 1;
+					display_name = "CSWSWapFullySpecCLPushService";
+					default_data = "swsclpush/fullyspec";
+					opaque_data = "";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			// KUidBoundCLWSPInterface - MWapBoundCLWSPService UID
+			interface_uid = 0x101FBB3B;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					// KUidSWSBoundCLWSPService - CSWSWapBoundCLService UID
+					implementation_uid = 0x101FBB3C;
+					version_no = 1;
+					display_name = "CSWSWapBoundCLWSPService";
+					default_data = "swsclwsp/bound";
+					opaque_data = "";
+					}
+				};
+			},
+		INTERFACE_INFO
+			{
+			// KUidFullySpecCLWSPInterface - MWapFullySpecCLWSPService UID
+			interface_uid = 0x101FBB3D;
+			implementations = 
+				{
+				IMPLEMENTATION_INFO
+					{
+					// KUidSWSFullySpecCLWSPService - CSWSWapFullySpecCLWSPService UID
+					implementation_uid = 0x101FBB3E;
+					version_no = 1;
+					display_name = "CSWSWapFullySpecCLWSPService";
+					default_data = "swsclwsp/fullyspec";
+					opaque_data = "";
+					}
+				};
+			}
+		};
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/ActiveSocket.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1126 @@
+// Copyright (c) 2003-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "ActiveSocket.h"
+#include <es_wsms.h>
+#include "CLWSPPduHandler.h"
+#include "wapmsgerr.h"
+#include <wap_sock.h>
+#include "WapMessageApiAgent.h"
+#include "WapSwsLog.h"
+#include "WapMsgUtils.h"
+
+using namespace Wap;
+
+void CActiveSocket::NewL(RSocketServ& aSocketServ, RPointerArray<CActiveSocket>& aActiveSockets, Wap::TBearer aBearer, TWapMessageType aType, MProgressNotify* aNotify, Wap::TPort aLocalPort, RConnection* aConnection)
+/**
+The static new function instanciates corresponding Bearers in terms of the input bearer type.
+This function is used by Bound Wap APIs which listen the incoming packet to a specific port. 
+@internalComponent
+@released
+@since v8.0
+@param aSocketServ the shared RSocketServ instance used in the Wap messaging API which owns this bearer
+@param aActiveSockets the bearer array used in the Wap messaging API which owns the bearer
+@param aBearer  the bearer to listen on (use EAll for all bearers)
+@param aType  the type of the wap message that will received
+@param aNotify  the instance to be notified when a wap message is received
+@param aLocalPort  the port to listen on
+@param aConnection the shared connection from Wap messaging API client
+*/
+	{
+	//Instanciate the corresponding
+	switch(aBearer)
+		{
+		case Wap::ESMS7:
+		case Wap::ESMS:
+		case Wap::EWAPSMS7:
+		case Wap::EWAPSMS:
+			{
+			CActiveSocket* me = new(ELeave) CActiveSocketSMS(aSocketServ, aNotify, aBearer, aLocalPort);
+			CleanupStack::PushL(me);
+			me->ConstructL(aType);
+			aActiveSockets.AppendL(me);
+			CleanupStack::Pop(me);
+			break;
+			}
+		case Wap::EIP:
+			{
+			CActiveSocket* me = new(ELeave) CActiveSocketUDP(aSocketServ, aNotify, aBearer, aLocalPort, aConnection);
+			CleanupStack::PushL(me);
+			me->ConstructL(aType);
+			aActiveSockets.AppendL(me);
+			CleanupStack::Pop(me);
+			break;
+			}
+		case Wap::EAll:
+			{
+			CActiveSocket* me = new(ELeave) CActiveSocketUDP(aSocketServ, aNotify, Wap::EIP, aLocalPort, aConnection);
+			CleanupStack::PushL(me);
+			me->ConstructL(aType);          
+			CActiveSocket* me1 = new(ELeave) CActiveSocketSMS(aSocketServ, aNotify, Wap::ESMS, aLocalPort);
+			CleanupStack::PushL(me1);
+			me1->ConstructL(aType);
+			aActiveSockets.ReserveL(2); // pre-allocate the memory                                           
+			aActiveSockets.AppendL(me1);
+			CleanupStack::Pop(me1);
+			aActiveSockets.AppendL(me);
+			CleanupStack::Pop(me);
+			break;
+			}
+		default:
+		    {
+			LOG(SwsLog::Printf(_L("CActiveSocket::NewL Unknown Bearer Type"));)
+			User::Leave(Wap::EBearerError);
+		    }
+		}
+	}
+
+void CActiveSocket::NewL(RSocketServ& aSocketServ, RPointerArray<CActiveSocket>& aActiveSockets, Wap::TBearer aBearer, TWapMessageType aType, MProgressNotify* aNotify, const TSockAddr& aRemoteAddr, RConnection* aConnection)
+/**
+The static new function instanciates corresponding Bearers in terms of the input bearer type.
+This function is used by Fully specified Wap APIs which will open a socket with a single, named remote host. 
+@internalComponent
+@released
+@since v8.0
+@param aSocketServ the shared RSocketServ instance used in the Wap messaging API which owns this bearer
+@param aActiveSockets the bearer array used in the Wap messaging API which owns the bearer
+@param aBearer the bearer to listen on (use EAll for all bearers)
+@param aType the type of the wap message that will received
+@param aNotify the instance to be notified when a wap message is received
+@param aRemoteAddr the remote host to be communicate with
+@param aConnection the shared connection from Wap messaging API client
+*/
+	{
+	//Instanciate the corresponding
+	switch(aBearer)
+		{
+		case Wap::ESMS7:
+		case Wap::ESMS:
+		case Wap::EWAPSMS7:
+		case Wap::EWAPSMS:
+			{
+			CActiveSocket* me = new(ELeave) CActiveSocketSMS(aSocketServ, aNotify, aBearer, aRemoteAddr);
+			CleanupStack::PushL(me);
+			me->ConstructL(aType);
+            aActiveSockets.AppendL(me);
+			CleanupStack::Pop(me);
+			break;
+			}
+		case Wap::EIP:
+			{
+			CActiveSocket* me = new(ELeave) CActiveSocketUDP(aSocketServ, aNotify, aBearer, aRemoteAddr, aConnection);
+			CleanupStack::PushL(me);
+			me->ConstructL(aType);
+            aActiveSockets.AppendL(me);
+			CleanupStack::Pop(me);
+			break;
+			}
+		case Wap::EAll:
+			{
+			CActiveSocket* me = new(ELeave) CActiveSocketUDP(aSocketServ, aNotify, aBearer, aRemoteAddr, aConnection);
+			CleanupStack::PushL(me);
+			me->ConstructL(aType);
+			CActiveSocket* me1 = new(ELeave) CActiveSocketSMS(aSocketServ, aNotify, aBearer, aRemoteAddr);
+			CleanupStack::PushL(me1);
+			me1->ConstructL(aType);
+            aActiveSockets.ReserveL(2); // pre-allocate the memory    
+			aActiveSockets.AppendL(me1);
+            CleanupStack::Pop(me1);
+            aActiveSockets.AppendL(me);
+            CleanupStack::Pop(me);
+			break;
+			}
+		default:
+		    {
+			LOG(SwsLog::Printf(_L("CActiveSocket::NewL Unknown Bearer Type"));)
+			User::Leave(Wap::EBearerError);
+		    }
+		}
+	}
+
+CActiveSocket::CActiveSocket(RSocketServ& aSocketServ, Wap::TBearer aBearerType, MProgressNotify* aNotify, Wap::TPort aLocalPort)
+:CActive(EPriorityStandard), iLocalAddr(0), iSocketServ(aSocketServ), iBearerType(aBearerType), iLocalPort(aLocalPort), iSocketState(ESocketIdle),iNotify(aNotify), iBuf(0,0), iRxlength(0), iBufCon(0,0)
+/**
+Constructor of bearer base class for Bound Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CActiveSocket::CActiveSocket(RSocketServ& aSocketServ, Wap::TBearer aBearerType, MProgressNotify* aNotify, const TSockAddr& aRemoteAddr, Wap::TPort aLocalPort): CActive(EPriorityStandard), 
+iRemoteAddr(aRemoteAddr), iLocalAddr(0), iSocketServ(aSocketServ), iBearerType(aBearerType), iLocalPort(aLocalPort), iSocketState(ESocketIdle), iNotify(aNotify), iBuf(0,0), iRxlength(0), iBufCon(0,0)
+/**
+Constructor of bearer base class for fully specified Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CActiveScheduler::Add(this);
+	}
+
+CActiveSocket::~CActiveSocket()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	Cancel();
+	iSocket.Close();
+	if (iMessageRecord) 
+		{
+		delete iMessageRecord;
+		}
+	}
+
+void CActiveSocket::ConstructL(TWapMessageType aType)
+/**
+Second Phase Constructor
+@internalComponent
+@released
+@param aType the type of Wap message which is received. 
+@since v8.0
+*/
+	{
+	iMessageRecord=CWapMessageRecord::NewL(aType);
+	}
+
+RSocket& CActiveSocket::Socket()
+/**
+To get the RSocket instance ownd by this bearer
+@internalComponent
+@released
+@since v8.0
+@returns the reference of the RSocket instance.
+*/
+	{
+	return iSocket;
+	}
+
+Wap::TBearer CActiveSocket::GetBearerType()
+/**
+To get the bearer type of this bearer
+@internalComponent
+@released
+@since v8.0
+@returns the bearer type
+*/
+	{
+	return iBearerType;
+	}
+
+TSockAddr& CActiveSocket::GetLocalAddress()
+/**
+To get the local address of this bearer
+@internalComponent
+@released
+@since v8.0
+@returns the lcoal address instance
+*/
+	{
+	iSocket.LocalName(iLocalAddr);
+	return iLocalAddr;
+	}
+
+TSockAddr& CActiveSocket::GetRemoteAddress()
+/**
+To get the remote address of the last received packet
+@internalComponent
+@released
+@since v8.0
+@returns the remote address instance
+*/
+	{
+	return iRemoteAddr;
+	}
+
+TInt CActiveSocket::GetRemoteAddress(HBufC8*& aAddr)
+/**
+To get the remote address of the last received packet
+@internalComponent
+@released
+@since v8.0
+@param aAddr the remote host name
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TRAPD(err, aAddr=iRemoteAddr.AllocL())
+	if (err==KErrNone)
+		{
+		Wap::TPort port;
+		TPtr8 des=aAddr->Des();
+		TRAP(err, CSWSWapMsgUtils::AnalyseAddrL(iRemoteAddr, iBearerType, des, port))
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CActiveSocketUDP::GetServerAddress: Alloc Memory Err=%d"), err);)
+		}
+	return err;
+	}
+
+TInt CActiveSocket::GetLocalPort(Wap::TPort& aLocalPort)
+/**
+To get the lcoal port of this bearer
+@internalComponent
+@released
+@since v8.0
+@param aLocalPort the local port of this bearer
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	GetLocalAddress();
+	aLocalPort=Wap::TPort(iLocalAddr.Port());
+	return KErrNone;
+	}
+
+TUint32 CActiveSocket::GetPduSize()
+/**
+To get the received Wdp Pdu length
+@internalComponent
+@released
+@since v8.0
+@returns the length of the received Wdp pdu.
+*/
+	{
+	return iMessageRecord->GetPduSize();
+	}
+
+TWapMessageState CActiveSocket::GetDataState()
+/**
+To get the state of the data that is being received
+@internalComponent
+@released
+@since v8.0
+@returns the state of the data that is being received
+*/
+	{
+	return iMessageRecord->GetDataState();
+	}
+
+void CActiveSocket::SetDataState(TWapMessageState aState)
+/**
+To set the state of the data that is being received
+@internalComponent
+@released
+@since v8.0
+@param aState the state of the data that is being received
+*/
+	{
+	iMessageRecord->SetDataState(aState);
+	}
+
+TInt CActiveSocket::GetPduData(TDes8& aBuffer, TBool& aTruncated)
+/**
+To get the received Wdp pdu.
+@internalComponent
+@released
+@since v8.0
+@param aBuffer the buffer to read the received WDP pdu
+@param aTruncated the flag to represent if the data has be truncated or not
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iMessageRecord->GetPduData(aBuffer, aTruncated);
+	}
+
+TInt CActiveSocket::GetWspData(TDes8& aWspHeader, TDes8& aWspBody, TUint8& aTransactionId, TWSPStatus& aStatus)
+/**
+To get the received Wsp header, body, tranaction ID and Wsp status.
+@internalComponent
+@released
+@since v8.0
+@param aWspHeader the buffer to read the received Wsp header
+@param aWspBody the buffer to read the received Wsp body
+@param aTransactionId the transaction ID of the received Wsp Message
+@param aStatus the Wsp status of  the received Wsp Message
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iMessageRecord->GetWspData(aWspHeader, aWspBody, aTransactionId, aStatus);
+	}
+void CActiveSocket::UnpackPduToWspDataL()
+/**
+To extract the Wsp header, body, transaction ID and status from the received WDP pdu
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iMessageRecord->UnpackPduToWspDataL();
+	}
+
+void CActiveSocket::CleanUpData()
+	{
+	TPtr8 zero(0,0);
+	iBuf.Set(zero);
+	iBufCon.Set(zero);
+	iMessageRecord->CleanUpData();
+	}
+
+/** SMS active socket
+*/
+CActiveSocketSMS::CActiveSocketSMS(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, Wap::TPort aLocalPort)
+:CActiveSocket(aSocketServ, aBearer, aNotify, aLocalPort)
+/**
+Constructor of SMS bearer for Bound Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CActiveSocketSMS::CActiveSocketSMS(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, const TSockAddr& aRemoteAddr)
+:CActiveSocket(aSocketServ, aBearer, aNotify, aRemoteAddr, (Wap::TPort)EWapPortUnspecified)
+/**
+Constructor of SMS bearer for fully specified Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CActiveSocketSMS::~CActiveSocketSMS() 
+/**
+Destructor of SMS bearer for fully specified Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+void CActiveSocketSMS::ConstructL(TWapMessageType aType)
+/**
+Second Phase Constructor
+@internalComponent
+@released
+@param aType the type of Wap message which is received.
+@since v8.0
+*/
+	{
+	CActiveSocket::ConstructL(aType);
+	User::LeaveIfError(iSocket.Open(iSocketServ, KWAPSMSAddrFamily, KSockDatagram, KWAPSMSDatagramProtocol));
+	User::LeaveIfError(iSocket.SetOpt(KWapSmsOptionNewStyleClient,KWapSmsOptionLevel, 0));
+	TWapAddr wapAddr;
+	wapAddr.SetWapPort(TWapPortNumber(iLocalPort));
+	TInt err=iSocket.Bind(wapAddr);
+	if (err==KErrInUse)
+		{
+		User::Leave(Wap::EPortAlreadyBound);
+		}
+	}
+
+TInt CActiveSocketSMS::AwaitRecvDataSize()
+/**
+Read the received Wdp pdu length.
+@internalComponent
+@released
+@since v8.0
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TPckgBuf<TUint32>* length=iMessageRecord->GetPduSizeRef();
+	iSocket.Ioctl(KSOGetLength, iStatus, length, KSolWapProv);
+	iMessageRecord->SetDataState(ERequestingLength);
+	iSocketState=ESocketWaitingForLength;
+	SetActive();
+	return KErrNone;
+	}
+
+TInt CActiveSocketSMS::Receive()
+/**
+Read the received Wdp pdu.
+@internalComponent
+@released
+@since v8.0
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInt err=KErrNone;
+	TRAP(err, iMessageRecord->CreatePduBufferL(EFalse))
+	if (err!=KErrNone)
+		{
+		return err;
+		}
+	HBufC8*& pdu=iMessageRecord->GetPduPtr();
+	iBuf.Set(pdu->Des());
+	iSocket.RecvFrom(iBuf, iRemoteAddr, 0, iStatus);
+	iMessageRecord->SetDataState(ERequestingData);
+	iSocketState=ESocketWaitingForData;
+	SetActive();
+	return KErrNone;
+	}
+
+void CActiveSocketSMS::RunL() 
+/**
+Overload the CActive virtual methods
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	switch (iSocketState)
+		{
+	case ESocketWaitingForLength:
+			{
+			LOG(SwsLog::Printf(_L("CActiveSocketSMS::RunL() ESocketWaitingForLength"));)
+			iMessageRecord->SetDataState(EPendingLength);
+			iSocketState=ESocketIdle;
+			TWapNotificationInfo info(iBearerType, iStatus.Int());
+			TWapNotificationInfoBuf infoBuf(info);
+			iNotify->Notification(EPduLengthReceived, infoBuf);
+			break;
+			}
+	case ESocketWaitingForData:
+			{
+			LOG(SwsLog::Printf(_L("CActiveSocketSMS::RunL() ESocketWaitingForData"));)
+			iMessageRecord->SetDataState(EPendingData);
+			iSocketState=ESocketIdle;
+			TWapNotificationInfo info(iBearerType, iStatus.Int());
+			TWapNotificationInfoBuf infoBuf(info);
+			iNotify->Notification(EPduReceived, infoBuf);
+			iSocket.SetOpt(KWapSmsOptionOKToDeleteMessage,KWapSmsOptionLevel, 0);
+			break;
+			}
+	default:
+		LOG(SwsLog::Printf(_L("CActiveSocketSMS::RunL() Unknown State")););
+		}
+	}
+void CActiveSocketSMS::DoCancel() 
+/**
+Overload the CActive virtual methods
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	switch (iSocketState)
+		{
+	case ESocketWaitingForLength:
+			{
+			iSocket.CancelIoctl();
+			break;
+			}
+	case ESocketWaitingForData:
+			{
+			iSocket.CancelRecv();
+			break;
+			}
+	default:
+		LOG(SwsLog::Printf(_L("CActiveSocketSMS::DoCancel() Unknown State")););	
+		}
+	}
+
+//
+// UDP active socket
+//
+CActiveSocketUDP::CActiveSocketUDP(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, Wap::TPort aLocalPort, RConnection* aConnection)
+:CActiveSocket(aSocketServ, aBearer, aNotify, aLocalPort),iConnection(aConnection)
+/**
+Constructor for Bound Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+	
+CActiveSocketUDP::CActiveSocketUDP(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, const TSockAddr& aRemoteAddr, RConnection* aConnection)
+:CActiveSocket(aSocketServ, aBearer, aNotify, aRemoteAddr,0), iConnection(aConnection)
+/**
+Constructor for FullySpec Wap APIs
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+void CActiveSocketUDP::ConstructL(TWapMessageType aType)
+/**
+Second Phase constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CActiveSocket::ConstructL(aType);
+	if (!iConnection)
+		{
+		User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp));
+		}
+	else
+		{
+		User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockDatagram, KProtocolInetUdp, *iConnection));
+		}
+	TInetAddr inetAddr(iLocalPort);
+	TInt err=iSocket.Bind(inetAddr);
+	if (err==KErrInUse)
+		{
+		User::Leave(Wap::EPortAlreadyBound);
+		}
+	}
+
+CActiveSocketUDP::~CActiveSocketUDP() 
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+TInt CActiveSocketUDP::AwaitRecvDataSize()
+/**
+Wait for Pdu data size
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iRxlength=0;
+	TRAPD(err, iMessageRecord->CreatePduBufferL(ETrue))
+	if (err!=KErrNone)
+		{
+		return err;
+		}
+	HBufC8*& pdu=iMessageRecord->GetPduPtr();
+	iBuf.Set(pdu->Des());
+	iSocket.RecvFrom(iBuf, iRemoteAddr, 0, iStatus, iRxlength);
+	iMessageRecord->SetDataState(ERequestingLength);
+	iSocketState=ESocketWaitingForLength;
+	SetActive();
+	return KErrNone;	
+	}
+
+TInt CActiveSocketUDP::Receive()
+/**
+Receive the pdu
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	if(iMessageRecord->GetDataState()==EContinuous)
+		{
+		TRAPD(err, iMessageRecord->CreatePduBufferL(ETrue))
+		if (err!=KErrNone)
+			{
+			return err;
+			}
+		HBufC8*& pdu=iMessageRecord->GetPduPtr();
+		iBuf.Set(pdu->Des());
+		iBuf.SetLength(iBuf.Length()+1);
+		iBufCon.Set(&iBuf[iBuf.Length()-1],0,iBuf.MaxLength()-iBuf.Length());
+		iBuf.SetLength(iBuf.Length()+iRxlength()-1);
+		iSocket.RecvFrom(iBufCon, iRemoteAddr, KSockReadContinuation, iStatus,iRxlength);
+		iMessageRecord->SetDataState(ERequestingData);
+		iSocketState=ESocketWaitingForData;
+		SetActive();	
+		}
+	else
+		{
+		iMessageRecord->SetDataState(ERequestingData);
+		iSocketState=ESocketWaitingForData;
+		iStatus = KRequestPending;
+		SetActive();
+		TRequestStatus* reqStatus=&iStatus;
+		User::RequestComplete(reqStatus, KErrNone);
+		}
+	return KErrNone;
+	}
+
+void CActiveSocketUDP::RunL()
+/**
+RunL()
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	switch (iSocketState)
+		{
+	case ESocketWaitingForLength:
+			{
+			LOG(SwsLog::Printf(_L("CActiveSocketUDP::RunL() ESocketWaitingForLength"));)
+			iMessageRecord->SetPduSize(iBuf.Length()+ iRxlength());
+			if(iRxlength() > 0)
+				{
+				iMessageRecord->SetDataState(EContinuous);
+				}
+			else 
+				{
+				iMessageRecord->SetDataState(EPendingLength);
+				}
+			iSocketState=ESocketIdle;
+			TWapNotificationInfo info(iBearerType, iStatus.Int());
+			TWapNotificationInfoBuf infoBuf(info);
+			iNotify->Notification(EPduLengthReceived, infoBuf);
+			break;
+			}
+	case ESocketWaitingForData:
+			{
+			LOG(SwsLog::Printf(_L("CActiveSocketUDP::RunL() ESocketWaitingForData"));)
+			iMessageRecord->SetDataState(EPendingData);
+			iSocketState=ESocketIdle;
+			TWapNotificationInfo info(iBearerType, iStatus.Int());
+			TWapNotificationInfoBuf infoBuf(info);
+			iNotify->Notification(EPduReceived, infoBuf);
+			break;
+			}
+	default:
+		LOG(SwsLog::Printf(_L("CActiveSocketUDP::RunL() Unknown State"));)
+		break;
+		}
+	}
+
+void CActiveSocketUDP::DoCancel()
+/**
+Cancel the outstanding request on UDP bearer
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	switch (iSocketState)
+		{
+	case ESocketWaitingForLength:
+			{
+			iSocket.CancelRecv();
+			break;
+			}
+	case ESocketWaitingForData:
+			{
+			break;
+			}
+	default:
+		LOG(SwsLog::Printf(_L("CActiveSocketUDP::DoCancel() Unknown State")););	
+		}
+	}
+
+//
+//CWapMessageRecord
+//
+CWapMessageRecord* CWapMessageRecord::NewL(TWapMessageType aType)
+/**
+The static funtion to instanciate the Pdu data record
+@internalComponent
+@released
+@since v8.0
+@param aType the type of Wap message which is received.
+@returns the data record instance.
+*/
+	{
+	CWapMessageRecord* me;
+	if (aType==EWapWsp)
+		{
+		me = new(ELeave) CWspMessageRecord();
+		}
+	else
+		{
+		me = new(ELeave) CWdpMessageRecord();
+		}
+	return me;
+	}
+
+CWapMessageRecord::CWapMessageRecord()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CWapMessageRecord::~CWapMessageRecord()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	if (iPdu)
+		{
+		delete iPdu;
+		}
+	}
+
+TWapMessageState CWapMessageRecord::GetDataState()
+/**
+To get the state of the data that is being received
+@internalComponent
+@released
+@since v8.0
+returns the state of the data that is being received
+*/
+	{
+	return iState;
+	}
+
+void CWapMessageRecord::SetDataState(TWapMessageState aState)
+/**
+To set the state of the data that is being received
+@internalComponent
+@released
+@since v8.0
+@param the state of the data that is being received
+*/
+	{
+	iState=aState;
+	}
+
+TPckgBuf<TUint32>* CWapMessageRecord::GetPduSizeRef()
+/**
+To get the buffer which is used to contain the received data length
+@internalComponent
+@released
+@since v8.0
+@returns the pointer to the buffer length
+*/
+	{
+	return &iDataLength;
+	}
+
+void CWapMessageRecord::SetPduSize(TUint32 aLength)
+	{
+	iDataLength=aLength;
+	}
+
+TUint32 CWapMessageRecord::GetPduSize()
+/**
+To get the received wdp pdu length
+@internalComponent
+@released
+@since v8.0
+@returns the received wdp pdu length
+*/
+	{
+	iState=EGotLength;
+	return iDataLength();
+	}
+
+HBufC8*& CWapMessageRecord::GetPduPtr()
+/**
+To get the received wdp pdu.
+@internalComponent
+@released
+@since v8.0
+@returns the pointer the received wdp buffer
+*/
+	{
+	return iPdu;
+	}
+
+void CWapMessageRecord::CreatePduBufferL(TBool aFixLengthFlag)
+/**
+create the wdp pdu buffer according to the length
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	if (iState==EContinuous)
+		{
+		iPdu = iPdu->ReAllocL(iDataLength());
+		}
+	else if (!aFixLengthFlag)
+		{
+		iPdu=HBufC8::NewL(iDataLength());
+		}
+	else
+		{
+		iPdu=HBufC8::NewL(KMaxUdpBearerDataBufferLength);
+		}
+	}
+
+void CWapMessageRecord::CleanUpData()
+/**
+clean up the receive buffer.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	if (iPdu)
+		{
+		delete iPdu;
+		iPdu=NULL;
+		}
+	iDataLength.FillZ();
+	iState=EIdle;
+	}
+
+//
+//CWspMessageRecord methods
+//
+CWspMessageRecord::CWspMessageRecord()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CWspMessageRecord::~CWspMessageRecord()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	if (iWspHeader)
+		{
+		delete iWspHeader;
+		}
+	if (iWspBody)
+		{
+		delete iWspBody;
+		}
+	}
+
+void CWspMessageRecord::UnpackPduToWspDataL()
+/**
+To unpack the received wdp pdu to wsp message.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	TWSPPduType type;
+	CCLWSPPduHandler::UnpackWSPPduL(iPdu, type, iWspHeader, iWspBody, iTransactionId, iWspStatus);
+	}
+
+TInt CWspMessageRecord::GetWspData(TDes8& aWspHeader, TDes8& aWspBody, TUint8& aTransactionId, TWSPStatus& aWspStatus)
+/**
+To read the wsp message from the buffer
+@internalComponent
+@released
+@since v8.0
+@param aWspHeader the buffer to contain the wsp header
+@param aWspBody the buffer to contain the wsp body
+@param iTransactionId the received transaction ID
+@param aWspStatus the received wsp status
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iWspHeader && !iWspBody)
+		{
+		// if no data, should not be here at all
+		LOG(SwsLog::Printf(_L("CWspMessageRecord::GetWspData() No Data Available"));)
+		CleanUpData();
+		return KErrBadDescriptor;
+		}
+	TInt ret=KErrNone;
+	//Copy the transaction ID
+	aTransactionId=iTransactionId;
+	aWspStatus=iWspStatus;
+	//Copy the header
+	TInt bufferLength;
+	if (iWspHeader)
+		{
+		bufferLength=aWspHeader.MaxLength();
+		TPtrC8 remainHeader=iWspHeader->Mid(iHeaderOffset);
+		//Client Header buffer is not long enough
+		if (bufferLength<remainHeader.Length())
+			{
+			aWspHeader.Copy(remainHeader.Ptr(), bufferLength);
+			iHeaderOffset+=bufferLength;
+			iState=EReading;
+			ret=Wap::EMoreData;
+			}
+		else
+			{
+			aWspHeader.Copy(remainHeader);
+			iHeaderOffset=0;
+			delete iWspHeader;
+			iWspHeader=NULL;
+			}
+		}
+	if (iWspBody)
+		{
+		//Copy the Body
+		bufferLength=aWspBody.MaxLength();
+		TPtrC8 remainBody=iWspBody->Mid(iBodyOffset);
+
+		//Client Header buffer is not long enough
+		if (bufferLength<remainBody.Length())
+			{
+			aWspBody.Copy(remainBody.Ptr(), bufferLength);
+			iBodyOffset+=bufferLength;
+			iState=EReading;
+			ret=Wap::EMoreData;
+			}
+		else
+			{
+			aWspBody.Copy(remainBody);
+			iBodyOffset=0;
+			delete iWspBody;
+			iWspBody=NULL;
+			}
+		}
+	//All Wsp Data has been read.
+	if (ret==KErrNone)
+		{
+		delete iPdu;
+		iPdu=NULL;
+		iDataLength.FillZ();
+		iState=EIdle;
+		}
+	return ret;
+	}
+
+TInt CWspMessageRecord::GetPduData(TDes8& /*aBuffer*/, TBool& /*aTruncated*/)
+/**
+Not supported
+@internalComponent
+@released
+@since v8.0
+*/
+	{//Should not be used
+	return KErrNotSupported;
+	}
+
+void CWspMessageRecord::CleanUpData()
+/**
+To clean up the wsp related data
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CWapMessageRecord::CleanUpData();
+	if (iWspHeader)
+		{
+		delete iWspHeader;
+		iWspHeader=NULL;
+		}
+	if (iWspBody)
+		{
+		delete iWspBody;
+		iWspBody=NULL;
+		}
+	iTransactionId=0;
+	iHeaderOffset=0;
+	iBodyOffset=0;
+	}
+//
+//CWspMessageRecord method
+//
+CWdpMessageRecord::CWdpMessageRecord()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CWdpMessageRecord::~CWdpMessageRecord()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+TInt CWdpMessageRecord::GetPduData(TDes8& aBuffer, TBool& aTruncated)
+/**
+To read the received Wdp pdu
+@internalComponent
+@released
+@since v8.0
+@param aBuffer the buffer to contain the received wdp pdu
+@param aTruncated the flag to represent if the data is truncated or not
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iPdu)
+		{
+		//Should not be here at all
+		LOG(SwsLog::Printf(_L("CWdpMessageRecord::GetPduData No Data Available"));)
+		CleanUpData();
+		return KErrBadDescriptor;
+		}
+	TInt ret=KErrNone;
+	TInt bufLength=aBuffer.MaxLength();
+	TPtrC8 remainPdu=iPdu->Mid(iPduOffset);
+	if (bufLength<remainPdu.Length())
+		{
+		aBuffer.Copy(remainPdu.Ptr(), bufLength);
+		iPduOffset+=bufLength;
+		iState=EReading;
+		aTruncated=ETrue;
+		ret=Wap::EMoreData;
+		}
+	else
+		{
+		aBuffer.Copy(remainPdu);
+		aTruncated=EFalse;
+		CleanUpData();
+		}
+	return ret;
+	}
+
+void CWdpMessageRecord::UnpackPduToWspDataL()
+/**
+Not supported
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	//Should not be used
+	User::Leave(KErrNotSupported);
+	}
+
+TInt CWdpMessageRecord::GetWspData(TDes8& /*aWspHeader*/, TDes8& /*aWspBody*/, TUint8& /*aTransactionId*/, TWSPStatus& /*aWspStatus*/)
+/**
+Not supported
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	//Should not be used
+	return KErrNotSupported;
+	}
+
+void CWdpMessageRecord::CleanUpData()
+/**
+To clean up the wdp related data
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CWapMessageRecord::CleanUpData();
+	iPduOffset=0;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/ActiveSocket.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,385 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __ACTIVESOCKET_H__
+#define __ACTIVESOCKET_H__
+
+#include <e32std.h>
+#include <wapmessage.h>
+#include "WapSwsTimeOut.h"
+
+
+class CActiveSocketSMS;
+class CActiveSocketUDP;
+class MProgressNotify;
+
+enum TWapMessageState
+	{
+	/**
+	The state that is no outstanding request.
+	*/
+	EIdle,
+	/**
+	The state that the messaging API client is requesting data length
+	*/
+	ERequestingLength,
+	/**
+	The state the the messaging API client is requesting data
+	*/
+	ERequestingData,
+	/**
+	The state that the data size is ready to be read
+	*/
+	EPendingLength,
+	/**
+	The state that the messaging API client got the data length
+	*/
+	EGotLength,
+	/**
+	The state that the received data is ready to be read
+	*/
+	EPendingData,
+	/**
+	The state the data is being reading, but not finished
+	*/
+	EReading,
+	/**
+	The state that there are more data to be received from ESock (PRT 1.5)
+	*/
+	EContinuous
+	};
+enum TWapMessageType
+	{
+	/**
+	Wsp message
+	*/
+	EWapWsp,
+	/**
+	Wdp message
+	*/
+	EWapWdp
+	};
+enum TWapActiveSocketState
+	{
+	/**
+	No outstanding request state
+	*/
+	ESocketIdle,
+	/**
+	Waiting for the PDU length state
+	*/
+	ESocketWaitingForLength,
+	/**
+	Waiting for the PDU data state
+	*/
+	ESocketWaitingForData
+	};
+enum TWapNotificationEvent
+	{
+	/**
+	The event that PDU length is ready.
+	*/
+	EPduLengthReceived,
+	/**
+	The event thst PDU us ready
+	*/
+	EPduReceived
+	};
+
+class TWapNotificationInfo
+	{
+public:
+	inline TWapNotificationInfo(Wap::TBearer aBearer, TInt aError);
+	Wap::TBearer iBearer;
+	TInt iError;
+	};
+
+inline TWapNotificationInfo::TWapNotificationInfo(Wap::TBearer aBearer, TInt aError):
+iBearer(aBearer), iError(aError)
+	{
+	}
+
+typedef TPckgBuf<TWapNotificationInfo> TWapNotificationInfoBuf;
+
+const TUint KMaxUdpBearerDataBufferLength=1024;
+
+class CWapMessageRecord: public CBase
+/** 
+The Base class to represent the received WSP and WDP PDU
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+public:
+	static CWapMessageRecord* NewL(TWapMessageType aType);
+	virtual ~CWapMessageRecord();
+	TWapMessageState GetDataState();
+	void SetDataState(TWapMessageState aStatus);
+	void CreatePduBufferL(TBool aFixLengthFlag);
+	TPckgBuf<TUint32>* GetPduSizeRef();
+	void SetPduSize(TUint32 aLength);
+	TUint32 GetPduSize();
+	HBufC8*& GetPduPtr();
+	/**
+	To read the received Wdp pdu
+	@internalComponent
+	@released
+	@since v8.0
+	@param aBuffer(out) the buffer to contain the received wdp pdu
+	@param aTruncated(out) the flag to represent if the data is truncated or not
+	@returns KErrNone on successful completion, or one of the system error codes on failure.
+	*/
+	virtual TInt GetPduData(TDes8& aBuffer, TBool& aTruncated)=0;
+	/**
+	To unpack the received wdp pdu to wsp message.
+	@internalComponent
+	@released
+	@since v8.0
+	*/
+	virtual void UnpackPduToWspDataL()=0;
+	/**
+	To read the wsp message from the buffer
+	@internalComponent
+	@released
+	@since v8.0
+	@param aWspHeader(out) the buffer to contain the wsp header
+	@param aWspBody(out) the buffer to contain the wsp body
+	@param iTransactionId(out) the received transaction ID
+	@param aWspStatus(out) the received wsp status
+	@returns KErrNone on successful completion, or one of the system error codes on failure.
+	*/
+	virtual TInt GetWspData(TDes8& aWspHeader, TDes8& aWspBody, TUint8& aTransactionId, TWSPStatus& aWspStatus)=0;
+	virtual void CleanUpData();
+public:
+	/**The received WDP PDU Data buffer
+	*/
+	HBufC8* iPdu;
+	/**The received WDP PDU length buffer
+	*/
+	TPckgBuf<TUint32> iDataLength;
+
+protected:
+	CWapMessageRecord();
+	/**The state of the received the WSP or WDP data
+	*/
+	TWapMessageState iState;
+	};
+
+class CWspMessageRecord: public CWapMessageRecord
+/** 
+The class to represent the received WSP PDU
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+public: 
+	CWspMessageRecord();
+	~CWspMessageRecord();
+	void UnpackPduToWspDataL();
+	TInt GetWspData(TDes8& aWspHeader, TDes8& aWspBody, TUint8& aTransactionId, TWSPStatus& aWspStatus);
+	TInt GetPduData(TDes8& aBuffer, TBool& aTruncated);
+	void CleanUpData();
+private:
+	/**
+	The buffer for received Wsp header.
+	*/
+	HBufC8* iWspHeader;
+	/**
+	The buffer for received Wsp body.
+	*/
+	HBufC8* iWspBody;
+	/**
+	The received the transaction Id.
+	*/
+	TUint8 iTransactionId;
+	/**
+	The received WSP layer status
+	*/
+	TWSPStatus iWspStatus;
+	/**
+	The offset of the header for next reading
+	*/
+	TInt iHeaderOffset;
+	/**
+	The offset of the body for next reading
+	*/
+	TInt iBodyOffset;
+	};
+
+class CWdpMessageRecord: public CWapMessageRecord
+/** 
+The class to represent the received WDP PDU
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+public:
+	CWdpMessageRecord();
+	~CWdpMessageRecord();
+	void UnpackPduToWspDataL();
+	TInt GetWspData(TDes8& aWspHeader, TDes8& aWspBody, TUint8& aTransactionId, TWSPStatus& aWspStatus);
+	TInt GetPduData(TDes8& aBuffer, TBool& aTruncated);
+	void CleanUpData();
+private:
+	/**
+	The offset of the pdu for next reading
+	*/
+	TUint32 iPduOffset;
+	};
+
+class CActiveSocket: public CActive
+/** 
+The base class for the different bearer classes.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+public:
+	static void NewL(RSocketServ& aSocketServ, RPointerArray<CActiveSocket>& aActiveSockets, Wap::TBearer aBearer, TWapMessageType aType, MProgressNotify* aNotify, Wap::TPort aLocalPort, RConnection* aConnection=NULL);
+	static void NewL(RSocketServ& aSocketServ, RPointerArray<CActiveSocket>& aActiveSockets, Wap::TBearer aBearer, TWapMessageType aType, MProgressNotify* aNotify, const TSockAddr& aRemoteAddr, RConnection* aConnection=NULL);
+	virtual ~CActiveSocket();
+	virtual void ConstructL(TWapMessageType aType);
+	/**
+	Read the received Wdp pdu length.
+	@internalComponent
+	@released
+	@since v8.0
+	@returns KErrNone on successful completion, or one of the system error codes on failure.
+	*/
+	virtual TInt AwaitRecvDataSize() = 0;
+	/**
+	Read the received Wdp pdu.
+	@internalComponent
+	@released
+	@since v8.0
+	@returns KErrNone on successful completion, or one of the system error codes on failure.
+	*/
+	virtual TInt Receive() = 0;
+	TSockAddr& GetLocalAddress();
+	TInt GetLocalPort(Wap::TPort& aLocalPort);
+	TInt GetRemoteAddress(HBufC8*& aAddr);
+	TSockAddr& GetRemoteAddress();
+
+	TWapMessageState GetDataState();
+	void SetDataState(TWapMessageState aState);
+	TUint32 GetPduSize();
+	TInt GetPduData(TDes8& aBuffer, TBool& aTruncated);
+	TInt GetWspData(TDes8& aWspHeader, TDes8& aWspBody, TUint8& aTransactionId, TWSPStatus& aStatus);	
+	void UnpackPduToWspDataL();
+	Wap::TBearer GetBearerType();
+	RSocket& Socket();
+	void CleanUpData();
+
+public:
+	/**The RSocket instance to send and receive WDP PDU.
+	*/
+	RSocket iSocket;
+	/**The remote address for the last received message
+	*/
+	TSockAddr iRemoteAddr;
+	/**The local address for the last received message
+	*/
+	TSockAddr iLocalAddr;
+
+protected:
+	CActiveSocket(RSocketServ& aSocketServ, Wap::TBearer aBearerType, MProgressNotify* aNotify, Wap::TPort aLocalPort);
+	CActiveSocket(RSocketServ& aSocketServ, Wap::TBearer aBearerType, MProgressNotify* aNotify, const TSockAddr& aRemoteAddr, Wap::TPort aLocalPort);
+
+protected:
+	/**The data buffer to receive WDP or WSP message
+	*/
+	CWapMessageRecord* iMessageRecord;
+	/**The RSocketServ reference from WAP message API
+	*/
+	RSocketServ& iSocketServ;
+	/**The Bearer type
+	*/
+	Wap::TBearer iBearerType;
+	/**The port number for the last received message
+	*/
+	Wap::TPort iLocalPort;
+	/**The state of the bearer
+	*/
+	TWapActiveSocketState iSocketState;
+	/**
+	The instance that to be notified when data is received
+	*/
+	MProgressNotify* iNotify;
+	/**
+	Buffer for the first read from ESock
+	*/
+	TPtr8 iBuf;
+	/**
+	Reported remaining length for PRT 1.5 
+	*/
+	TSockXfrLength iRxlength;
+	/**
+	Buffer for continious read from ESock
+	*/
+	TPtr8 iBufCon;
+	};
+
+class CActiveSocketSMS : public CActiveSocket
+/** 
+The class represent the SMS bearer. It will open a RSocket over WapSMS protocol, send and 
+receive WDP PDU.
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	CActiveSocketSMS(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, Wap::TPort aLocalPort);
+	CActiveSocketSMS(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, const TSockAddr& aRemoteAddr);
+	virtual ~CActiveSocketSMS();
+	TInt AwaitRecvDataSize();
+	TInt Receive();
+	void ConstructL(TWapMessageType aType);
+private:
+	void RunL();
+	void DoCancel();
+};
+
+class CActiveSocketUDP : public CActiveSocket
+/** 
+The class represent the UDP bearer. It will open a RSocket over UDP protocol, send and 
+receive WDP PDU. It is not supported in released v8.0.
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	CActiveSocketUDP(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, Wap::TPort aLocalPort, RConnection* aConnection);
+	CActiveSocketUDP(RSocketServ& aSocketServ, MProgressNotify* aNotify, Wap::TBearer aBearer, const TSockAddr& aRemoteAddr, RConnection* aConnection);
+	virtual ~CActiveSocketUDP();
+	TInt AwaitRecvDataSize();
+	TInt Receive();
+	void ConstructL(TWapMessageType aType);
+private:
+	void RunL();
+	void DoCancel();
+	/**
+	The RConnection shared with the WAP message API client.
+	*/
+	RConnection* iConnection;
+};
+
+#endif // __ACTIVESOCKET_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/CLWSPPduHandler.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,346 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "CLWSPPduHandler.h"
+#include "wapmsgerr.h"
+#include "WapSwsLog.h"
+
+void CCLWSPPduHandler::UnpackWSPPduL(HBufC8* aWSPPdu, TWSPPduType& aType, HBufC8*& aWSPHeader, HBufC8*& aBody, TUint8& aId, TWSPStatus& aStatus)
+/** 
+Unpack the received WSP PDU from remote peer to several data structure expected by the client.
+@internalComponent
+@released 
+@since v8.0 
+@param aWSPPdu the received WSP PDU from the remote peer. 
+@param aType the type of the received WSP PDU.
+@param aWSPHeader the WSP header of the received WSP PDU.
+@param aBody the data body of the received WSP PDU.
+@param aId the transaction ID or Push ID of the received WSP PDU.
+@param aStatus the WSP status of the received WSP PDU.
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TPtr8 des=aWSPPdu->Des();
+	if(des.Length() < KPDUTransactionIDAndPDUTypeLength)
+	{
+		LOG(SwsLog::Printf(_L("CCLWSPPduHandler::UnpackWSPPduL() Corrupted InComing Wsp PDU"));)
+		User::Leave(KErrCorrupt);
+	}
+	aId=des[KPDUHeaderTransactionIDOffSet];
+	aType=TWSPPduType(des[KPDUHeaderWSPPDUTypeOffSet]);
+	switch (aType)
+		{
+	case EReply:
+		UnpackReplyPduL(aWSPPdu, aWSPHeader, aBody, aStatus);
+		break;
+	case EPush:
+		UnpackPushPduL(aWSPPdu, aWSPHeader, aBody);
+		break;
+	default:
+		LOG(SwsLog::Printf(_L("CCLWSPPduHandler::UnpackWSPPduL() Unknown InComing Wsp PDU Type"));)
+		User::Leave(KErrCorrupt);
+		}
+	}
+
+void CCLWSPPduHandler::PackWSPPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId)
+/** 
+Pack the information to be sent into WSP PDU.
+@internalComponent
+@released 
+@since v8.0 
+@param aWSPPdu the WSP PDU that is to sent 
+@param aType the WSP PDU type(the method is to be invoked) 
+@param aURI  the URI where the WSP PDU goes
+@param aWSPHeader the WSP header
+@param aBody the data body
+@param aId the transaction ID
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	switch (aType)
+		{
+	case EGet:
+	case EGetOptions:
+	case EGetHead:
+	case EGetDelete:
+	case EGetTrace:
+		PackGetPduL(aWSPPdu, aType, aURI, aWSPHeader, aId);
+		break;
+	
+	case EPost:
+	case EPostPut:
+		PackPostPduL(aWSPPdu, aType, aURI, aWSPHeader, aBody, aId);
+		break;
+
+	default:
+		LOG(SwsLog::Printf(_L("CCLWSPPduHandler::PackWSPPduL() Unknown Method Invoke Wsp PDU Type"));)
+		User::Leave(Wap::EWspClParameterError);
+		}
+	}
+
+void CCLWSPPduHandler::UnpackPushPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody)
+/**
+Unpack the WSP PUSH PDU.
+@internalComponent
+@released 
+@since v8.0 
+@param aWSPPdu the received WSP PDU from the remote peer. 
+@param aWSPHeader the WSP header of the received WSP PDU.
+@param aBody the data body of the received WSP PDU.
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TPtrC8 pduBuffer(*aWSPPdu);
+	TUint32 pduLength=pduBuffer.Length();
+	TUint32 headerLength(0);
+	TInt uintvarLength(0);
+
+	// if uintvarLength less than KErrNone, then it is a error code.
+	if ((uintvarLength=UintVar(headerLength, pduBuffer, KPDUTransactionIDAndPDUTypeLength))<KErrNone)
+		{
+		User::Leave(uintvarLength);
+		}
+ 	TInt32 bodyLength= pduLength-KPDUTransactionIDAndPDUTypeLength-uintvarLength-headerLength;
+	if (bodyLength<0)
+		{
+		User::Leave(KErrCorrupt);
+		}
+	// Extract the WSP Header.
+	aWSPHeader=HBufC8::NewL(headerLength);
+	TPtr8 headerDes=aWSPHeader->Des();
+	headerDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+uintvarLength, headerLength));
+	// Extract the WSP data body.
+	aBody=HBufC8::NewL(bodyLength);
+	TPtr8 bodyDes=aBody->Des();
+	bodyDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+uintvarLength+headerLength));
+	}
+
+void CCLWSPPduHandler::UnpackReplyPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody, TWSPStatus& aStatus)
+/**
+Unpack the WSP Reply PDU.
+@internalComponent
+@released 
+@since v8.0 
+@param aWSPPdu the received WSP PDU from the remote peer. 
+@param aWSPHeader the WSP header of the received WSP PDU.
+@param aBody the data body of the received WSP PDU.
+@param aStatus the WSP status of the received WSP PDU.  
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TPtrC8 pduBuffer(*aWSPPdu);
+	TUint32 pduLength=pduBuffer.Length();
+
+	//Extract the WSP status
+	aStatus=pduBuffer[KPDUTransactionIDAndPDUTypeLength];
+
+	TUint32 headerLength(0);
+	TInt uintvarLength(0);
+	// if uintvarLength less than KErrNone, then it is a error code.
+	if ((uintvarLength=UintVar(headerLength, pduBuffer, KPDUTransactionIDAndPDUTypeLength+KWSPStatusLength))<KErrNone)
+		{
+		User::Leave(uintvarLength);
+		}
+		
+	TInt32 bodyLength= pduLength-KPDUTransactionIDAndPDUTypeLength-KWSPStatusLength-uintvarLength-headerLength;
+	if (bodyLength<0)
+		{
+		User::Leave(KErrCorrupt);
+		}
+		
+	// Extract the WSP Header.
+	aWSPHeader=HBufC8::NewL(headerLength);
+	TPtr8 headerDes=aWSPHeader->Des();
+	headerDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+KWSPStatusLength+uintvarLength, headerLength));
+
+	// Extract the WSP data body.
+	aBody=HBufC8::NewL(bodyLength);
+	TPtr8 bodyDes=aBody->Des();
+	bodyDes.Copy(pduBuffer.Mid(KPDUTransactionIDAndPDUTypeLength+KWSPStatusLength+uintvarLength+headerLength));
+	}
+
+void CCLWSPPduHandler::PackPostPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId)
+/** 
+Pack the WSP Post PDU.
+@internalComponent
+@released 
+@since v8.0 
+@param aWSPPdu the WSP PDU that is to sent 
+@param aType the WSP PDU type(the method is to be invoked) 
+@param aURI the URI where the WSP PDU goes
+@param aWSPHeader the WSP header
+@param aBody the data body
+@param aId the transaction ID
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	//Convert the URI length to Varible length unsigned integer
+	TUint32 uriLength=aURI.Length();
+	HBufC8* uriLengthDes=UintVarL(uriLength);
+
+	//Convert the URI length to Varible length unsigned integer
+	TUint32 headerLength=aWSPHeader.Length();
+	HBufC8* headerLengthDes=UintVarL(headerLength);
+
+	// Calculate the pdu length
+	TUint32 pduLength = KPDUTransactionIDAndPDUTypeLength+
+						uriLengthDes->Length()+
+						headerLengthDes->Length()+
+						uriLength+
+						headerLength+
+						aBody.Length();
+
+	//Build the PDU.
+	aWSPPdu = HBufC8::NewL(pduLength);
+	TPtr8 pduPtr(aWSPPdu->Des());
+	pduPtr.Append(aId);
+	pduPtr.Append(aType);
+	pduPtr.Append(*uriLengthDes);
+	pduPtr.Append(*headerLengthDes);
+	pduPtr.Append(aURI);
+	pduPtr.Append(aWSPHeader);
+	pduPtr.Append(aBody);
+
+	// delete the temporary buffers
+	delete uriLengthDes;
+	delete headerLengthDes;
+	}
+void CCLWSPPduHandler::PackGetPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TUint8 aId)
+/** 
+Pack the WSP Get PDU.
+@internalComponent
+@released 
+@since v8.0 
+@param aWSPPdu the WSP PDU that is to sent 
+@param aType the WSP PDU type(the method is to be invoked) 
+@param aURI the URI where the WSP PDU goes
+@param aWSPHeader the WSP header
+@param aId the transaction ID
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+
+	//Convert the URI length to Varible length unsigned integer
+	TUint32 uriLength=aURI.Length();
+	HBufC8* uriLengthDes=UintVarL(uriLength);
+
+	// Calculate the pdu length
+	TUint32 pduLength =	KPDUTransactionIDAndPDUTypeLength+
+						uriLengthDes->Length()+
+						uriLength+
+						aWSPHeader.Length();
+
+	// Build the PDU.
+	aWSPPdu = HBufC8::NewL(pduLength);
+	TPtr8 pduPtr(aWSPPdu->Des());
+	pduPtr.Append(aId);
+	pduPtr.Append(aType);
+	pduPtr.Append(*uriLengthDes);
+	pduPtr.Append(aURI);
+	pduPtr.Append(aWSPHeader);
+	
+	//Delete the temporary buffer
+	delete uriLengthDes;
+	}
+TInt CCLWSPPduHandler::UintVar(TUint32& aVal, TPtrC8& aBuffer, TUint aOffset)
+/** 
+Decode the variable length Unsigned integer to TUint32
+@internalComponent
+@released 
+@since v8.0 
+@param aVal the value of the variable length Unsigned integer
+@param aBuffer the descriptor that contains the variable length Unsigned integer
+@param aOffset the offset of the variable length Unsigned integer
+@returns one of the system error codes on failure, or the size of variable length Unsigned integer.
+*/
+	{
+	// have we run out of buffer?
+	if (aOffset >= (TUint)aBuffer.Length())
+		{
+		return KErrCorrupt;
+		}
+		
+	// maximum length for a uintvar is 5
+	TInt lenLeft = Min(aBuffer.Mid(aOffset).Length(), KMaxUintVarLength);
+
+	// get the first octet
+	TUint8 byte = aBuffer[aOffset++];
+	TInt numBytes = 1;
+	--lenLeft;
+
+	// Check if any of the top 3 bits, ignoring the very top 'continue' bit, are set.  
+	// Later if we see that this is a 5 byte number - we'll know it is corrupt.  
+	// Encoding uses 7 bits/number 7x5=35 and we only support a maxiumum number 
+	// of 32 bits.
+	TBool topThreeBitsSet = byte & KTop3BitSet; 
+
+	// copy over data from the byte into our return value (the top bit is a carry bit)
+	aVal = byte & KWapQuote;
+
+	// while the 'continue' bit is set and we have more data
+	while ((byte & KCarryBitMask) && (lenLeft > 0))
+		{
+		// shift our last value up
+		aVal <<= KUIntVarOctetShift;
+		// get the next byte
+		byte = aBuffer[aOffset++];
+		// copy it over to the lowest byte
+		aVal |= byte & KWapQuote;
+		--lenLeft;
+		++numBytes;
+		} 
+
+	// last octet has continue bit set ... NOT allowed Or
+	// this was encoded wrong - can't have a number bigger than 32 bits
+	if ((byte & KCarryBitMask) || (numBytes == 5 && topThreeBitsSet))
+		{
+		return KErrCorrupt;
+		}
+	// number of bytes read
+	return numBytes;
+
+	}
+
+HBufC8* CCLWSPPduHandler::UintVarL(const TUint32 aInt)
+/** 
+Encode the TUint32 to the variable length Unsigned integer
+@internalComponent
+@released 
+@since v8.0 
+@param aInt the length of the data
+@returns the descriptor that contains the variable length Unsigned integer
+*/
+	{
+	TUint8 size = 0; // maximum value is 5 with a 32bit integer
+	TUint32 value=aInt;
+	do {
+		++size;
+		value >>=KUIntVarOctetShift; ; // shift by 7 bits.
+		} while (value>0);
+
+	HBufC8* output = HBufC8::NewL(size);
+	TPtr8 outPtr(output->Des());
+
+	TInt ii = size; 
+	while (--ii > 0)
+		{
+		outPtr.Append( (TUint8)(aInt>>(KUIntVarOctetShift*(ii))  & KWapQuote) | KCarryBitMask); 
+		} 
+
+	// Finally the first 7 bits, last octet, do not set first bit.
+	outPtr.Append( (TUint8)(aInt & KWapQuote) ); // Add even if 0 value.
+
+	return output;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/CLWSPPduHandler.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,141 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CLWSPPDUHANDLER_H__
+#define __CLWSPPDUHANDLER_H__
+#include <e32std.h>
+#include <wapmessage.h>
+
+
+/** 
+The connectionless WSP PDU type definition.
+@internalComponent
+*/
+enum TWSPPduType
+	{
+	/** the Reply PDU type assignment 
+	*/
+	EReply			=0x04,
+	/** the Push PDU type assignment 
+	*/
+	EPush			=0x06,
+	/** the Get PDU type assignment 
+	*/
+	EGet			=0x40,
+	/** the GetOption PDU type assignment 
+	*/
+	EGetOptions		=0x41,
+	/** the Gethead PDU type assignment 
+	*/
+	EGetHead		=0x42,
+	/** the GetDelete PDU type assignment 
+	*/
+	EGetDelete		=0x43,
+	/** the GetTrace PDU type assignment 
+	*/
+	EGetTrace		=0x44,
+	/** the Post PDU type assignment 
+	*/
+	EPost			=0x60,
+	/** the PostPut PDU type assignment 
+	*/
+	EPostPut		=0x61
+	};
+
+
+	/** 
+	The offset of the transactionID field in WSP PDU.
+	@internalComponent
+	 */
+	const TUint KPDUHeaderTransactionIDOffSet	=0;
+	/** 
+	The offset of the WSP PDU type field in WSP PDU.
+	@internalComponent
+	 */
+	const TUint KPDUHeaderWSPPDUTypeOffSet		=1;
+	/** 
+	The offset of WSP field.
+	@internalComponent
+	*/
+	const TUint KPDUFieldOffset					=2;
+
+	/** 
+	The length of transactionID+PDUType
+	@internalComponent
+	*/
+	const TUint8 KPDUTransactionIDAndPDUTypeLength	=2;
+	/** 
+	The length of WSP status
+	@internalComponent
+	*/
+	const TUint8 KWSPStatusLength					=1;
+
+	/**
+	The mask of top 3 bits in varible length Unsigned integer
+	@internalComponent
+	*/
+	const TUint8 KTop3BitSet		= 0x70;
+
+	/**
+	The mask to valide each byte in varible length Unsigned integer
+	@internalComponent
+	*/
+	const TUint8 KWapQuote			= 0x7F;
+
+	/**
+	The mask of carry bit in each byte in varible length Unsigned integer
+	@internalComponent
+	*/
+	const TUint8 KCarryBitMask		= 0x80;
+
+	/**
+	Maximum length for varible length Unsigned integer
+	@internalComponent
+	*/
+	const TUint8 KMaxUintVarLength	= 5;
+
+	/**
+	shift 7 bits for each byte in Uint32
+	@internalComponent
+	*/
+	const TUint8 KUIntVarOctetShift	= 7;
+
+
+
+class CCLWSPPduHandler
+/** 
+The Connectionless WSP PDU Handler. This class provides a set of static interfaces 
+for WAP message APIs to pack and unpack the WSP PDU.   
+For error codes returned by methods in this class, see <wapmsgerr.h>.  Most methods can 
+return a set of general errors, with some returning additional specific errors.
+*/
+	{
+public: 
+
+
+
+public: // Public Interfaces
+	static void UnpackWSPPduL(HBufC8* aWSPPdu, TWSPPduType& aType, HBufC8*& aWSPHeader, HBufC8*& aBody, TUint8& aId, TWSPStatus& aStatus);
+	static void PackWSPPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId);
+
+private: // private methods
+	static void UnpackPushPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody);
+	static void UnpackReplyPduL(HBufC8* aWSPPdu, HBufC8*& aWSPHeader, HBufC8*& aBody, TWSPStatus& aStatus);
+	static void PackPostPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TDesC8& aBody, const TUint8 aId);
+	static void PackGetPduL(HBufC8*& aWSPPdu, TWSPPduType aType, const TDesC& aURI, const TDesC8& aWSPHeader, const TUint8 aId);
+	static TInt UintVar(TUint32& aVal, TPtrC8& aBuffer, TUint aOffset);
+	static HBufC8* UintVarL(const TUint32 aInt);
+	};
+#endif // __CLWSPPDUHANDLER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapBoundCLPush.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,198 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapBoundCLPush.h"
+#include "WapMsgUtils.h"
+#include <wapmsgerr.h>
+
+CSWSWapBoundCLPushService* CSWSWapBoundCLPushService::NewL()
+/**
+Static new function
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CSWSWapBoundCLPushService* me = new(ELeave)CSWSWapBoundCLPushService();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CSWSWapBoundCLPushService::~CSWSWapBoundCLPushService()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	delete iAgent;
+	}
+
+CSWSWapBoundCLPushService::CSWSWapBoundCLPushService()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+void CSWSWapBoundCLPushService::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Parent class construction
+	CWapBoundCLPushService::ConstructL();
+	iAgent=CWspMessageApiAgent::NewL();
+	}
+
+TInt CSWSWapBoundCLPushService::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure, TInetAddr /*aInetAddr*/)
+/**
+Opens a Wsp EndPoint which is to be used to listen for subsequent incoming Push messages from any sender;
+@internalComponent
+@released
+@since v8.0
+@param aBearer (in) the bearer to listen on (use EAll for all bearers)
+@param aPort (in) the port to listen on. If set to 0, a local port will be chosen for the client's first SendTo
+@param aSecure (in) security flag indicates whether WTLS will be used or not
+@param aInetAddr (in) the address of the adapter to use
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if(aSecure) 
+		{
+		return KErrNotSupported;
+		}
+	return iAgent->Connect(aBearer, aPort, aSecure);
+	}
+
+TInt CSWSWapBoundCLPushService::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure)
+/**
+Opens a socket which is to be used to listen for subsequent incoming Push messages from any sender;
+@internalComponent
+@released
+@since v8.0
+@param aBearer (in) the bearer to listen on (use EAll for all bearers)
+@param aPort (in) the port to listen on. If set to 0, a local port will be chosen for the client's first SendTo
+@param aSecure (in) security flag indicates whether WTLS will be used or not
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInetAddr inetAddr( KInetAddrAny, 0);
+	return( Connect(aBearer, aPort, aSecure, inetAddr) );
+	}
+
+TInt CSWSWapBoundCLPushService::AwaitPush(TDes8& aPushHeaders, TDes8& aPushBody, TPckgBuf<TUint8>& aPushIdPckg, TRequestStatus& aReqStatus)
+/**
+Request an asynchronous notification upon arrival of the next push messages on the listening connection.
+The request completes upon receipt of the message, filling the buffers with as much received data as possible.
+A return code will indicate whether further data remains.  The call must be re-issued for subsequent messages
+or to receive remaining data from a previous push message.
+@internalComponent
+@released
+@since v8.0
+@param aPushHeaders (out) (client-allocated) - when a push message arrives the header data is written here
+@param aPushBody (out) (client-allocated) - when a push message arrives the body data is written here
+@param aPushIdPckg (out) when a push message arrives an integer ID that uniquely specifies the message is written here
+@param aReqStatus (inout) used by the service provider to notify the client when a push has arrived.
+EMoreData is returned if more pushed data is available
+@retval KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInt err = iAgent->ReceiveWspMessage(aPushHeaders, aPushBody, aPushIdPckg, iWspStatus, aReqStatus, 0);
+	if(err == Wap::EMoreData)
+	{
+		return KErrNone;
+	}
+	return err;
+	}
+
+void CSWSWapBoundCLPushService::CancelAwaitPush()
+/**
+Cancel a previously-requested push message notification. If a push message arrives the client will not be notified.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iAgent->CancelRequest();
+	}
+
+TInt CSWSWapBoundCLPushService::GetLocalPort(Wap::TPort& aPort)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aPort (out) the port of the local host
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalPort(aPort);
+	}
+
+TInt CSWSWapBoundCLPushService::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aLocalHost (inout) the address of the local host. A reference to a HBufC8 pointer should
+be passed in. This pointer MUST be null! A HBufC8 will be allocated to hold the address, ownership
+of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalAddress(aLocalHost);
+	}
+
+TInt CSWSWapBoundCLPushService::GetBearer(Wap::TBearer& aBearer)
+/**
+Get the bearer on which the push message arrived.
+Useful when EAll was specified in Connect()
+@internalComponent
+@released
+@since v8.0
+@param aBearer (out) the bearer
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetBearer(aBearer);
+	}
+
+TInt CSWSWapBoundCLPushService::GetServerAddress(HBufC8*& aRemoteHost)
+/**
+Get the address of the remote server
+@internalComponent
+@released
+@since v8.0
+Cannot be called when there is an outstanding AwaitPush().
+@param aRemoteHost the address of the remote server.
+A reference to a HBufC8 pointer should be passed in. An HBufC8 will be allocated
+to hold the address ,ownership of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, KErrNotSupported if not implemented or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetServerAddress(aRemoteHost);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapBoundCLPush.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,70 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CSWSWAPBOUNDCLPUSHSERVICE_H__
+#define __CSWSWAPBOUNDCLPUSHSERVICE_H__
+
+// Include definitions of ECOM interfaces for the WAP Messaging API
+#include <wapmessage.h>
+#include "WapMessageApiAgent.h"
+
+
+
+class CSWSWapBoundCLPushService : public CWapBoundCLPushService
+/** 
+The WAP Messaging API, SWS WAP Stack binding.  Implementation of the bound CLPush API.
+@internalComponent
+@released
+@since v8.0
+*/ 
+{
+public:
+	static CSWSWapBoundCLPushService* NewL();
+	virtual ~CSWSWapBoundCLPushService();
+
+public:
+	virtual TInt Connect(Wap::TBearer aBearer,
+					  Wap::TPort aPort,
+					  TBool aSecure,
+					  TInetAddr aInetAddr);
+	virtual TInt Connect(Wap::TBearer aBearer,
+					  Wap::TPort aPort,
+					  TBool aSecure);
+	virtual TInt AwaitPush(TDes8& aPushHeaders,
+						  TDes8& aPushBody,
+						  TPckgBuf<TUint8>& aPushIdPckg,
+						  TRequestStatus& aReqStatus);
+	virtual void CancelAwaitPush();
+	virtual TInt GetLocalPort(Wap::TPort& aPort);
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost);
+	virtual TInt GetBearer(Wap::TBearer& aBearer);
+	virtual TInt GetServerAddress(HBufC8*& aRemoteHost);
+
+private:
+	CSWSWapBoundCLPushService();
+	void ConstructL();
+
+private:
+	/**
+	the agent instance which actually handles wsp PDU.
+	*/
+	CWspMessageApiAgent* iAgent;
+	/**
+	the wsp status in received wsp PDU. Not used in push.
+	*/
+	TWSPStatus iWspStatus;
+};
+
+#endif // __CSWSWAPBOUNDCLPUSHSERVICE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapBoundCLWSP.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,201 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapBoundCLWSP.h"
+#include "WapMsgUtils.h"
+#include "CLWSPPduHandler.h"
+
+
+
+CSWSWapBoundCLWSPService* CSWSWapBoundCLWSPService::NewL()
+/**
+Static new function
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CSWSWapBoundCLWSPService* me = new(ELeave)CSWSWapBoundCLWSPService();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CSWSWapBoundCLWSPService::CSWSWapBoundCLWSPService()
+	: CWapBoundCLWSPService()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CSWSWapBoundCLWSPService::~CSWSWapBoundCLWSPService()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	delete iAgent;
+	}
+
+void CSWSWapBoundCLWSPService::ConstructL()
+/**
+Second phase constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Parent class construction
+	CWapBoundCLWSPService::ConstructL();
+	iAgent=CWspMessageApiAgent::NewL();
+	}
+
+TInt CSWSWapBoundCLWSPService::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure)
+/**
+Opens a End-point which is to be used to listen for the incoming method result messages from any sender;
+@internalComponent
+@released
+@since v8.0
+@param aBearer (in) the bearer to listen on (use EAll for all bearers)
+@param aPort (in) the port to listen on. If set to 0, a local port will be chosen for the client's first SendTo
+@param aSecure (in) security flag indicates whether WTLS will be used or not
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if(aSecure) 
+		{
+		return KErrNotSupported;
+		}
+	return iAgent->Connect(aBearer, aPort, aSecure);
+	}
+
+TInt CSWSWapBoundCLWSPService::MethodInvoke(Wap::TBearer aBearer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, const TUint8 aTransactionId)
+/**
+A synchronous call to send a method invoke method to the remote host.
+@internalComponent
+@released
+@since v8.0
+@param aBearer (in) the bearer that will be used
+@param aRemoteHost (in) the remotehost to be sent message to
+@param aRemotePort (in) the remoteport to be sent message to
+@param aMethod (in) the method that will be invoked on server
+@param aURI (in) the uri to build wsp message
+@param aReqHeaders (in) the wsp header to be used to build method invoke message
+@param aReqBody (in) the wsp body to be used to build method invoke message
+@param aTransactionId (in) the transaction Id of the method invoke message
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->SendWspMessage(aBearer, aRemoteHost, aRemotePort, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId);
+	}
+
+TInt CSWSWapBoundCLWSPService::MethodResult(TDes8& aReqHeaders, TDes8& aReqBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout)
+/**
+Request an asynchronous notification upon arrival of the method result messages on the listening connection.
+The request completes upon receipt of the message, filling the buffers with as much received data as possible.
+A return code will indicate whether further data remains.  The call must be re-issued for subsequent messages
+or to receive remaining data from a previous method result message.
+@internalComponent
+@released
+@since v8.0
+@param aReqHeaders (out) (client-allocated) - when a method result message arrives the header data is written here
+@param aReqBody (out) (client-allocated) - when a method result message arrives the body data is written here
+@param aTransactionIdPckg (out) when a method result message arrives an integer ID that uniquely specifies the message is written here
+@param aWspStatus (out) when a method result message arrives, the wsp status is written here.
+@param aReqStatus (inout) used by the service provider to notify the client when a method result has arrived
+@param aTimeout (in) an optional millisecond time-out which allows a timed read to be made.  If no data is received 
+within the timeout period the request completes with KErrTimedOut. If a value of 0 is supplied the timeout is infinite.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->ReceiveWspMessage(aReqHeaders, aReqBody, aTransactionIdPckg, aWspStatus, aReqStatus, aTimeout);
+	}
+
+void CSWSWapBoundCLWSPService::CancelReq()
+/**
+Cancel a previously-requested method result notification. If a method result message arrives the client will not be notified.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iAgent->CancelRequest();
+	}
+
+TInt CSWSWapBoundCLWSPService::GetLocalPort(Wap::TPort& aPort)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aPort (out) the port of the local host
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalPort(aPort);
+	}
+
+TInt CSWSWapBoundCLWSPService::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aLocalHost (inout) the address of the local host. A reference to a HBufC8 pointer should
+be passed in. This pointer MUST be null! A HBufC8 will be allocated to hold the address, ownership
+of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalAddress(aLocalHost);
+	}
+
+TInt CSWSWapBoundCLWSPService::GetBearer(Wap::TBearer& aBearer)
+/**
+Get the bearer on which the method result message arrived.
+Useful when EAll was specified in Connect()
+@internalComponent
+@released
+@since v8.0
+@param aBearer (out) the bearer
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetBearer(aBearer);
+	}
+
+TInt CSWSWapBoundCLWSPService::GetServerAddress(HBufC8*& aServerAddress)
+/**
+Get the remote address of the last wsp method result message
+@internalComponent
+@released
+@since v8.0
+Cannot be called when there is an outstanding MethodResult().
+@param aServerAddress the address of the remote server.
+A reference to a HBufC8 pointer should be passed in. An HBufC8 will be allocated
+to hold the address ,ownership of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, KErrNotSupported if not implemented or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetServerAddress(aServerAddress);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapBoundCLWSP.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,59 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CSWSWAPBOUNDCLWSPSERVICE_H__
+#define __CSWSWAPBOUNDCLWSPSERVICE_H__
+
+// Include definitions of ECOM interfaces for the WAP Messaging API
+#include <wapmessage.h>
+#include "ActiveSocket.h"
+#include "WapMessageApiAgent.h"
+
+class CSWSWapBoundCLWSPService : public CWapBoundCLWSPService
+/** 
+The WAP Messaging API, SWS WAP Stack binding. Implementation of the bound Connectionless WSP API.
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CSWSWapBoundCLWSPService* NewL();
+	virtual ~CSWSWapBoundCLWSPService();
+
+public:
+
+	virtual TInt Connect(Wap::TBearer aBearer,Wap::TPort aPort, TBool aSecure);
+	virtual TInt MethodInvoke(Wap::TBearer aBearer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, const TUint8 aTransactionId);
+	virtual TInt MethodResult(TDes8& aReqHeaders, TDes8& aReqBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout);
+	virtual void CancelReq();
+	virtual TInt GetLocalPort(Wap::TPort& aPort);
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost);
+	virtual TInt GetBearer(Wap::TBearer& aBearer);
+	virtual TInt GetServerAddress(HBufC8*& aServerAddress);
+private:
+	CSWSWapBoundCLWSPService();
+	void ConstructL();
+
+
+private:
+	/**
+	the agent instance which actually handles wsp PDU.
+	*/
+	CWspMessageApiAgent* iAgent;
+
+};
+
+#endif // __CSWSWAPBOUNDCLWSPSERVICE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapBoundWDP.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,227 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapBoundWDP.h"
+#include "WapMsgUtils.h"
+
+
+CSWSWapBoundWDPService* CSWSWapBoundWDPService::NewL()
+/**
+Static new function
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CSWSWapBoundWDPService* me = new(ELeave)CSWSWapBoundWDPService();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CSWSWapBoundWDPService::CSWSWapBoundWDPService()
+	: CWapBoundDatagramService()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CSWSWapBoundWDPService::~CSWSWapBoundWDPService()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	delete iAgent;	
+	}
+
+void CSWSWapBoundWDPService::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Parent class construction
+	CWapBoundDatagramService::ConstructL();
+	iAgent=CWdpMessageApiAgent::NewL();	
+	}
+
+TInt CSWSWapBoundWDPService::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TInetAddr /*aInetAddr*/)
+/** 
+Connect to the SWS, opening an endpoint that can be used to listen for subsequent incoming datagrams.
+@internalComponent
+@released
+@since v8.0
+@param aBearer the bearer to listen on (use EAll for all bearers)
+@param aPort the port to listen on. If set to 0, a local port will be chosen for the client's first SendTo
+@param aInetAddr the ip address of the network interface that should be used in a multihomed system.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->Connect(aBearer, aPort, EFalse);
+	}
+
+TInt CSWSWapBoundWDPService::Connect(Wap::TBearer aBearer, Wap::TPort aPort)
+/**
+Connect to the SWS, opening an endpoint that can be used to listen for subsequent incoming datagrams.
+@internalComponent
+@released
+@since v8.0
+@param aBearer the bearer to listen on (use EAll for all bearers)
+@param aPort the port to listen on. If set to 0, a local port will be chosen for the client's first SendTo
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInetAddr inetAddr( KInetAddrAny, 0);
+	return (Connect(aBearer, aPort, inetAddr));
+	}
+
+TInt CSWSWapBoundWDPService::SendTo(const TDesC8& aRemoteHost, Wap::TPort aRemotePort,
+									 const TDesC8& aBuffer, Wap::TBearer aBearer)
+/**
+Send data to a remote endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost the bearer-dependent address of the remote host to which the data will be sent
+@param aRemotePort the port on the remote host to which the data will be sent
+@param aBuffer the data buffer to be written over the connection
+@param aBearer the bearer to be used, if the bound connection was opened with 'all'
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->SendWdpMessage(aBuffer, aRemoteHost, aRemotePort, aBearer);
+	}
+
+TInt CSWSWapBoundWDPService::AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus)
+/**
+Wait for a datagram to be received, and discover how large a buffer is required to retrieve it.
+This asyncronous method waits for a datagram to be received and will then complete allowing the client to discover how large a buffer
+is needed to retrieve the entire datagram that has been received.
+A subsiquent call to RecvFrom with a buffer of sufficent size will then allow the client to retrieve the datagram fully.
+@internalComponent
+@released
+@since v8.0
+@param aDataSizePckg the size of data subsequently received, in bytes
+@param aReqStatus used to signal when a data size is known
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->AwaitRecvDataSize(aDataSizePckg, aReqStatus);
+	}
+
+TInt CSWSWapBoundWDPService::RecvFrom(TDes8& aRemoteHost, Wap::TPort& aRemotePort, TDes8& aBuffer,
+									  TBool& aTruncated, TRequestStatus& aReqStatus, TUint32 aTimeout)
+/**
+receive data on a bound port.
+An asynchronous notification is sent to the client when data arrives.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost the bearer-dependent address of the remote host from which the data was received
+@param aRemotePort the port on the remote host from which the data was received
+@param aBuffer a client-allocated data buffer to be filled with data received. Data that overflows the buffer is discarded.
+@param aTruncated indicates whether the received datagram was truncated to fit in the client's supplied buffer
+@param aReqStatus used to notify the client that a datagram was received
+@param aTimeout an optional millisecond time-out which allows a timed read to be made.  If no data is received 
+within the timeout period the request completes with KErrTimedOut. If a value of 0 is supplied the timeout is infinite.
+@retval TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->ReceiveWdpMessage(aRemoteHost, aRemotePort, aBuffer, aTruncated, aReqStatus, aTimeout);
+	}
+
+void CSWSWapBoundWDPService::CancelRecv()
+/**
+Cancel a previously requested asynchronous RecvFrom or AwaitRecvDataSize notification. 
+If a datagram arrives at the local host, it will be discarded.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iAgent->CancelRequest();
+	}
+
+TInt CSWSWapBoundWDPService::GetLocalPort(Wap::TPort& aPort)
+/** 
+Get the local port of this endpoint.Useful if one was chosen automatically.
+@internalComponent
+@released
+@since v8.0
+@param aPort the port number
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalPort(aPort);
+	}
+
+TInt CSWSWapBoundWDPService::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aLocalHost the address of the local host. A reference to a HBufC8 pointer should 
+be passed in. This pointer MUST be null! A HBufC8 will be allocated to hold the address, ownership 
+of this buffer will be passed over to the client.
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalAddress(aLocalHost);
+	}
+
+TInt CSWSWapBoundWDPService::GetBearer(Wap::TBearer& aBearer)
+/**
+Get the bearer on which a received datagram arrived.
+Useful when EAll was specified in Connect()
+@internalComponent
+@released
+@since v8.0
+@param aBearer the bearer
+@returns TInt KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetBearer(aBearer);
+	}
+
+TInt CSWSWapBoundWDPService::GetDatagramSizes(TUint16& aMaxSize, TUint16& aNominalSize)
+/**
+Query the WDP bearer for its maximum datagram size and its nominal datagram size.
+@internalComponent
+@released
+@since v8.0
+@param aMaxSize the maximum datagram size
+@param aNominalSize the nominal datagram size (nominal = size within which a datagram won't
+have to be split into smaller individual messages and then re-assembled at the other end).
+This will fail for a stream connection
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	// Can only retrieve this info from the capcodec when its a connection, not datagram!
+	aMaxSize = KWapStackMaxDatagramSize;
+	aNominalSize = KWapStackNorminalDatagramSize;
+	return KErrNone;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapBoundWDP.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,59 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CSWSWAPBOUNDWDPSERVICE_H__
+#define __CSWSWAPBOUNDWDPSERVICE_H__
+
+// Include definitions of ECOM interfaces for the WAP Messaging API
+#include <wapmessage.h>
+#include "WapMessageApiAgent.h"
+
+class CSWSWapBoundWDPService : public CWapBoundDatagramService
+/** 
+The WAP Messaging API, SWS WAP Stack binding. Implementation of the bound WDP API.
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CSWSWapBoundWDPService* NewL();	
+	virtual ~CSWSWapBoundWDPService();
+
+public:
+	virtual TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TInetAddr aInetAddr);
+	virtual TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort);
+	virtual TInt SendTo(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, const TDesC8& aBuffer,Wap::TBearer aBearer);
+	virtual TInt AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus);
+	virtual TInt RecvFrom(TDes8& aRemoteHost, Wap::TPort& aRemotePort, TDes8& aBuffer, TBool& aTruncated, TRequestStatus& aReqStatus, TUint32 aTimeout);
+	virtual void CancelRecv();
+	virtual TInt GetLocalPort(Wap::TPort& aPort);
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost);
+	virtual TInt GetBearer(Wap::TBearer& aBearer);
+	virtual TInt GetDatagramSizes(TUint16& aMaxSize, TUint16& aNominalSize);
+
+private:
+	CSWSWapBoundWDPService();
+	void ConstructL();
+
+private:
+	/**
+	the agent instance which actually handles wdp PDU.
+	*/
+	CWdpMessageApiAgent* iAgent;
+};
+
+
+#endif // __CSWSWAPBOUNDWDPSERVICE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapFullySpecCLPush.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,169 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapFullySpecCLPush.h"
+#include "WapMsgUtils.h"
+#include <wapmsgerr.h>
+
+CSWSWapFullySpecCLPushService* CSWSWapFullySpecCLPushService::NewL()
+/**
+Static new function
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CSWSWapFullySpecCLPushService* me = new(ELeave)CSWSWapFullySpecCLPushService();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CSWSWapFullySpecCLPushService::~CSWSWapFullySpecCLPushService()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	delete iAgent;
+	}
+
+CSWSWapFullySpecCLPushService::CSWSWapFullySpecCLPushService()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+void CSWSWapFullySpecCLPushService::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Parent class construction
+	CWapFullySpecCLPushService::ConstructL();
+	iAgent=CWspMessageApiAgent::NewL();
+	}
+
+TInt CSWSWapFullySpecCLPushService::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure, TInetAddr /*aInetAddr*/)
+/**
+Opens a socket which is to be used only with a single, named remote host.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost the bearer-dependent address of the remote host with which the data will be exchanged
+@param aRemotePort the port on the remote host to which data will be sent
+@param aBearer the bearer to use (not EAll)
+@param aSecure security flag indicates whether WTLS will be used or not
+@param aInetAddr the address of the adapter to use
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if(aSecure) 
+		{
+		return KErrNotSupported;
+		}
+	return iAgent->Connect(aRemoteHost, aRemotePort, aBearer, aSecure);
+	}
+
+TInt CSWSWapFullySpecCLPushService::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure)
+/**
+Opens a socket which is to be used only with a single, named remote host.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost (in) the bearer-dependent address of the remote host with which the data will be exchanged
+@param aRemotePort (in) the port on the remote host to which data will be sent
+@param aBearer (in) the bearer to use (not EAll)
+@param aSecure (in) security flag indicates whether WTLS will be used or not
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInetAddr inetAddr( KInetAddrAny, 0);
+	return( Connect(aRemoteHost, aRemotePort, aBearer, aSecure, inetAddr) );
+	}
+
+TInt CSWSWapFullySpecCLPushService::AwaitPush(TDes8& aPushHeaders, TDes8& aPushBody, TPckgBuf<TUint8>& aPushIdPckg, TRequestStatus& aReqStatus)
+/**
+Request an asynchronous notification upon arrival of the next push messages on the listening connection.
+The request completes upon receipt of the message, filling the buffers with as much received data as possible.
+A return code will indicate whether further data remains.  The call must be re-issued for subsequent messages
+or to receive remaining data from a previous push message.
+@internalComponent
+@released
+@since v8.0
+@param aPushHeaders (out) (client-allocated) - when a push message arrives the header data is written here
+@param aPushBody (out) (client-allocated) - when a push message arrives the body data is written here
+@param aPushIdPckg (out) when a push message arrives an integer ID that uniquely specifies the message is written here
+@param aReqStatus (inout) used by the service provider to notify the client when a push has arrived
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInt err = iAgent->ReceiveWspMessage(aPushHeaders, aPushBody, aPushIdPckg, iWspStatus, aReqStatus, 0);
+	if(err == Wap::EMoreData)
+	{
+		return KErrNone;
+	}
+	return err;
+	}
+
+void CSWSWapFullySpecCLPushService::CancelAwaitPush()
+/**
+Cancel a previously-requested push message notification.  If a push message arrives the client will not be notified.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iAgent->CancelRequest();
+	}
+
+TInt CSWSWapFullySpecCLPushService::GetLocalPort(Wap::TPort& aPort)
+/**
+Get the local port of this endpoint.Useful if one was chosen automatically.
+@internalComponent
+@released
+@since v8.0
+@param aPort (out) the port number
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalPort(aPort);
+	}
+
+TInt CSWSWapFullySpecCLPushService::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aLocalHost (inout) the address of the local host. A reference to a HBufC8 pointer should 
+be passed in. This pointer MUST be null! A HBufC8 will be allocated to hold the address, ownership 
+of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalAddress(aLocalHost);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapFullySpecCLPush.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,69 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CSWSWAPFULLYSPECCLPUSHSERVICE_H__
+#define __CSWSWAPFULLYSPECCLPUSHSERVICE_H__
+
+// Include definitions of ECOM interfaces for the WAP Messaging API
+#include <wapmessage.h>
+#include "WapMessageApiAgent.h"
+
+class CSWSWapFullySpecCLPushService : public CWapFullySpecCLPushService
+/** 
+The WAP Messaging API, SWS WAP Stack binding. Implementation of the fully-specified connectionless push API.
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CSWSWapFullySpecCLPushService* NewL();
+	virtual ~CSWSWapFullySpecCLPushService();
+
+public:
+	virtual TInt Connect(const TDesC8& aRemoteHost,
+					  Wap::TPort aRemotePort,
+					  Wap::TBearer aBearer,
+					  TBool aSecure,
+					  TInetAddr aInetAddr);
+	virtual TInt Connect(const TDesC8& aRemoteHost,
+					  Wap::TPort aRemotePort,
+					  Wap::TBearer aBearer,
+					  TBool aSecure);
+	virtual TInt AwaitPush(TDes8& aPushHeaders,
+						  TDes8& aPushBody,
+						  TPckgBuf<TUint8>& aPushIdPckg,
+						  TRequestStatus& aReqStatus);
+	virtual void CancelAwaitPush();
+	virtual TInt GetLocalPort(Wap::TPort& aPort);
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost);
+
+private:
+	CSWSWapFullySpecCLPushService();
+	void ConstructL();
+
+private:
+	/**
+	the agent instance which actually handles wsp PDU.
+	*/
+	CWspMessageApiAgent* iAgent;
+	/**
+	the wsp status in received wsp PDU.
+	*/
+	TWSPStatus iWspStatus;
+};
+
+
+#endif // __CSWSWAPFULLYSPECCLPUSHSERVICE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapFullySpecCLWSP.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,166 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapFullySpecCLWSP.h"
+#include "WapMsgUtils.h"
+#include "CLWSPPduHandler.h"
+
+CSWSWapFullySpecCLWSPService* CSWSWapFullySpecCLWSPService::NewL()
+/**
+Static new function
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CSWSWapFullySpecCLWSPService* me = new(ELeave)CSWSWapFullySpecCLWSPService();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CSWSWapFullySpecCLWSPService::CSWSWapFullySpecCLWSPService()
+	: CWapFullySpecCLWSPService()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CSWSWapFullySpecCLWSPService::~CSWSWapFullySpecCLWSPService()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	delete iAgent;
+	}
+
+void CSWSWapFullySpecCLWSPService::ConstructL()
+/**
+Second phase constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Parent class construction
+	CWapFullySpecCLWSPService::ConstructL();
+	iAgent=CWspMessageApiAgent::NewL();
+	}
+
+TInt CSWSWapFullySpecCLWSPService::Connect(const TDesC8& aRemoteHost, Wap::TPort aPort, Wap::TBearer aBearer, TBool aSecure)
+/**
+Opens a end-point which is to be used only with a single, named remote host.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost the bearer-dependent address of the remote host with which the data will be exchanged
+@param aPort the port on the remote host to which data will be sent
+@param aBearer the bearer to use (not EAll)
+@param aSecure security flag indicates whether WTLS will be used or not
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if(aSecure) 
+		{
+		return KErrNotSupported;
+		}
+	return iAgent->Connect(aRemoteHost, aPort, aBearer, aSecure);
+	}
+
+TInt CSWSWapFullySpecCLWSPService::MethodInvoke(TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, const TUint8 aTransactionId)
+/**
+A synchronous call to send a method invoke method to the remote host.
+@internalComponent
+@released
+@since v8.0
+@param aMethod (in) the method that will be invoked on server
+@param aURI (in) the uri to build wsp message
+@param aReqHeaders (in) the wsp header to be used to build method invoke message
+@param aReqBody (in) the wsp body to be used to build method invoke message
+@param aTransactionId (in) the transaction Id of the method invoke message
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->SendWspMessage(TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId);
+	}
+
+TInt CSWSWapFullySpecCLWSPService::MethodResult(TDes8& aReqHeaders, TDes8& aReqBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout)
+/**
+Request an asynchronous notification upon arrival of the method result messages on the listening connection.
+The request completes upon receipt of the message, filling the buffers with as much received data as possible.
+A return code will indicate whether further data remains.  The call must be re-issued for subsequent messages
+or to receive remaining data from a previous method result message.
+@internalComponent
+@released
+@since v8.0
+@param aReqHeaders (out) (client-allocated) - when a method result message arrives the header data is written here
+@param aReqBody (out) (client-allocated) - when a method result message arrives the body data is written here
+@param aTransactionIdPckg (out) when a method result message arrives an integer ID that uniquely specifies the message is written here
+@param aWspStatus (out) when a method result message arrives, the wsp status is written here.
+@param aReqStatus (inout) used by the service provider to notify the client when a method result has arrived
+@param aTimeout (in) an optional millisecond time-out which allows a timed read to be made.  If no data is received 
+within the timeout period the request completes with KErrTimedOut. If a value of 0 is supplied the timeout is infinite.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->ReceiveWspMessage(aReqHeaders, aReqBody, aTransactionIdPckg, aWspStatus, aReqStatus, aTimeout);
+	}
+
+void CSWSWapFullySpecCLWSPService::CancelReq()
+/**
+Cancel a previously-requested method result notification.  If a method result message arrives the client will not be notified.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iAgent->CancelRequest();
+	}
+
+TInt CSWSWapFullySpecCLWSPService::GetLocalPort(Wap::TPort& aPort)
+/**
+Get the local port of this endpoint.Useful if one was chosen automatically.
+@internalComponent
+@released
+@since v8.0
+@param aPort (out) the port number
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalPort(aPort);
+	}
+
+TInt CSWSWapFullySpecCLWSPService::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aLocalHost (inout) the address of the local host. A reference to a HBufC8 pointer should 
+be passed in. This pointer MUST be null! A HBufC8 will be allocated to hold the address, ownership 
+of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalAddress(aLocalHost);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapFullySpecCLWSP.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,51 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CSWSWAPFULLYSPECCLWSPSERVICE_H__
+#define __CSWSWAPFULLYSPECCLWSPSERVICE_H__
+
+// Include definitions of ECOM interfaces for the WAP Messaging API
+#include <wapmessage.h>
+#include "WapMessageApiAgent.h"
+
+class CSWSWapFullySpecCLWSPService : public CWapFullySpecCLWSPService
+/** 
+The WAP Messaging API, SWS WAP Stack binding. Implementation of Fully-Specified Connectionless WSP API
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CSWSWapFullySpecCLWSPService* NewL();
+	virtual ~CSWSWapFullySpecCLWSPService();
+public:
+	virtual TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure);
+	virtual TInt MethodInvoke(TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, TUint8 aTransactionId);
+	virtual TInt MethodResult(TDes8& aReqHeaders, TDes8& aReqBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout);
+	virtual void CancelReq();
+	virtual TInt GetLocalPort(Wap::TPort& aPort);
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost);
+protected:
+	CSWSWapFullySpecCLWSPService();
+	void ConstructL();
+private:
+	/**
+	the agent instance which actually handles wsp PDU.
+	*/
+	CWspMessageApiAgent* iAgent;
+};
+
+#endif //__CSWSWAPFULLYSPECCLWSPSERVICE_H__ 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapFullySpecWDP.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,206 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapFullySpecWDP.h"
+#include "WapMsgUtils.h"
+
+CSWSWapFullySpecWDPService* CSWSWapFullySpecWDPService::NewL()
+/**
+Static new function
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	CSWSWapFullySpecWDPService* me = new(ELeave)CSWSWapFullySpecWDPService();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CSWSWapFullySpecWDPService::CSWSWapFullySpecWDPService()
+	: CWapFullySpecDatagramService()
+/**
+Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	}
+
+CSWSWapFullySpecWDPService::~CSWSWapFullySpecWDPService()
+/**
+Destructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	delete iAgent;
+	}
+
+void CSWSWapFullySpecWDPService::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Parent class construction
+	CWapFullySpecDatagramService::ConstructL();
+	iAgent=CWdpMessageApiAgent::NewL();
+	}
+
+TInt CSWSWapFullySpecWDPService::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TInetAddr /*aInetAddr*/)
+/**
+Connect to the SWS, opening an endpoint which is to be used only with a single, named remote host.All CWapFullySpecDatagramService implementaions must automatically close this endpoint upon destruction.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost (in) the bearer-dependent address of the remote host with which the data will be exchanged
+@param aRemotePort (in) the port on the remote host to which data will be sent
+@param aBearer (in) the bearer to use (not EAll)
+@param aInetAddr (in) the ip address of the network interface that should be used in a multihomed system.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->Connect(aRemoteHost, aRemotePort, aBearer, EFalse);
+	}
+
+TInt CSWSWapFullySpecWDPService::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer)
+/**
+Connect to the wapstack, opening an endpoint which is to be used only with a single, named remote host.
+@internalComponent
+@released
+@since v8.0
+@param aRemoteHost (in) the bearer-dependent address of the remote host with which the data will be exchange
+@param aRemotePort (in) the port on the remote host to which data will be sent
+@param aBearer (in) the bearer to use (not EAll)
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInetAddr inetAddr( KInetAddrAny, 0);
+	return(Connect(aRemoteHost, aRemotePort, aBearer, inetAddr));
+	}
+
+TInt CSWSWapFullySpecWDPService::Send(const TDesC8& aBuffer)
+/**
+Send data on a fully-specified connection.
+@internalComponent
+@released
+@since v8.0
+@param aBuffer (in) the data buffer to be written over the connection
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->SendWdpMessage(aBuffer);
+	}
+
+TInt CSWSWapFullySpecWDPService::AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus)
+/**
+receive data on a bound port.
+@internalComponent
+@released
+@since v8.0
+An asynchronous notification is sent to the client when data arrives.
+@param aDataSizePckg size of data received
+@param aReqStatus (inout) used to notify the client that a datagram was received
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->AwaitRecvDataSize(aDataSizePckg, aReqStatus);
+	}
+
+TInt CSWSWapFullySpecWDPService::Recv(TDes8& aBuffer, TBool& aTruncated, TRequestStatus& aReqStatus, TUint32 aTimeout)
+/**
+receive data on a bound port.
+An asynchronous notification is sent to the client when data arrives.
+@internalComponent
+@released
+@since v8.0
+@param aBuffer (out) a client-allocated data buffer to be filled with data received. Data that overflows the buffer is discarded.
+@param aTruncated (out) indicates whether the received datagram was truncated to fit in the client's supplied buffer
+@param aReqStatus (inout) used to notify the client that a datagram was received
+@param aTimeout (in) an optional millisecond time-out which allows a timed read to be made.  If no data is received
+within the timeout period the request completes with KErrTimedOut. If a value of 0 is supplied the timeout is infinite.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->ReceiveWdpMessage(iHostName, iPort, aBuffer, aTruncated, aReqStatus, aTimeout);
+	}
+
+void CSWSWapFullySpecWDPService::CancelRecv()
+/**
+Cancel a previously requested asynchronous Recv or AwaitRecvDataSize notification.
+If a datagram arrives at the local host, it will be discarded.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	iAgent->CancelRequest();
+	}
+
+TInt CSWSWapFullySpecWDPService::GetLocalPort(Wap::TPort& aPort)
+/**
+Get the local port of this endpoint.Useful if one was chosen automatically.
+@internalComponent
+@released
+@since v8.0
+@param aPort (out) the port number
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+
+	{
+	return iAgent->GetLocalPort(aPort);
+	}
+
+TInt CSWSWapFullySpecWDPService::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Get the local address of this endpoint.
+@internalComponent
+@released
+@since v8.0
+@param aLocalHost (inout) the address of the local host. A reference to a HBufC8 pointer should
+be passed in. This pointer MUST be null! A HBufC8 will be allocated to hold the address, ownership
+of this buffer will be passed over to the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	return iAgent->GetLocalAddress(aLocalHost);
+	}
+
+TInt CSWSWapFullySpecWDPService::GetDatagramSizes(TUint16& aMaxSize, TUint16& aNominalSize)
+/**
+Query the WDP bearer for its maximum datagram size and its nominal datagram size.
+@internalComponent
+@released
+@since v8.0
+@param aMaxSize (out) the maximum datagram size
+@param aNominalSize (out) the nominal datagram size (nominal = size within which a datagram won't
+have to be split into smaller individual messages and then re-assembled at the other end).
+This will fail for a stream connection
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	// Can only retrieve this info from the capcodec when its a connection, not datagram!
+	aMaxSize = KWapStackMaxDatagramSize;
+	aNominalSize = KWapStackNorminalDatagramSize;
+	return KErrNone;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapFullySpecWDP.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,73 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __CSWSWAPFULLYSPECWDPSERVICE_H__
+#define __CSWSWAPFULLYSPECWDPSERVICE_H__
+
+// Include definitions of ECOM interfaces for the WAP Messaging API
+#include <wapmessage.h>
+#include "WapMessageApiAgent.h"
+
+class CSWSWapFullySpecWDPService : public CWapFullySpecDatagramService
+/** 
+The WAP Messaging API, SWS WAP Stack binding.  Implementation of the Fully-Specified WDP API.
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CSWSWapFullySpecWDPService* NewL();
+	virtual ~CSWSWapFullySpecWDPService();
+
+public:
+	virtual TInt Connect(const TDesC8& aRemoteHost,
+						 Wap::TPort aRemotePort,
+						 Wap::TBearer aBearer,
+						 TInetAddr aInetAddr);
+	virtual TInt Connect(const TDesC8& aRemoteHost,
+						 Wap::TPort aRemotePort,
+						 Wap::TBearer aBearer);
+	virtual TInt Send(const TDesC8& aBuffer);
+	virtual TInt AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus);
+	virtual TInt Recv(TDes8& aBuffer,
+					  TBool& aTruncated,
+					  TRequestStatus& aReqStatus,
+					  TUint32 aTimeout);
+	virtual void CancelRecv();
+	virtual TInt GetLocalPort(Wap::TPort& aPort);
+	virtual TInt GetLocalAddress(HBufC8*& aLocalHost);
+	virtual TInt GetDatagramSizes(TUint16& aMaxSize, TUint16& aNominalSize);
+
+private:
+	CSWSWapFullySpecWDPService();
+	void ConstructL();
+
+private:
+	/**
+	the agent instance which actually handles wdp PDU.
+	*/
+	CWdpMessageApiAgent* iAgent;
+	/**
+	the remote host name.
+	*/
+	TBuf8<KMaxSockAddrSize> iHostName;
+	/**
+	the remote port
+	*/
+	Wap::TPort iPort;
+};
+
+#endif // __CSWSWAPFULLYSPECWDPSERVICE_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapMessageApiAgent.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1184 @@
+// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapMessageApiAgent.h"
+#include "WapMsgUtils.h"
+#include "CLWSPPduHandler.h"
+#include <es_wsms.h>
+#include <wapmsgerr.h>
+#include "WapSwsLog.h"
+
+CWapAsyncCallBack::CWapAsyncCallBack( const TCallBack& aCallBack, TInt aPriority )
+:   CActive( aPriority ), iCallBack( aCallBack )
+	{
+	CActiveScheduler::Add( this );
+	}
+
+CWapAsyncCallBack::~CWapAsyncCallBack()
+	{
+	Cancel();
+	}
+
+void CWapAsyncCallBack::CallBack()
+	{
+	if  ( !IsActive() )
+		{
+		TRequestStatus* status = &iStatus;
+		User::RequestComplete( status, KErrNone );
+		SetActive();
+		}
+	}
+
+void CWapAsyncCallBack::RunL()
+	{
+	iCallBack.CallBack();
+	}
+
+void CWapAsyncCallBack::DoCancel()
+	{
+	// Empty - request already completed in CallBack()
+	}
+
+//
+//CWapMessageApiAgent class Method
+//
+CWapMessageApiAgent::CWapMessageApiAgent(TWapMessageType aMessageType):iMessageType(aMessageType)
+/**
+Constuctor.
+@internalComponent
+@released since v8.0
+@param aMessageType the message type that handled by this agent
+*/
+	{
+	}
+
+CWapMessageApiAgent::~CWapMessageApiAgent()
+/**
+Destrutor
+@internalComponent.
+@released since v8.0
+*/
+	{
+	TInt count=iBearers.Count();
+	for (TInt i=0; i<count; i++)
+		{
+		iBearers[i]->Cancel();
+		iBearers[i]->CleanUpData();
+		}
+	iBearers.ResetAndDestroy();
+	iSocketServ.Close();
+	if (iTimeoutTimer)
+		{
+		iTimeoutTimer->Cancel();		
+		delete iTimeoutTimer;
+		}
+	if (iAsyncReadCompletion)
+		{
+		delete iAsyncReadCompletion;
+		}
+	}
+
+TInt CWapMessageApiAgent::CompleteReading(TAny* aAgent)
+	{
+	CWapMessageApiAgent* agent = reinterpret_cast<CWapMessageApiAgent*>(aAgent);
+	return agent->DoCompleteReading();
+	}
+
+TInt CWapMessageApiAgent::DoCompleteReading()
+	{
+	iRequestActive=EFalse;
+	User::RequestComplete(iRequestStatus, iLastReadingError);
+	return KErrNone;
+	}
+void CWapMessageApiAgent::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent.
+@released since v8.0
+*/
+	{
+	iTimeoutTimer = CTimeOutTimer::NewL(*this);
+	TCallBack callback = TCallBack(CompleteReading, this);
+	iAsyncReadCompletion = new (ELeave) CWapAsyncCallBack(callback, CActive::EPriorityHigh);
+	User::LeaveIfError(iSocketServ.Connect());
+ 	}
+
+CActiveSocket* CWapMessageApiAgent::GetActiveSocketByBearer(Wap::TBearer aBearer)
+/**
+To Get the CActiveSocket from the Array by Bearer type. 
+@internalComponent.
+@released since v8.0
+@param aBearer (in)the bearer type of the CActiveSocket
+@returns the pointer of CAtiveSocket
+*/
+	{
+	TInt count=iBearers.Count();
+	for (TInt i=0; i<count; i++)
+		{
+		Wap::TBearer bearer=iBearers[i]->GetBearerType();
+		if (bearer==aBearer)
+			{
+			return iBearers[i];
+			}
+		else
+			{
+			if ((aBearer>=Wap::ESMS7 && aBearer<=Wap::EWAPSMS) && (bearer>=Wap::ESMS7 && bearer<=Wap::EWAPSMS))
+				{
+				return iBearers[i];
+				}
+			}
+		}
+	return NULL;
+	}
+
+CActiveSocket* CWapMessageApiAgent::GetActiveSocketByStatus(TWapMessageState aState)
+/**
+To Get the CActiveSocket from the Array by Data State. 
+@internalComponent.
+@released since v8.0
+@param aState (in)the Data state of the CActiveSocket
+@returns the pointer of CAtiveSocket
+*/
+	{
+	TInt count=iBearers.Count();
+	for (TInt i=0; i<count; i++)
+		{
+		if (iBearers[i]->GetDataState()==aState)
+			{
+			return iBearers[i];
+			}
+		}
+	return NULL;
+	}
+
+void CWapMessageApiAgent::TimerExpired()
+/**
+To handle the receive time out.
+@internalComponent.
+@released since v8.0
+*/
+	{
+	TInt count=iBearers.Count();
+	for (TInt i=0; i<count; i++)
+		{
+		iBearers[i]->Cancel();
+		iBearers[i]->CleanUpData();
+		}
+	iRequestActive=EFalse;
+	User::RequestComplete(iRequestStatus, KErrTimedOut);
+	}
+
+TInt CWapMessageApiAgent::GetLocalPort(Wap::TPort& aLocalPort)
+/**
+To Get local port of the last received packet
+@internalComponent.
+@released since v8.0
+@param aLocalPort (out)the reference of the localPort.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalPort: Trying to GetLocalPort on unconnected API."));)
+		return KErrNotReady;
+		}
+	CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer);
+	if (!sock)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalPort: Can not find Last Bearer."));)
+		return Wap::EBearerError;
+		}
+	sock->GetLocalPort(aLocalPort);
+	return KErrNone;
+	}
+
+TInt CWapMessageApiAgent::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+To Get local Address of the last received Packet
+@internalComponent.
+@released since v8.0
+@param aLocalHost (out)the reference of the localHost.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalAddress: Trying to GetLocalAddress on unconnected API."));)
+		return KErrNotReady;
+		}
+	CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer);
+	if (!sock)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalAddress: Can not find Last Bearer"));)
+		return Wap::EBearerError;
+		}
+	TSockAddr& localHost=sock->GetLocalAddress();
+	TInt err=KErrNone;
+	TRAP(err, aLocalHost=localHost.AllocL())
+	if (err)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetLocalAddress: Alloc Memory Err=%d"), err);)
+		}
+	return err;
+	}
+
+TInt CWapMessageApiAgent::GetBearer(Wap::TBearer& aBearer)
+/**
+To Get Bearer of the last received packet
+@internalComponent.
+@released since v8.0
+@param aBearer (out)the reference of the Bearer.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetBearer: Trying to GetBearer on unconnected API."));)
+		return KErrNotReady;
+		}
+	aBearer=iLastPduBearer;
+	return KErrNone;
+	}
+
+TInt CWapMessageApiAgent::GetServerAddress(HBufC8*& aServerHost)
+/**
+To Get Server Host of the last received packet
+@internalComponent.
+@released since v8.0
+@param aServerHost (out)the reference of the Server Host.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetServerAddress: Trying to GetServerAddress on unconnected API."));)
+		return KErrNotReady;
+		}
+	CActiveSocket* sock=GetActiveSocketByBearer(iLastPduBearer);
+	if (!sock)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::GetServerAddress: Can not find last error."));)
+		return Wap::EBearerError;
+		}
+	return sock->GetRemoteAddress(aServerHost);
+	}
+
+void CWapMessageApiAgent::CancelRequest()
+/**
+To Cancel the client's request
+@internalComponent.
+@released since v8.0
+*/
+	{
+	if (iIsOpen)
+		{
+		TInt count=iBearers.Count();
+		for (TInt i=0; i<count; i++)
+			{
+			iBearers[i]->Cancel();
+			iBearers[i]->CleanUpData();
+			}
+		iTimeoutTimer->Cancel();
+		if (iRequestActive)
+			{
+			iRequestActive=EFalse;
+			iAsyncReadCompletion->Cancel();
+			User::RequestComplete(iRequestStatus, KErrCancel);
+			}
+		}
+	}
+
+TInt CWapMessageApiAgent::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure)
+/**
+Opening an endpoint that can be used to listen for subsequent incoming datagrams.
+@internalComponent.
+@released since v8.0
+@param aBearer (In) the bearer to listen on
+@param aPort (In) the port to listen on.
+@param aSecure (In) security flag indicates whether WTLS will be used or not (Not Supported)
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInetAddr inetAddr( KInetAddrAny, 0);
+	return (Connect(aBearer, aPort, aSecure, inetAddr));
+	}
+
+TInt CWapMessageApiAgent::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool /*aSecure*/, TInetAddr /*aInetAddr*/)
+/**
+Opening an endpoint that can be used to listen for subsequent incoming datagrams.
+@internalComponent.
+@released since v8.0
+@param aBearer (In) the bearer to listen on
+@param aPort (In) the port to listen on.
+@param aSecure (In) security flag indicates whether WTLS will be used or not (Not Supported)
+@param aInetAddr (In) Not In Use.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInt ret=KErrNone;
+	if (!iIsOpen)
+		{
+		TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, aPort))
+		if (ret!=KErrNone)
+			{
+			LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."),ret);)
+			return ret;
+			}
+		iIsOpen=ETrue;
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Trying Connect twice to the API."));)
+		ret=KErrInUse;
+		}
+	return ret;
+	}
+
+TInt CWapMessageApiAgent::Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool /*aSecure*/, TInt aSocketServHandle, RConnection* aConnection)
+/**
+Opening an endpoint that can be used to listen for subsequent incoming datagrams.
+@internalComponent.
+@released since v8.0
+@param aBearer (In) the bearer to listen on
+@param aPort (In) the port to listen on.
+@param aSecure (In) security flag indicates whether WTLS will be used or not (Not Supported)
+@param aSocketServHandle (In) The Socket Server ID.
+@param aConnection (In) The RConnection that shared with the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (aSocketServHandle==0 || !aConnection)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Parameter Error"));)
+		return KErrArgument;
+		}
+	TInt ret=KErrNone;
+	if (!iIsOpen)
+		{
+		iSocketServ.SetHandle(aSocketServHandle);
+		TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, aPort, aConnection))
+		if (ret!=KErrNone)
+			{
+			LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."), ret);)
+			return ret;
+			}
+		iIsOpen=ETrue;
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Trying to Connect twice to the API."));)
+		ret=KErrInUse;
+		}
+	return ret;
+	}
+
+TInt CWapMessageApiAgent::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool /*aSecure*/, TInetAddr /*aInetAddr*/)
+/**
+Opens a socket which is to be used only with a single, named remote host.
+@internalComponent.
+@released since v8.0
+@param aRemoteHost (In) the name of the remote host to connect.
+@param aRemotePort (In) the port of the remote host to connect.
+@param aBearer (In) the bearer to be used
+@param aSecure (In) security flag indicates whether WTLS will be used or not (Not Supported)
+@param aInetAddr (In) Not In Use
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (aBearer==Wap::EAll)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Connect to EAll Error"));)
+		return Wap::EBearerError;
+		}
+	TInt ret=KErrNone;
+	if (!iIsOpen)
+		{
+		TSockAddr remoteAddr;
+		TRAP(ret, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort))
+		if (ret!=KErrNone)
+			{
+			LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: BuildAddress err=%d."), ret);)
+			return ret;
+			}
+		TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, remoteAddr))
+		if (ret!=KErrNone)
+			{
+			LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."), ret);)
+			return ret;
+			}
+		iIsOpen=ETrue;
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Trying to Connect twice to the API."));)
+		ret=KErrInUse;
+		}
+	return ret;
+	}
+
+TInt CWapMessageApiAgent::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure)
+/**
+Opens a socket which is to be used only with a single, named remote host.
+@internalComponent.
+@released since v8.0
+@param aRemoteHost (In) the name of the remote host to connect.
+@param aRemotePort (In) the port of the remote host to connect.
+@param aBearer (In) the bearer to be used
+@param aSecure (In) security flag indicates whether WTLS will be used or not (Not Supported)
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TInetAddr inetAddr( KInetAddrAny, 0);
+	return (Connect(aRemoteHost, aRemotePort, aBearer, aSecure, inetAddr));
+	}
+
+TInt CWapMessageApiAgent::Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool /*aSecure*/, TInt aSocketServHandle, RConnection* aConnection)
+/**
+Opens a socket which is to be used only with a single, named remote host.
+@internalComponent.
+@released since v8.0
+@param aRemoteHost (In) the name of the remote host to connect.
+@param aRemotePort (In) the port of the remote host to connect.
+@param aBearer (In) the bearer to be used
+@param aSecure (In) security flag indicates whether WTLS will be used or not (Not Supported)
+@param aSocketServHandle (In) The Socket Server ID.
+@param aConnection (In) The RConnection that shared with the client.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (aBearer==Wap::EAll)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Connect to EAll Error"));)
+		return Wap::EBearerError;
+		}
+	if (aSocketServHandle==0 || !aConnection)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Parameter Error"));)
+		return KErrArgument;
+		}
+	TInt ret=KErrNone;
+	if (!iIsOpen)
+		{
+		iSocketServ.SetHandle(aSocketServHandle);
+		TSockAddr remoteAddr;
+		TRAP(ret, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort))
+		if (ret!=KErrNone)
+			{
+			LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: BuildAddress err=%d."),ret);)
+			return ret;
+			}
+		TRAP(ret, CActiveSocket::NewL(iSocketServ, iBearers, aBearer, iMessageType, this, remoteAddr, aConnection))
+		if (ret!=KErrNone)
+			{
+			LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect: CActiveSocket Instantiate err=%d."),ret);)
+			return ret;
+			}
+		iIsOpen=ETrue;
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::Connect:Connect to a connected API."));)
+		ret=KErrInUse;
+		}
+	return ret;
+	}
+//
+//CWspMessageApiAgent class Methods
+//
+CWspMessageApiAgent* CWspMessageApiAgent::NewL()
+/**
+Static NEWL()
+@internalComponent
+@released since v8.0
+@returns CWspMessageApiAgent instance.
+*/
+	{
+	CWspMessageApiAgent* me = new(ELeave) CWspMessageApiAgent();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CWspMessageApiAgent::CWspMessageApiAgent():CWapMessageApiAgent(EWapWsp)
+/**
+Constructor
+@internalComponent
+@released since v8.0
+*/
+	{
+	}
+
+CWspMessageApiAgent::~CWspMessageApiAgent()
+/**
+Destructor
+@internalComponent
+@released since v8.0
+*/
+	{
+	}
+
+void CWspMessageApiAgent::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent
+@released since v8.0
+*/
+	{
+	CWapMessageApiAgent::ConstructL();
+	}
+
+TInt CWspMessageApiAgent::SendWspMessage(Wap::TBearer aBearer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, TUint8 aTransactionId)
+/**
+Send Wsp Message to a remote host
+@internalComponent
+@released since v8.0
+@param aBearer (in) the bearer to be used
+@param aRemoteHost (in) The remote host to be sent.
+@param aRemotePort (in) The remote port to be sent.
+@param aMethod (in) The method to be invoked.
+@param aURI (in) The destination URI.
+@param aReqHeaders (in) The Wsp header of WSP message.
+@param aReqBody (in) The Wsp body of WSP message.
+@param aTransactionId (in) The transaction ID of WSP message.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Tryig to send to unconnected API"));)
+		return KErrNotReady;
+		}
+	if (aBearer==Wap::EAll)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Send to EAll Error"));)
+		return Wap::EBearerError;
+		}
+	HBufC8* sendBuf=NULL;
+	TInt err=KErrNone;
+	TSockAddr remoteAddr;
+	TRAP(err, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort))
+	if (err!=KErrNone)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage: BuildAddress err=%d."),err);)
+		return err;
+		}
+	TRAP(err, CCLWSPPduHandler::PackWSPPduL(sendBuf, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId))
+	if (err!=KErrNone)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Pack Wsp Packet Error=%d"),err);)
+		return err;
+		}
+	CActiveSocket* sendSock=GetActiveSocketByBearer(aBearer);
+	if (sendSock)
+		{
+		if (aBearer==Wap::ESMS||aBearer==Wap::EWAPSMS)
+			{
+			TWapSmsDataCodingScheme codingScheme = EWapSms8BitDCS;
+			sendSock->Socket().SetOpt(KWapSmsOptionNameDCS,KWapSmsOptionLevel,codingScheme);
+			}
+		TRequestStatus status;
+		sendSock->Socket().SendTo(*sendBuf, remoteAddr, 0, status);
+		User::WaitForRequest(status);
+		err=status.Int();
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage: Can not find Bearer"));)
+		err=Wap::EBearerError;
+		}
+	delete sendBuf;
+	return err;
+	}
+
+TInt CWspMessageApiAgent::SendWspMessage(TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, TUint8 aTransactionId)
+/**
+Send Wsp Message to a remote host for fulluSpecified Interface
+@internalComponent
+@released since v8.0
+@param aMethod (in) The method to be invoked.
+@param aURI (in) The destination URI.
+@param aReqHeaders (in) The Wsp header of WSP message.
+@param aReqBody (in) The Wsp body of WSP message.
+@param aTransactionId (in) The transaction ID of WSP message.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Trying to send to unconnected API"));)
+		return KErrNotReady;
+		}
+	if (!iBearers[0])
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:No Bearer"));)
+		return Wap::EBearerError;
+		}
+	HBufC8* sendBuf=NULL;
+	TInt err=KErrNone;
+	TRAP(err, CCLWSPPduHandler::PackWSPPduL(sendBuf, TWSPPduType(aMethod), aURI, aReqHeaders, aReqBody, aTransactionId))
+	if (err!=KErrNone)
+		{
+		LOG(SwsLog::Printf(_L("CWapMessageApiAgent::SendWspMessage:Pack Wsp Packet Error=%d"),err);)
+		return err;
+		}
+	Wap::TBearer bearer=iBearers[0]->GetBearerType();
+	if (bearer==Wap::ESMS||bearer==Wap::EWAPSMS)
+		{
+		TWapSmsDataCodingScheme codingScheme = EWapSms8BitDCS;
+		iBearers[0]->Socket().SetOpt(KWapSmsOptionNameDCS,KWapSmsOptionLevel,codingScheme);
+		}
+	TSockAddr& remoteAddr=iBearers[0]->GetRemoteAddress();
+	TRequestStatus status;
+	iBearers[0]->Socket().SendTo(*sendBuf, remoteAddr, 0, status);
+	User::WaitForRequest(status);
+	delete sendBuf;
+	return status.Int();
+	}
+
+TInt CWspMessageApiAgent::ReceiveWspMessage(TDes8& aWspHeaders, TDes8& aWspBody, TPckgBuf<TUint8>& aTransactionIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout)
+/**
+Receive the Wsp Message to a remote host for fulluSpecified Interface
+@internalComponent
+@released since v8.0
+@param aWspHeaders (out) The Wsp header to be received
+@param aWspBody (out) The Wsp body to be received.
+@param aTransactionIdPckg (out) The received transaction ID buffer
+@param aWspStatus (out) The Wsp status for Method Result.
+@param aReqStatus (out) The request status of the WAP message API
+@param aTimeout (in) The timer out value.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TRequestStatus* reqStatus=NULL;
+	if (!iIsOpen)
+		{
+		reqStatus=&aReqStatus;
+		User::RequestComplete(reqStatus, KErrNotReady);
+		LOG(SwsLog::Printf(_L("CWspMessageApiAgent::ReceiveWspMessage: Trying to recvive from unconnected API"));)
+		return KErrNotReady;
+		}
+	if (iRequestActive)
+		{
+		reqStatus=&aReqStatus;
+		User::RequestComplete(reqStatus, KErrInUse);
+		LOG(SwsLog::Printf(_L("CWspMessageApiAgent::ReceiveWspMessage:Outstanding Receive exist"));)
+		return KErrInUse;
+		}
+	//Record the client buffer
+	iClientReqHeaders=&aWspHeaders;
+	iClientReqBody=&aWspBody;
+	iClientTransactionId=(TUint8*)aTransactionIdPckg.Ptr();
+	iClientWspStatus=&aWspStatus;
+	//if there are data are being reading
+	CActiveSocket* readingSock=GetActiveSocketByStatus(EReading);
+	if (readingSock)
+		{
+		iRequestStatus=&aReqStatus;
+		*iRequestStatus = KRequestPending;
+		iRequestActive=ETrue;
+		iLastReadingError=readingSock->GetWspData(*iClientReqHeaders, *iClientReqBody, *iClientTransactionId, *iClientWspStatus);
+		if (iLastReadingError==KErrNone)
+			{
+			iLastPduBearer=readingSock->GetBearerType();
+			}
+		iAsyncReadCompletion->CallBack();
+		return iLastReadingError;
+		}
+	//if there are pending data.
+	CActiveSocket* pendingSock=GetActiveSocketByStatus(EPendingData);
+	if (pendingSock)
+		{
+		iRequestStatus=&aReqStatus;
+		*iRequestStatus = KRequestPending;
+		iRequestActive=ETrue;
+		iLastReadingError=pendingSock->GetWspData(*iClientReqHeaders, *iClientReqBody, *iClientTransactionId, *iClientWspStatus);
+		if (iLastReadingError==KErrNone)
+			{
+			iLastPduBearer=pendingSock->GetBearerType();
+			}
+		iAsyncReadCompletion->CallBack();
+		return iLastReadingError;
+		}
+	// Issue request in Idle socket
+	CActiveSocket* sock=GetActiveSocketByStatus(EIdle);
+	if (sock)
+		{
+		iRequestStatus=&aReqStatus;
+		*iRequestStatus = KRequestPending;
+		iRequestActive=ETrue;
+		for (TInt i=0; i<iBearers.Count(); i++)
+			{
+			if (iBearers[i]->GetDataState()==EIdle)
+				{
+				iBearers[i]->AwaitRecvDataSize();
+				}
+			}
+		if (aTimeout>0)
+			{
+			iTimeoutTimer->After(aTimeout);
+			}
+		}
+	return KErrNone;
+	}
+
+void CWspMessageApiAgent::Notification(TInt aMessage, const TDesC8& aData)
+/**
+Notification of PDU size or PDU data
+@internalComponent
+@released since v8.0
+@param aMessage (in) The Event Type received by the ActiveSocket
+@param aData (in)The Event received by the ActiveSocket.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification is called"));)
+	TWapNotificationInfo& info=*(reinterpret_cast<TWapNotificationInfo*>(const_cast<TUint8*>(aData.Ptr())));
+	Wap::TBearer bearer=info.iBearer;
+	CActiveSocket* currentSocket=GetActiveSocketByBearer(bearer);
+	ASSERT(currentSocket!=NULL);
+	if (!currentSocket)
+		{
+		return;
+		}
+	TInt err=info.iError;		
+	switch (TWapNotificationEvent(aMessage))
+		{
+	case EPduLengthReceived:
+			{
+			if (err!=KErrNone)
+				{
+				LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU length err status:%d"), err);)
+				currentSocket->CleanUpData();
+				if (iRequestActive)
+					{
+					iTimeoutTimer->Cancel();
+					User::RequestComplete(iRequestStatus, err);
+					iRequestActive=EFalse;
+					}
+				}
+			else
+				{
+				LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU length is received"));)
+				if ((err=currentSocket->Receive())!=KErrNone)
+					{
+					currentSocket->CleanUpData();
+					if (iRequestActive)
+						{
+						iTimeoutTimer->Cancel();
+						User::RequestComplete(iRequestStatus, err);
+						iRequestActive=EFalse;
+						}
+					}
+				}
+			break;
+			}
+	case EPduReceived:
+			{
+			CActiveSocket* sock=GetActiveSocketByStatus(EReading);
+			if (err!=KErrNone)
+				{
+				LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU data is received with Err status:%d"), err);)
+				currentSocket->CleanUpData();
+				if (iRequestActive && !sock)
+					{
+					iTimeoutTimer->Cancel();
+					User::RequestComplete(iRequestStatus, err);
+					iRequestActive=EFalse;
+					}
+				}
+			else
+				{
+				LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification PDU data is received"));)
+				if (!sock && iRequestActive)
+					{
+					iTimeoutTimer->Cancel();
+					iRequestActive=EFalse;
+					TRAP(err, currentSocket->UnpackPduToWspDataL())
+					if (err)
+						{
+						currentSocket->CleanUpData();
+						User::RequestComplete(iRequestStatus, err);
+						return;
+						}
+					err=currentSocket->GetWspData(*iClientReqHeaders, *iClientReqBody, *iClientTransactionId, *iClientWspStatus);
+					if (err==KErrNone)
+						iLastPduBearer=bearer;
+					User::RequestComplete(iRequestStatus, err);
+					}
+				}
+			break;
+			}
+	default:
+		LOG(SwsLog::Printf(_L("CWspMessageApiAgent::Notification() Unknown Event From Bearer"));)
+		;	
+		}
+	}
+
+//
+//CWdpMessageApiAgent class Method
+//
+CWdpMessageApiAgent* CWdpMessageApiAgent::NewL()
+/**
+The static funtion to new a wdp message API agent
+@internalComponent
+@released since v8.0
+@returns the CWdpMessageApiAgent instance
+*/
+	{
+	CWdpMessageApiAgent* me = new(ELeave) CWdpMessageApiAgent();
+	CleanupStack::PushL(me);
+	me->ConstructL();
+	CleanupStack::Pop(me);
+	return me;
+	}
+
+CWdpMessageApiAgent::CWdpMessageApiAgent():CWapMessageApiAgent(EWapWdp)
+/**
+Constructor
+@internalComponent
+@released since v8.0
+*/
+	{
+	}
+
+CWdpMessageApiAgent::~CWdpMessageApiAgent()
+/**
+Destructor
+@internalComponent
+@released since v8.0
+*/
+	{
+	}
+
+void CWdpMessageApiAgent::ConstructL()
+/**
+Second Phase Constructor
+@internalComponent
+@released since v8.0
+*/
+	{
+	CWapMessageApiAgent::ConstructL();
+	}
+
+TInt CWdpMessageApiAgent::ReceiveWdpMessage(TDes8& aRemoteHost, Wap::TPort& aRemotePort, TDes8& aBuffer, TBool& aTruncated, TRequestStatus& aReqStatus, TUint32 aTimeout)
+/**
+Receive WDP message from a remote host
+@internalComponent
+@released since v8.0
+@param aRemoteHost (out) the remote host from which the WDP is sent
+@param aRemotePort (out) the remote port from which the WDP is sent
+@param aBuffer (out) the buffer to contain the received the WDP pdu
+@param aTruncated (out) the flag to show if the WDP PDU is trucated ot not
+@param aReqStatus (out) the client request status.
+@param aTimeOut (in) the time out value
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TRequestStatus* reqStatus=NULL;
+	TInt err=KErrNone;
+	if (!iIsOpen)
+		{
+		reqStatus=&aReqStatus;
+		User::RequestComplete(reqStatus, KErrNotReady);
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::ReceiveWdpMessage:Recv From unconnected API"));)
+		return KErrNotReady;
+		}
+	//if the length has been read
+	CActiveSocket* sock=GetActiveSocketByStatus(EGotLength);
+	CActiveSocket* sock1=GetActiveSocketByStatus(EReading);
+	if (iRequestActive || (!sock && !sock1))
+		{
+		reqStatus=&aReqStatus;
+		User::RequestComplete(reqStatus, KErrInUse);
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::ReceiveWdpMessage:in wrong state"));)
+		return KErrInUse;
+		}
+	if (sock1)
+		{
+		Wap::TBearer bearer=sock1->GetBearerType();
+		TSockAddr& remoteAddr=sock1->GetRemoteAddress();
+		TRAP(err, CSWSWapMsgUtils::AnalyseAddrL(remoteAddr, bearer, *iClientRemoteHost, *iClientRemotePort))
+		if (err)
+			{
+			reqStatus=&aReqStatus;
+			User::RequestComplete(reqStatus, err);
+			return err;
+			}
+		iRequestStatus=&aReqStatus;
+		*iRequestStatus = KRequestPending;
+		iRequestActive=ETrue;
+		iLastReadingError=sock1->GetPduData(*iClientPduBuffer, *iClientTruncated);
+		if (!iLastReadingError)
+			{
+			iLastPduBearer=bearer;
+			}
+		iAsyncReadCompletion->CallBack();
+		return iLastReadingError;
+		}
+	if (sock)
+		{
+		if ((err=sock->Receive())==KErrNone)
+			{
+			iClientPduBuffer=&aBuffer;
+			iClientRemoteHost=&aRemoteHost;
+			iClientRemotePort=&aRemotePort;
+			iClientTruncated=&aTruncated;
+			iRequestStatus=&aReqStatus;
+			*iRequestStatus = KRequestPending;
+			iRequestActive=ETrue;		
+			if (aTimeout)
+				{
+				iTimeoutTimer->After(aTimeout);
+				}
+			}
+		else
+			{
+			reqStatus=&aReqStatus;
+			User::RequestComplete(reqStatus, err);
+			LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::ReceiveWdpMessage:err=%d"), err);)
+			return err;
+			}
+		}
+	return KErrNone;
+	}
+
+TInt CWdpMessageApiAgent::AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus)
+/**
+Receive WDP message PDU length from a remote host
+@internalComponent
+@released since v8.0
+@param aDataSizePckg (out) the length of the PDU
+@param aReqStatus (out) the client request status.
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TRequestStatus* reqStatus=NULL;
+	if (!iIsOpen)
+		{
+		reqStatus=&aReqStatus;
+		User::RequestComplete(reqStatus, KErrNotReady);
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::AwaitRecvDataSize:Wait For Data length From unconnected API"));)
+		return KErrNotReady;
+		}
+	//if the length has been read or there is some data pending, then error completion
+	CActiveSocket* sock=GetActiveSocketByStatus(EGotLength);
+	CActiveSocket* sock1=GetActiveSocketByStatus(ERequestingData);
+	CActiveSocket* sock2=GetActiveSocketByStatus(EReading);
+	if (iRequestActive||sock||sock1||sock2)
+		{
+		reqStatus=&aReqStatus;
+		User::RequestComplete(reqStatus, KErrInUse);
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::AwaitRecvDataSize:in wrong state"));)
+		return KErrInUse;
+		}
+	//if there is a pending length, then get it
+	sock=GetActiveSocketByStatus(EPendingLength);
+	if (sock)
+		{
+		iClientDataSize=&aDataSizePckg;
+		iRequestStatus=&aReqStatus;
+		*iRequestStatus = KRequestPending;
+		iRequestActive=ETrue;
+		TUint16 length=(TUint16)sock->GetPduSize();
+		TPckg<TUint16> des(length);
+		iClientDataSize->Copy(des);
+		iLastReadingError=KErrNone;
+		iAsyncReadCompletion->CallBack();
+		return KErrNone;
+		}
+	//if there is some idle socket, then wait for length
+	sock=GetActiveSocketByStatus(EIdle);
+	if (sock)
+		{
+		iRequestActive=ETrue;
+		iClientDataSize=&aDataSizePckg;
+		iRequestStatus=&aReqStatus;
+		*iRequestStatus = KRequestPending;
+		//Wait for length on the idle socket
+		for (TInt i=0; i<iBearers.Count(); i++)
+			{
+			if (iBearers[i]->GetDataState()==EIdle)
+				{
+				iBearers[i]->AwaitRecvDataSize();
+				}
+			}
+		}
+	return KErrNone;
+	}
+
+TInt CWdpMessageApiAgent::SendWdpMessage(const TDesC8& aBuffer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer)
+/**
+Send WDP message to a remote host
+@internalComponent
+@released since v8.0
+@param aBuffer (in) the data to be sent
+@param aRemoteHost (in) the remote host to be sent
+@param aRemotePort (in) the remote port to be sent
+@param aBearer (in) the Bearer to be used
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:Send WDP to unconnected API"));)
+		return KErrNotReady;
+		}
+	if (aBearer==Wap::EAll)
+		{
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:Wrong Bearer"));)
+		return Wap::EBearerError;
+		}
+	TSockAddr remoteAddr;
+	TInt err=KErrNone;
+	TRAP(err, CSWSWapMsgUtils::BuildAddrL(remoteAddr, aBearer, aRemoteHost, aRemotePort))
+	if (err)
+		{
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:BuildAddrL Err=%d"), err);)
+		return err;
+		}
+	CActiveSocket* sendSock=GetActiveSocketByBearer(aBearer);
+	if (sendSock)
+		{
+		if (aBearer==Wap::ESMS||aBearer==Wap::EWAPSMS)
+			{
+			TWapSmsDataCodingScheme codingScheme = EWapSms8BitDCS;
+			sendSock->Socket().SetOpt(KWapSmsOptionNameDCS,KWapSmsOptionLevel,codingScheme);
+			}
+		TRequestStatus status;
+		sendSock->Socket().SendTo(aBuffer, remoteAddr, 0, status);
+		User::WaitForRequest(status);
+		err=status.Int();
+		}
+	else
+		{
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:No Bearer"));)
+		err=Wap::EBearerError;
+		}
+	return err;
+	}
+
+TInt CWdpMessageApiAgent::SendWdpMessage(const TDesC8& aBuffer)
+/**
+Send WDP message to a remote host
+@internalComponent
+@released since v8.0
+@param aBuffer (in) the data to be sent
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	if (!iIsOpen)
+		{
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:Send WDP to unconnected API"));)
+		return KErrNotReady;
+		}
+	if (!iBearers[0])
+		{
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::SendWdpMessage:No Bearer"));)
+		return Wap::EBearerError;
+		}
+	Wap::TBearer bearer=iBearers[0]->GetBearerType();
+	if (bearer==Wap::ESMS||bearer==Wap::EWAPSMS)
+		{
+		TWapSmsDataCodingScheme codingScheme = EWapSms8BitDCS;
+		iBearers[0]->Socket().SetOpt(KWapSmsOptionNameDCS,KWapSmsOptionLevel,codingScheme);
+		}
+	TSockAddr& remoteAddr=iBearers[0]->GetRemoteAddress();
+	TRequestStatus status;
+	iBearers[0]->Socket().SendTo(aBuffer, remoteAddr, 0, status);
+	User::WaitForRequest(status);
+	return status.Int();
+	}
+
+void CWdpMessageApiAgent::Notification(TInt aMessage, const TDesC8& aData)
+/**
+Notification from the ActiveSocket
+@internalComponent
+@released since v8.0
+@param aMessage (in) the Event Type
+@param aData (in) the Event
+@returns KErrNone on successful completion, or one of the system error codes on failure.
+*/
+	{
+	TWapNotificationInfo& info=*(reinterpret_cast<TWapNotificationInfo*>(const_cast<TUint8*>(aData.Ptr())));
+	Wap::TBearer bearer=info.iBearer;
+	CActiveSocket* currentSocket=GetActiveSocketByBearer(bearer);
+	ASSERT(currentSocket!=NULL);
+	if (!currentSocket)
+		{
+		return;
+		}
+	TInt err=info.iError;		
+	switch (TWapNotificationEvent(aMessage))
+		{
+	case EPduLengthReceived:
+			{
+			CActiveSocket* sock1=GetActiveSocketByStatus(ERequestingData);
+			CActiveSocket* sock2=GetActiveSocketByStatus(EGotLength);
+			CActiveSocket* sock3=GetActiveSocketByStatus(EReading);
+			if (!sock1 && !sock2 && !sock3 && iRequestActive)
+				// Read pdu length from this socket
+				{
+				iRequestActive=EFalse;
+				if (err==KErrNone)
+					{
+					TUint16 length=(TUint16)currentSocket->GetPduSize();
+					TPckg<TUint16> des(length);
+					iClientDataSize->Copy(des);	
+					}
+				else
+					{
+					currentSocket->CleanUpData();
+					}
+				User::RequestComplete(iRequestStatus, err);
+				}
+			break;
+			}
+	case EPduReceived:
+			{
+			ASSERT(iRequestActive);
+			if (iRequestActive)
+				{
+				// Read pdu from this socket
+				iRequestActive=EFalse;
+				iTimeoutTimer->Cancel();
+				if (err==KErrNone)
+					{
+					TSockAddr& remoteAddr=currentSocket->GetRemoteAddress();
+					TRAP(err, CSWSWapMsgUtils::AnalyseAddrL(remoteAddr, bearer, *iClientRemoteHost, *iClientRemotePort))
+					if (!err)
+						{
+						err=currentSocket->GetPduData(*iClientPduBuffer, *iClientTruncated);
+						if (!err)
+							iLastPduBearer=bearer;
+						}
+					else
+						{
+						currentSocket->SetDataState(EReading);
+						}
+					}
+				else
+					{
+					currentSocket->CleanUpData();
+					}
+				User::RequestComplete(iRequestStatus, err);
+				}
+			}
+		break;
+	default:
+		LOG(SwsLog::Printf(_L("CWdpMessageApiAgent::Notification() Unknown Event From Bearer"));)
+		;
+		}
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapMessageApiAgent.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,205 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __MSGAPIAGENT_H__
+#define __MSGAPIAGENT_H__
+#include "ActiveSocket.h"
+#include "WapSwsTimeOut.h"
+
+class MProgressNotify
+/** 
+Interface from the ActiveSocket to MessageApiAgent
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	public:
+	/**
+	The interface that will be called when WDP pdu length and data are received by CActiveSocket.
+	@internalComponent
+	@param aMessage the message type received from CActiveSocket
+	@param aData the data received from CActiveSocket
+	*/
+	virtual void Notification(TInt aMessage, const TDesC8& aData) = 0;	
+	};
+
+class CWapAsyncCallBack : public CActive
+	{
+public:
+	CWapAsyncCallBack( const TCallBack& aCallBack, TInt aPriority );
+	~CWapAsyncCallBack();
+
+public: // API
+	void CallBack();
+
+private:
+	void RunL();
+	void DoCancel();
+
+private:
+	TCallBack iCallBack;
+	};
+
+class CWapMessageApiAgent : public CBase, public MTimeOutNotify, public MProgressNotify
+/** 
+The base class of CWspMessageApiAgent and CWdpMessageApiAgent, which handle Wsp and Wdp
+for SWS message APIs
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	virtual ~CWapMessageApiAgent();
+	void ConstructL();
+	CActiveSocket* GetActiveSocketByBearer(Wap::TBearer aBearer);
+	CActiveSocket* GetActiveSocketByStatus(TWapMessageState aState);
+	TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure);
+	TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure, TInetAddr aInetAddr);
+	TInt Connect(Wap::TBearer aBearer, Wap::TPort aPort, TBool aSecure, TInt aSocketServHandle, RConnection* aConnection);
+	TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure, TInetAddr aInetAddr);
+	TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure);
+	TInt Connect(const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer, TBool aSecure, TInt aSocketServHandle, RConnection* aConnection);
+	TInt GetLocalPort(Wap::TPort& aPort);
+	TInt GetLocalAddress(HBufC8*& aLocalHost);
+	TInt GetBearer(Wap::TBearer& aBearer);
+	TInt GetServerAddress(HBufC8*& aRemoteHost);
+	virtual void TimerExpired();
+	void CancelRequest();
+	static TInt CompleteReading(TAny* aAgent);
+protected:
+	CWapMessageApiAgent(TWapMessageType aMessageType);
+	/**
+	RSocketServ instance used by all the bearers.
+	*/
+	RSocketServ iSocketServ;
+	/**
+	The array to contain all the bearers
+	*/
+	RPointerArray<CActiveSocket> iBearers;
+	/**
+	The Wdp and Wsp receiving timer.
+	*/
+	CTimeOutTimer* iTimeoutTimer;
+	/**
+	Flag the show if there is outstanding request.
+	*/
+	TBool iRequestActive;
+	/**
+	The pointer to Wap message client's request status
+	*/
+	TRequestStatus* iRequestStatus;
+	/**
+	The last error code of active socket in reading state
+	*/
+	TInt iLastReadingError;
+	/**
+	The asynchronous completion of reading
+	*/
+	CWapAsyncCallBack* iAsyncReadCompletion;
+	/**
+	The bearer that receives that last PDU
+	*/
+	Wap::TBearer iLastPduBearer;
+	/**
+	Flag to show if the API has been connected or not
+	*/
+	TBool iIsOpen;
+	/**
+	The type of the Wap message handled by this API agent.
+	*/
+	TWapMessageType iMessageType;
+private:
+	TInt DoCompleteReading();
+};
+
+class CWspMessageApiAgent : public CWapMessageApiAgent
+/** 
+The class to handle Wsp PDU for SWS message APIs
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CWspMessageApiAgent* NewL();
+	CWspMessageApiAgent();
+	virtual ~CWspMessageApiAgent();
+	void ConstructL();
+	TInt SendWspMessage(Wap::TBearer aBearer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, TUint8 aTransactionId);
+	TInt SendWspMessage(TUint aMethod, const TDesC& aURI, const TDesC8& aReqHeaders, const TDesC8& aReqBody, TUint8 aTransactionId);
+	TInt ReceiveWspMessage(TDes8& aWspHeaders, TDes8& aWspBody, TPckgBuf<TUint8>& aPushIdPckg, TWSPStatus& aWspStatus, TRequestStatus& aReqStatus, TUint32 aTimeout);
+	virtual void Notification(TInt aMessage, const TDesC8& aData);
+private:
+	/**
+	The pointer to the WSP message client's requested header buffer
+	*/
+	TDes8* iClientReqHeaders;
+	/**
+	The pointer to the WSP message client's requested body buffer
+	*/
+	TDes8* iClientReqBody;
+	/**
+	The pointer to the WSP message client's requested transaction ID.
+	*/
+	TUint8*	iClientTransactionId;
+	/**
+	The pointer to the WSP message client's requested WSP status.
+	*/
+	TWSPStatus* iClientWspStatus;
+};
+
+class CWdpMessageApiAgent : public CWapMessageApiAgent
+/** 
+The class to handle Wdp PDU for SWS message APIs
+@internalComponent
+@released
+@since v8.0
+*/
+{
+public:
+	static CWdpMessageApiAgent* NewL();
+	CWdpMessageApiAgent();
+	virtual ~CWdpMessageApiAgent();
+	void ConstructL();
+	TInt ReceiveWdpMessage(TDes8& aRemoteHost, Wap::TPort& aRemotePort, TDes8& aBuffer, TBool& aTruncated, TRequestStatus& aReqStatus, TUint32 aTimeout);
+	TInt AwaitRecvDataSize(TPckg<TUint16>& aDataSizePckg, TRequestStatus& aReqStatus);
+	TInt SendWdpMessage(const TDesC8& aBuffer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort, Wap::TBearer aBearer);
+	TInt SendWdpMessage(const TDesC8& aBuffer);
+	virtual void Notification(TInt aMessage, const TDesC8& aData);
+private:
+	/**
+	The pointer to Wdp message client's requested data buffer
+	*/
+	TDes8*	iClientPduBuffer;
+	/**
+	The pointer to Wdp message client's request data size
+	*/
+	TPckg<TUint16>* iClientDataSize;
+	/**
+	The pointer to client's requested remote host buffer
+	*/
+	TDes8* iClientRemoteHost;
+	/**
+	The pointer to client's requested remote port buffer
+	*/
+	Wap::TPort* iClientRemotePort;
+	/**
+	The pointer to client's requested flag.
+	*/
+	TBool* iClientTruncated;
+};
+#endif //__MSGAPIAGENT_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapMsgUtils.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,129 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "WapMsgUtils.h"
+#include <wapmessage.h>
+#include <wapmsgerr.h>
+#include <es_wsms.h>
+#include <f32file.h>
+
+TInt CSWSWapMsgUtils::GetLocalAddress(HBufC8*& aLocalHost)
+/**
+Not supported
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+	// Panic client if the buffer isn't null
+	__ASSERT_ALWAYS(aLocalHost==NULL, User::Panic(Wap::KWapMsgPanicDescriptor, KErrArgument));
+
+	RArray<Wap::TAddressInfo> myArray;
+
+	TInt ret(0);
+	TRAPD(err, ret=CWapMessageUtils::GetLocalAddressesL(myArray))
+	if (err)
+		{
+		return err;
+		}
+	// GetLocalAddressesL can return KErrNotFound if there is no network interface up
+	if (ret)
+		{
+		return ret;
+		}
+
+	TBuf16<256>tempBuf16;
+	TBuf8<256>tempBuf8;				  
+	TInetAddr* info = &myArray[0].iAddress;
+	// Output the address to a descriptor
+	info->Output(tempBuf16);
+	// Need to convert the buffer to 8 bit;
+	tempBuf8.Copy(tempBuf16);
+	// Note: Ownership of the allocated buffer is passed to the client
+	aLocalHost = HBufC8::New( tempBuf16.Length() );
+	if (!aLocalHost)
+		{
+		return KErrNoMemory;
+		}
+	// Now copy the 8 bit version of the address
+	*aLocalHost = tempBuf8;
+
+	return KErrNone;
+	}
+			 
+void CSWSWapMsgUtils::BuildAddrL(TSockAddr& aAddr, Wap::TBearer aBearer, const TDesC8& aHost, Wap::TPort aPort)
+/**
+Build a socket address according to the given parameters.
+@internalComponent
+@released
+@since v8.0
+@param aAddr the socket address which is built from given parameters
+@param aBearer the underlie bearer type
+@param aHost the host name
+@param aHost the port number
+*/
+	{
+    if (aBearer==Wap::EIP)
+        {
+        TInetAddr addr(aPort);
+        HBufC16* addr16=HBufC16::NewL(aHost.Length());
+        TPtr16 addr16Des=addr16->Des();
+        addr16Des.Copy(aHost);
+        // coverity[check_return]
+        addr.Input(addr16Des);
+        aAddr=addr;
+        delete addr16;
+        }
+	else
+		{
+		TWapAddr addr;
+		addr.SetWapPort(TWapPortNumber(aPort));
+		addr.SetWapAddress(aHost);
+		aAddr=addr;
+		}
+	}
+void CSWSWapMsgUtils::AnalyseAddrL(TSockAddr& aAddr, Wap::TBearer aBearer, TDes8& aHost, Wap::TPort& aPort)
+/**
+Analyse a socket address, and generate host name and port
+@internalComponent
+@released
+@since v8.0
+@param aAddr the socket address to be analysed
+@param aBearer the underlie bearer type
+@param aHost the host name
+@param aHost the port number
+*/
+	{
+	aPort=static_cast<Wap::TPort>(aAddr.Port());
+	if (aBearer==Wap::EIP)
+		{
+		TInetAddr addr(aAddr);
+		// If the family is KAfInet6, the output buffer must be at least 
+		// 39 characters. 
+		// If less, the buffer is filled with '*' characters.
+		HBufC16* addr16=HBufC16::NewL(40);
+		TPtr16 addr16Des=addr16->Des();
+		addr.Output(addr16Des);
+		aHost.Copy(addr16Des);
+		delete addr16;
+		}
+	else
+		{
+		TWapAddr& wapAddr = *(reinterpret_cast<TWapAddr*>(&aAddr));
+		TPtrC8 addr=wapAddr.WapAddress();
+		aHost.Copy(addr);
+		}
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapMsgUtils.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,50 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Utilities 
+// 
+//
+
+#ifndef __CSWSWAPMSGUTILS_H__ 
+#define __CSWSWAPMSGUTILS_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+
+const TInt KWapStackMaxDatagramSize = 4000;
+const TInt KWapStackNorminalDatagramSize = 4000;
+
+
+
+class CSWSWapMsgUtils : public CBase
+/** 
+Provide a set of static function which to be used by SWS. Contains the functions to build a
+specific socket address from given parameters, analyse a specific socket address, and to
+determine the SMS bearer type, GSM.
+@internalComponent
+@released
+@since v8.0
+*/
+	{
+public:
+	// Returns the current local address, a null pointer must be passed in, buffer ownership is given to the client
+	static TInt GetLocalAddress(HBufC8*& aLocalHost);
+	static void BuildAddrL(TSockAddr& aAddr, Wap::TBearer aBearer, const TDesC8& aRemoteHost, Wap::TPort aRemotePort);
+	static void AnalyseAddrL(TSockAddr& aAddr, Wap::TBearer aBearer, TDes8& aRemoteHost, Wap::TPort& aRemotePort);
+
+	};
+
+#endif //__CSWSWAPMSGUTILS_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapSwsLog.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,42 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAPLOG.CPP
+// 
+//
+
+
+#ifdef _DEBUG
+
+#include "WapSwsLog.h"
+
+void SwsLog::Write(const TDesC& aDes)
+/*
+ * Write aText to the log
+ */
+	{
+	RFileLogger::Write(KSWSLogFolder(),KSWSLogFile(),EFileLoggingModeAppend,aDes);
+	}
+
+void SwsLog::Printf(TRefByValue<const TDesC> aFmt,...)
+/*
+ * Write a mulitple argument list to the log, trapping and ignoring any leave
+ */
+	{
+	VA_LIST list;
+	VA_START(list,aFmt);
+	RFileLogger::WriteFormat(KSWSLogFolder(),KSWSLogFile(),EFileLoggingModeAppend,aFmt,list);
+	}
+	
+#endif // _DEBUG
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapSwsLog.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,47 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __WAPLOG_H__
+#define __WAPLOG_H__
+
+#ifdef _DEBUG
+
+	#include <comms-infras/commsdebugutility.h>
+	#define LOG(MSG) MSG
+
+	#if defined (DETAILED_LOG)
+		#define LOG_DETAILED(MSG) MSG
+	#else
+		#define LOG_DETAILED(MSG)
+	#endif
+
+	_LIT(KSWSLogFolder,"sws");
+	_LIT(KSWSLogFile,"sws.txt");
+	_LIT(KEndOfLine,"\r\n");
+
+	class SwsLog
+		{
+	public:
+		static void Write(const TDesC& aDes);
+	    static void Printf(TRefByValue<const TDesC> aFmt, ...);
+		};
+#else
+
+	#define LOG(MSG)
+	#define LOG_DETAILED(MSG)
+
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapSwsTimeOut.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,46 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#ifndef __TIMEOUT_H__
+#define __TIMEOUT_H__
+
+// Class definitions to support the recive with timeout methods
+
+#include <e32base.h>
+
+// MTimeOutNotify: used in conjunction with CTimeOutTimer class
+class MTimeOutNotify
+	{
+public:
+	virtual void TimerExpired() = 0;
+	};
+
+// CTimeOutTimer: timer for comms time-outs
+class CTimeOutTimer: public CTimer
+	{
+public:
+	static CTimeOutTimer* NewL(MTimeOutNotify& aTimeOutNotify);
+	~CTimeOutTimer();
+
+protected:
+    CTimeOutTimer(MTimeOutNotify& aTimeOutNotify);
+	void ConstructL();
+    virtual void RunL();
+
+private:
+	MTimeOutNotify& iNotify;
+	};
+
+#endif // __TIMEOUT_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/WapSwsTimeout.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// Timeout.cpp
+// 
+//
+
+#include "WapSwsTimeOut.h"
+
+//
+// CTimeOutTimer: timer for comms time-outs
+//
+CTimeOutTimer::CTimeOutTimer(MTimeOutNotify& aTimeOutNotify)
+: CTimer(EPriorityStandard), iNotify(aTimeOutNotify)
+    {
+    }
+
+CTimeOutTimer::~CTimeOutTimer()
+    {
+	Cancel();
+    }
+
+CTimeOutTimer* CTimeOutTimer::NewL(MTimeOutNotify& aTimeOutNotify)
+    {
+    CTimeOutTimer *p = new (ELeave) CTimeOutTimer(aTimeOutNotify);
+    CleanupStack::PushL(p);
+	p->ConstructL();
+	CleanupStack::Pop(p);
+    return p;
+    }
+
+void CTimeOutTimer::ConstructL()
+    {
+	CTimer::ConstructL();
+	CActiveScheduler::Add(this);
+    }
+
+void CTimeOutTimer::RunL()
+    {
+	// Timer request has completed, so notify the timer's owner
+	iNotify.TimerExpired();
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/swswapmsg.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,42 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <e32std.h>
+#include <ecom/implementationproxy.h>
+#include "WapBoundWDP.h"
+#include "WapFullySpecWDP.h"
+#include "WapBoundCLPush.h"
+#include "WapFullySpecCLPush.h"
+#include "WapBoundCLWSP.h"
+#include "WapFullySpecCLWSP.h"
+
+// Exported proxy for instantiation method resolution
+// Define the interface UIDs
+const TImplementationProxy ImplementationTable[] = 
+	{
+		IMPLEMENTATION_PROXY_ENTRY(0x101FBB37,	CSWSWapBoundWDPService::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(0x101FBB38,	CSWSWapFullySpecWDPService::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(0x101FBB39,	CSWSWapBoundCLPushService::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(0x101FBB3A,	CSWSWapFullySpecCLPushService::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(0x101FBB3C,	CSWSWapBoundCLWSPService::NewL),
+		IMPLEMENTATION_PROXY_ENTRY(0x101FBB3E,	CSWSWapFullySpecCLWSPService::NewL)
+	};
+
+EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
+	{
+	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
+	return ImplementationTable;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/sws/swswapmsgsource.mmpi	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,24 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+// Contains just source of swswapmsg, not including file that defines the dll entry point
+
+SOURCE			WapBoundWDP.cpp WapFullySpecWDP.cpp
+SOURCE			WapBoundCLPush.cpp WapFullySpecCLPush.cpp
+SOURCE			WapBoundCLWSP.cpp WapFullySpecCLWSP.cpp
+SOURCE			WapMsgUtils.cpp WapSwsTimeout.cpp ActiveSocket.cpp
+SOURCE			CLWSPPduHandler.cpp WapMessageApiAgent.cpp
+SOURCE			WapSwsLog.cpp
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/bmarm/wapstacksuiteu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	NewServer__Fv @ 1 NONAME R3UNUSED ; NewServer(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/bwins/wapstacksuiteu.def	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?NewServer@@YAHXZ @ 1 NONAME ; int __cdecl NewServer(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/group/CdmaWapStackSuite.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,47 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __CDMAWAPSTACKTEST_SUITE_IBY__
+#define __CDMAWAPSTACKTEST_SUITE_IBY__
+
+#include <testexecute.iby>
+#include <wapmessage.iby>
+#include <cdmasmsstack.iby>
+#include <simtsy.iby>
+#include <telephony.iby>
+#include <esock.iby>
+
+file=ABI_DIR\DEBUG_DIR\WapStackSuite.exe		System\libs\WapStackSuite.exe
+
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\WapStackSuite.ini		testdata\configs\WapStackSuite.ini
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\UDPPush.ini		testdata\configs\UDPPush.ini
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\wapstacksuite_config.ini	testdata\configs\wapstacksuite_config.ini
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\WapStackSuite.xml		testdata\configs\WapStackSuite.xml
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\CdmaWapSIMTSY.txt		testdata\configs\CdmaWapSIMTSY.txt
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\PushPDU.bin		testdata\configs\PushPDU.bin
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\Te_CdmaWapStackSuite.script testdata\scripts\Te_CdmaWapStackSuite.Script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapBoundWDP.script 	testdata\scripts\WapBoundWDP.script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapFullySpecWDP.script 	testdata\scripts\WapFullySpecWDP.script 
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapBoundPush.script 	testdata\scripts\WapBoundPush.script    
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapFullySpecPush.script 	testdata\scripts\WapFullySpecPush.script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapBoundWSP.script 	testdata\scripts\WapBoundWSP.script     
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapFullySpecWSP.script	testdata\scripts\WapFullySpecWSP.script 
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\UDPPush.script		testdata\scripts\UDPPush.script 
+
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\Te_WapStackSuite.script 	testdata\scripts\Te_WapStackSuite.Script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\WapSIMTSY.txt		testdata\configs\WapSIMTSY.txt
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/group/WapStackSuite.iby	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+#ifndef __WAPSTACKTEST_SUITE_IBY__
+#define __WAPSTACKTEST_SUITE_IBY__
+
+#include <testexecute.iby>
+
+file=ABI_DIR\DEBUG_DIR\WapStackSuite.exe		System\libs\WapStackSuite.exe
+
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\WapStackSuite.ini		testdata\configs\WapStackSuite.ini
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\UDPPush.ini		testdata\configs\UDPPush.ini
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\WapStackSuite.xml		testdata\configs\WapStackSuite.xml
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\WapSIMTSY.txt		testdata\configs\WapSIMTSY.txt
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\configs\PushPDU.bin		testdata\configs\PushPDU.bin
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\Te_WapStackSuite.script 	testdata\scripts\Te_WapStackSuite.Script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapBoundWDP.script 	testdata\scripts\WapBoundWDP.script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapFullySpecWDP.script 	testdata\scripts\WapFullySpecWDP.script 
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapBoundPush.script 	testdata\scripts\WapBoundPush.script    
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapFullySpecPush.script 	testdata\scripts\WapFullySpecPush.script
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapBoundWSP.script 	testdata\scripts\WapBoundWSP.script     
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\WapFullySpecWSP.script	testdata\scripts\WapFullySpecWSP.script 
+data=EPOCROOT##Epoc32\release\winscw\udeb\z\testdata\scripts\UDPPush.script	testdata\scripts\UDPPush.script 
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/group/WapStackSuite.mmp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,52 @@
+// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+TARGET		wapstacksuite.exe
+TARGETTYPE 	exe
+	UID             0x1000008d 0x10282B37
+
+
+SOURCEPATH  ../src
+SOURCE		WapStackSuiteServer.cpp
+SOURCE		WapStackSuiteStepBase.cpp
+SOURCE		WapBoundWDPSteps.cpp	
+SOURCE		WapBoundCLPushSteps.cpp
+SOURCE		WapBoundWSPSteps.cpp	
+SOURCE		WapFullySpecWDPSteps.cpp
+SOURCE		WapFullySpecCLPushSteps.cpp	
+SOURCE		WapFullySpecWSPSteps.cpp	
+
+USERINCLUDE   ../src
+
+OS_LAYER_SYSTEMINCLUDE_SYMBIAN
+
+LIBRARY		euser.lib
+LIBRARY		etel.lib
+LIBRARY		testexecuteutils.lib 
+LIBRARY		insock.lib
+LIBRARY		wapmsgcli.lib
+LIBRARY		testexecutelogclient.lib
+LIBRARY		c32root.lib
+LIBRARY 	esock.lib 
+LIBRARY 	efsrv.lib 
+LIBRARY 	ecom.lib 
+
+//CAPABILITY ALL -Tcb
+//  set capabilities the same as wapmsgcli.dll, which this test loads, to avoid capabilities conflict
+CAPABILITY ReadDeviceData WriteDeviceData LocalServices NetworkServices ReadUserData WriteUserData NetworkControl
+
+VENDORID 0x70000001
+
+SMPSAFE
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/Te_WapStackSuite.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,64 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack test main script file
+// 
+//
+
+PRINT GT167-WAP stack tests
+run_script z:\TestData\scripts\te_esock_test_unloadesockForced.script
+ced -i z:\testdata\configs\WapStackSuite.xml WapStackSuite.log
+run_script z:\TestData\scripts\te_esock_test_loadesock.script
+
+//delete any existing config.txt
+RUN_UTILS  MakeReadWrite c:\config.txt
+RUN_UTILS copyfile c:\config.txt c:\config.old
+RUN_UTILS  DeleteFile c:\config.txt
+
+//copy our config file
+run_utils copyfile z:\testdata\configs\WapSIMTSY.txt c:\Config.txt
+RUN_UTILS  MakeReadWrite c:\config.txt
+
+//Delete any previous wapstackconfig file
+RUN_UTILS MakeReadWrite c:\system\data\wapstackconfig.old
+RUN_UTILS copyfile c:\system\data\wapstackconfig.ini c:\system\data\wapstackconfig.old
+RUN_UTILS MakeReadWrite c:\system\data\wapstackconfig.ini
+RUN_UTILS DeleteFile c:\system\data\wapstackconfig.ini
+
+RUN_SCRIPT z:\testdata\scripts\WapBoundWDP.script
+RUN_SCRIPT z:\testdata\scripts\WapFullySpecWDP.script
+RUN_SCRIPT z:\testdata\scripts\WapBoundPush.script
+RUN_SCRIPT z:\testdata\scripts\WapFullySpecPush.script
+RUN_SCRIPT z:\testdata\scripts\WapBoundWSP.script
+RUN_SCRIPT z:\testdata\scripts\WapFullySpecWSP.script
+RUN_SCRIPT z:\testdata\scripts\UDPPush.script
+
+START_TESTCASE			WAP-WAPMESSAGE-0110
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0110
+LOAD_SUITE WapStackSuite
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_OutOfMemory
+END_TESTCASE			WAP-WAPMESSAGE-0110
+
+//Delete our config file
+run_utils delete c:\Config.txt
+//put back the old config.txt 
+RUN_UTILS copyfile c:\config.old c:\config.txt
+run_script z:\TestData\scripts\te_esock_test_unloadesockForced.script
+
+//put back any previous wapstackconfig.ini file
+RUN_UTILS MakeReadWrite c:\system\data\wapstackconfig.ini
+RUN_UTILS copyfile c:\system\data\wapstackconfig.old c:\system\data\wapstackconfig.ini
+
+PRINT GT167-WAP stack tests finished
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/UDPPush.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,42 @@
+// Copyright (c) 2001-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack BoundPush test script file
+// 
+//
+
+PRINT GT167-WAP stack BOUND-PUSH-UDP test
+
+//ced -i z:\testdata\configs\WapStackSuiteRAS.cfg
+
+LOAD_SUITE WapStackSuite
+
+START_TESTCASE			WAP-WAPMESSAGE-0101
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0101
+
+CONCURRENT
+
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_4 z:\testdata\configs\UDPPush.ini Test_1
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_9 z:\testdata\configs\UDPPush.ini Test_2
+
+CONSECUTIVE
+
+CONCURRENT
+
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_4 z:\testdata\configs\UDPPush.ini Test_3
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_9 z:\testdata\configs\UDPPush.ini Test_4
+
+END_TESTCASE			WAP-WAPMESSAGE-0101
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WSP.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,53 @@
+//
+// Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description: 
+//
+//
+PRINT Run all WAP stack Suite Tests
+
+ced -i z:\WapStackSuite\WapStackSuiteRAS.xml
+
+LOAD_SUITE WapStackSuite
+
+// --------------------------------------------------
+// TEST(4)
+// 
+START_TESTCASE			WAP-WAPMESSAGE-0801
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0801
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.1
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.2
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.3
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.4
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.5
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.6
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.7
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.8
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.9
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.10
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.11
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.12
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.13
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.14
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.14.2
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.14.1
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.15
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.16
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\WapStackSuite\WSP.ini Test_9.17
+END_TESTCASE			WAP-WAPMESSAGE-0801
+
+
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WapBoundPush.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,119 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack BoundPush test script file
+// 
+//
+
+PRINT GT167-WAP stack BOUND-PUSH test
+
+LOAD_SUITE WapStackSuite
+
+// ---------------------------------------------------------------------------------
+// TEST(1) Load implementation
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0201
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0201
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_1 z:\testdata\configs\WapStackSuite.ini COMMON
+END_TESTCASE			WAP-WAPMESSAGE-0201
+
+// ---------------------------------------------------------------------------------
+// TEST(2) Connect using different bearers (tests 1.7, 1.8, 1.1.10 must fail)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0202
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0202
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.2
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.3
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.4
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.5
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.6
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.7
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.8
+// Reconnect
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.10
+
+CONCURRENT
+// Connect to the same port (second test should fail)
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.1
+
+// Connect to the different ports at the same time
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.2
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.3
+
+CONSECUTIVE
+END_TESTCASE			WAP-WAPMESSAGE-0202
+
+// ---------------------------------------------------------------------------------
+// TEST(3) Unconnected
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0203
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0203
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_3 z:\testdata\configs\WapStackSuite.ini Test_3
+END_TESTCASE			WAP-WAPMESSAGE-0203
+
+// ---------------------------------------------------------------------------------
+// TEST(4) Normal condition/Multiple receive
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0204
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0204
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.3.1
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.3.2
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.3.3
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.3.4
+END_TESTCASE			WAP-WAPMESSAGE-0204
+
+// ---------------------------------------------------------------------------------
+// TEST(5) Cancel
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0205
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0205
+//RUN_TEST_STEP 100 WapStackSuite BoundCLPush_5 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0205
+
+// ---------------------------------------------------------------------------------
+// TEST(6) Timeout
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0206
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0206
+//RUN_TEST_STEP 100 WapStackSuite BoundCLPush_6 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0206
+
+// ---------------------------------------------------------------------------------
+// TEST(7) Wrong sequence
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0207
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0207
+RUN_TEST_STEP 100 WapStackSuite BoundCLPush_7 z:\testdata\configs\WapStackSuite.ini Test_7.1
+END_TESTCASE			WAP-WAPMESSAGE-0207
+
+// ---------------------------------------------------------------------------------
+// TEST(8) API low/high in parameter
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0208
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0208
+//RUN_TEST_STEP 100 WapStackSuite BoundCLPush_8 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0208
+
+// ---------------------------------------------------------------------------------
+// TEST(9)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0209
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0209
+//RUN_TEST_STEP 100 WapStackSuite BoundCLPush_9 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0209
+
+PRINT GT167-WAP stack BOUND-PUSH test finished
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WapBoundWDP.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,129 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack WapBoundWDP test script file
+// 
+//
+
+PRINT GT167-WAP stack BOUND-WDP tests
+
+LOAD_SUITE WapStackSuite
+
+// ---------------------------------------------------------------------------------
+// TEST(1) Load implementation
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0301
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0301
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_1 z:\testdata\configs\WapStackSuite.ini COMMON
+END_TESTCASE			WAP-WAPMESSAGE-0301
+
+// ---------------------------------------------------------------------------------
+// TEST(2) Connect using different bearers (tests 1.7, 1.10 must fail)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0302
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0302
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.2
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.3
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.4
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.5
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.6
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.7
+// Reconnect
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.10
+
+CONCURRENT
+
+// Connect to the same port (second test should fail)
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.1
+// Connect to the different ports at the same time
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.2
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.3
+
+CONSECUTIVE
+END_TESTCASE			WAP-WAPMESSAGE-0302
+
+// ---------------------------------------------------------------------------------
+// TEST(3) Unconnected
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0303
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0303
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_3 z:\testdata\configs\WapStackSuite.ini Test_3
+END_TESTCASE			WAP-WAPMESSAGE-0303
+
+// ---------------------------------------------------------------------------------
+// TEST(4) Normal condition/Multiple receive
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0304
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0304
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.1
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.2
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.3
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.4
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.5
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.5.1
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.5.2
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.5.3
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.5.4
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.6
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.7
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.8
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.1.9
+END_TESTCASE			WAP-WAPMESSAGE-0304
+
+// ---------------------------------------------------------------------------------
+// TEST(5) Cancel
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0305
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0305
+//RUN_TEST_STEP 100 WapStackSuite BoundWDP_5 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0305
+
+// ---------------------------------------------------------------------------------
+// TEST(6) Timeout
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0306
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0306
+//RUN_TEST_STEP 100 WapStackSuite BoundWDP_6 z:\testdata\configs\WapStackSuite.ini
+
+// ---------------------------------------------------------------------------------
+// TEST(7) Wrong sequence
+// ---------------------------------------------------------------------------------
+RUN_TEST_STEP 100 WapStackSuite BoundWDP_7 z:\testdata\configs\WapStackSuite.ini Test_7.1
+END_TESTCASE			WAP-WAPMESSAGE-0306
+
+
+// ---------------------------------------------------------------------------------
+// TEST(8) API low/high in parameter
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0307
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0307
+//RUN_TEST_STEP 100 WapStackSuite BoundWDP_8 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0307
+
+
+// ---------------------------------------------------------------------------------
+// TEST(9) Reserved
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0308
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0308
+//RUN_TEST_STEP 100 WapStackSuite BoundWDP_9 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0308
+
+
+PRINT GT167-WAP stack BOUND-WDP test finished
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WapBoundWSP.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,118 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack WapBoundWSP test script file
+// 
+//
+
+PRINT GT167-WAP stack BOUND-WSP test
+
+LOAD_SUITE WapStackSuite
+
+// ---------------------------------------------------------------------------------
+// TEST(1) Load implementation
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0401
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0401
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_1 z:\testdata\configs\WapStackSuite.ini COMMON
+END_TESTCASE			WAP-WAPMESSAGE-0401
+
+// ---------------------------------------------------------------------------------
+// TEST(2) Connect using different bearers (tests 1.7, 1.8, 1.10 must fail)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0402
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0402
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.2
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.3
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.4
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.5
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.6
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.7
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.8
+// Reconnect
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.10
+
+CONCURRENT
+// Connect to the same port (second test should fail)
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.1
+
+// Connect to the different ports at the same time
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.2
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1.3
+
+CONSECUTIVE
+END_TESTCASE			WAP-WAPMESSAGE-0402
+
+// ---------------------------------------------------------------------------------
+// TEST(3) Unconnected
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0403
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0403
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_3 z:\testdata\configs\WapStackSuite.ini Test_3
+END_TESTCASE			WAP-WAPMESSAGE-0403
+
+// ---------------------------------------------------------------------------------
+// TEST(4) Normal condition/Multiple receive
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0404
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0404
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_4 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0404
+
+// ---------------------------------------------------------------------------------
+// TEST(5) Cancel
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0405
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0405
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_5 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0405
+
+// ---------------------------------------------------------------------------------
+// TEST(6) Timeout
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0406
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0406
+RUN_TEST_STEP 100 WapStackSuite BoundWSP_6 z:\testdata\configs\WapStackSuite.ini Test_6.1
+END_TESTCASE			WAP-WAPMESSAGE-0406
+
+// ---------------------------------------------------------------------------------
+// TEST(7) Wrong sequence
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0407
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0407
+RUN_TEST_STEP 100 WapStackSuite  BoundWSP_7 z:\testdata\configs\WapStackSuite.ini Test_7.1
+END_TESTCASE			WAP-WAPMESSAGE-0407
+
+// ---------------------------------------------------------------------------------
+// TEST(8) API low/high in parameter
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0408
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0408
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_8 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0408
+
+// ---------------------------------------------------------------------------------
+// TEST(9)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0409
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0409
+//RUN_TEST_STEP 100 WapStackSuite BoundWSP_9 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0409
+
+PRINT GT167-WAP stack BOUN-WSP test finished
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WapFullySpecPush.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,108 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack WapFullySpecPush test script file
+// 
+//
+
+PRINT GT167-WAP stack FULLY_SPECIFIED-PUSH test
+
+LOAD_SUITE WapStackSuite
+
+// ---------------------------------------------------------------------------------
+// TEST(1) Load implementation
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0501
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0501
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_1 z:\testdata\configs\WapStackSuite.ini COMMON
+END_TESTCASE			WAP-WAPMESSAGE-0501
+
+// ---------------------------------------------------------------------------------
+// TEST(2) Connect using different bearers (tests 1.7, 1.8, 1.9, 1.10 must fail)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0502
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0502
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.2
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.3
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.4
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.5
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.7
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.8
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.9
+// Reconnect
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_2 z:\testdata\configs\WapStackSuite.ini Test_2.10
+END_TESTCASE			WAP-WAPMESSAGE-0502
+
+// ---------------------------------------------------------------------------------
+// TEST(3) Unconnected
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0503
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0503
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_3 z:\testdata\configs\WapStackSuite.ini Test_3
+END_TESTCASE			WAP-WAPMESSAGE-0503
+
+// ---------------------------------------------------------------------------------
+// TEST(4) Normal condition/Multiple receive
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0504
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0504
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.4.1
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.4.2
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.4.3
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_4 z:\testdata\configs\WapStackSuite.ini Test_4.4.4
+END_TESTCASE			WAP-WAPMESSAGE-0504
+
+// ---------------------------------------------------------------------------------
+// TEST(5) Cancel
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0505
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0505
+//RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_5 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0505
+
+// ---------------------------------------------------------------------------------
+// TEST(6) Timeout
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0506
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0506
+//RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_6 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0506
+
+// ---------------------------------------------------------------------------------
+// TEST(7) Wrong sequence
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0507
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0507
+RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_7 z:\testdata\configs\WapStackSuite.ini Test_7.1
+END_TESTCASE			WAP-WAPMESSAGE-0507
+
+// ---------------------------------------------------------------------------------
+// TEST(8) API low/high in parameter
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0508
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0508
+//RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_8 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0508
+
+// ---------------------------------------------------------------------------------
+// TEST(9)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0509
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0509
+//RUN_TEST_STEP 100 WapStackSuite FullySpecCLPush_9 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0509
+
+PRINT GT167-WAP stack FULLY_SPECIFIED-PUSH test finished
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WapFullySpecWDP.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,110 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack WapFullySpecWDP test script file
+// 
+//
+
+PRINT GT167-WAP stack FULLY_SPECIFIED-WDP test
+
+LOAD_SUITE WapStackSuite
+
+// ---------------------------------------------------------------------------------
+// TEST(1) Load implementation
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0601
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0601
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_1 z:\testdata\configs\WapStackSuite.ini COMMON
+END_TESTCASE			WAP-WAPMESSAGE-0601
+
+// ---------------------------------------------------------------------------------
+// TEST(2) Connect using different bearers (tests 1.7, 1.9, 1.10 must fail)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0602
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0602
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.2
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.3
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.4
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.5
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.7
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.9
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_2 z:\testdata\configs\WapStackSuite.ini Test_2.10
+END_TESTCASE			WAP-WAPMESSAGE-0602
+
+// ---------------------------------------------------------------------------------
+// TEST(3) Unconnected
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0603
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0603
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_3 z:\testdata\configs\WapStackSuite.ini Test_3
+END_TESTCASE			WAP-WAPMESSAGE-0603
+
+// ---------------------------------------------------------------------------------
+// TEST(4) Normal condition/Multiple receive
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0604
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0604
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.1
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.2
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.3
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.4
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.5
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.6
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.7
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_4 z:\testdata\configs\WapStackSuite.ini Test_4.2.8
+END_TESTCASE			WAP-WAPMESSAGE-0604
+
+// ---------------------------------------------------------------------------------
+// TEST(5) Cancel
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0605
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0605
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_5 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0605
+
+// ---------------------------------------------------------------------------------
+// TEST(6) Timeout
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0606
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0606
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_6 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0606
+
+// ---------------------------------------------------------------------------------
+// TEST(7) Wrong sequence
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0607
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0607
+RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_7 z:\testdata\configs\WapStackSuite.ini Test_7.1
+END_TESTCASE			WAP-WAPMESSAGE-0607
+
+// ---------------------------------------------------------------------------------
+// TEST(8) API low/high in parameter
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0608
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0608
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_8 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0608
+
+// ---------------------------------------------------------------------------------
+// TEST(9)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0609
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0609
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWDP_9 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0609
+
+PRINT GT167-WAP stack FULLY_SPECIFIED-WDP test finished
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/scripts/WapFullySpecWSP.script	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,105 @@
+// Copyright (c) 2001-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack FullySpecWSP test script file
+// 
+//
+
+PRINT GT167-WAP stack FULLY-SPECIFIED-WSP test
+
+LOAD_SUITE WapStackSuite
+
+// ---------------------------------------------------------------------------------
+// TEST(1) Load implementation
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0701
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0701
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_1 z:\testdata\configs\WapStackSuite.ini COMMON
+END_TESTCASE			WAP-WAPMESSAGE-0701
+
+// ---------------------------------------------------------------------------------
+// TEST(2) Connect using different bearers (tests 1.7, 1.8, 1.9, 1.10 must fail)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0702
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0702
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.1
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.2
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.3
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.4
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.5
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.7
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.8
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.9
+// Reconnect
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_2 z:\testdata\configs\WapStackSuite.ini Test_2.10
+END_TESTCASE			WAP-WAPMESSAGE-0702
+
+// ---------------------------------------------------------------------------------
+// TEST(3) Unconnected
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0703
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0703
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_3 z:\testdata\configs\WapStackSuite.ini Test_3
+END_TESTCASE			WAP-WAPMESSAGE-0703
+
+// ---------------------------------------------------------------------------------
+// TEST(4) Normal condition/Multiple receive
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0704
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0704
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_4 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0704
+
+// ---------------------------------------------------------------------------------
+// TEST(5) Cancel
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0705
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0705
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_5 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0705
+
+// ---------------------------------------------------------------------------------
+// TEST(6) Timeout
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0706
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0706
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_6 z:\testdata\configs\WapStackSuite.ini Test_6.1
+END_TESTCASE			WAP-WAPMESSAGE-0706
+
+// ---------------------------------------------------------------------------------
+// TEST(7) Wrong sequence
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0707
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0707
+RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_7 z:\testdata\configs\WapStackSuite.ini Test_7.1
+END_TESTCASE			WAP-WAPMESSAGE-0707
+
+// ---------------------------------------------------------------------------------
+// TEST(8) API low/high in parameter
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0708
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0708
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_8 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0708
+
+// ---------------------------------------------------------------------------------
+// TEST(9)
+// ---------------------------------------------------------------------------------
+START_TESTCASE			WAP-WAPMESSAGE-0709
+//! @SYMTestCaseID		WAP-WAPMESSAGE-0709
+//RUN_TEST_STEP 100 WapStackSuite FullySpecWSP_9 z:\testdata\configs\WapStackSuite.ini
+END_TESTCASE			WAP-WAPMESSAGE-0709
+
+PRINT GT167-WAP stack FULLY-SPECIFIED-WSP test finished
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapBoundCLPushSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,917 @@
+// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CBoundCLPushStep_xyz derived implementations
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "WapBoundCLPushSteps.h"
+#include "WapStackSuiteDefs.h"
+#include <simtsy.h>
+#include <wapmsgerr.h>
+#include <ecom/ecom.h>
+
+
+CBoundCLPushStepBase::CBoundCLPushStepBase()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundCLPushStepBase::~CBoundCLPushStepBase()
+/**
+* Destructor
+*/
+	{
+	if(iImp) 
+		{
+		UnloadInterface();
+		}
+	}
+
+// Load CWapBoundCLPushService Interface 
+CWapBoundCLPushService* CBoundCLPushStepBase::LoadInterface()
+	{
+	TInt trapValue;
+	CWapBoundCLPushService* implementation = NULL;
+	// UID {0x101FBB39} - SWS implementation
+	TUid KInterfaceUid = {0x101FBB39}; 	
+	INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), KInterfaceUid);
+	TRAP(trapValue, implementation = CWapBoundCLPushService::NewL(KInterfaceUid));
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
+		return implementation;
+		}
+	else return NULL;
+	}
+
+void CBoundCLPushStepBase::UnloadInterface()
+	{
+	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
+	delete iImp;
+	iImp = NULL;
+	REComSession::FinalClose();
+	}
+
+CBoundCLPushStep_1::~CBoundCLPushStep_1()
+/**
+* Destructor
+*/
+	{
+	}
+
+CBoundCLPushStep_1::CBoundCLPushStep_1()
+/**
+* Constructor
+*/
+	{
+	}
+
+TVerdict CBoundCLPushStep_1::doTestStepL()
+/**
+* @return - TVerdict code
+* Override of base class pure virtual
+* Our implementation only gets called if the base class doTestStepPreambleL() did
+* not leave. That being the case, the current test result value will be EPass.
+*/
+	{
+	//
+	// CWapBoundCLPushService
+	// 
+	INFO_PRINTF1(_L("CreateImplementation - CWapBoundCLPushService"));
+	INFO_PRINTF1(_L("Calling old NewL() method"));
+	
+	TInt trapValue; 
+	
+	SetTestStepResult(EFail);
+	TRAP(trapValue, iImp = CWapBoundCLPushService::NewL());
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
+		UnloadInterface();
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			INFO_PRINTF1(_L("CreateImplementation - OK"));
+			SetTestStepResult(EPass);
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+CBoundCLPushStep_2::CBoundCLPushStep_2()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundCLPushStep_2::~CBoundCLPushStep_2() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundCLPushStep_2::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BOUNDCL-PUSH: Testing Connect"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer, port;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			SetLastError(KErrNone);
+			TBool delay = EFalse;
+			
+			if(GetIntFromConfig(ConfigSection(), KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(), KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			if(GetBoolFromConfig(ConfigSection(),KWapDelayPortClosure, delay)) iDelayPortClosure = delay;
+
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundCLPushStep_2::CallStateMachine()
+	{
+	TInt err = KErrNone;
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, (Wap::TPort)iLocalPort, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iReconnect)
+					{ 
+					INFO_PRINTF1(_L("Second connect"));
+					iControl->ReStart();
+					break;
+					}
+				}
+			SetState(EFinish);
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			// it's necessary to delay port closure, let the other concurrent test step
+			// can fail opening the same port with expected error EPortAlreadyBound (-5498)
+			if (iDelayPortClosure)
+				User::After(5000000);
+
+			INFO_PRINTF1(_L("EFinish"));
+			if(GetLastError() == GetExpectedError()) 
+				SetTestStepResult(EPass);
+			else 
+				SetTestStepResult(EFail);
+			SetState(EIdle); 
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CBoundCLPushStep_3::CBoundCLPushStep_3()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundCLPushStep_3::~CBoundCLPushStep_3() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundCLPushStep_3::doTestStepL()
+/*
+* Test the BoundCLPush APIs in unconnected state.
+*/
+	{
+	INFO_PRINTF1(_L("BoundCLPush. Requests without connection"));
+	// check preamble result
+	TVerdict verdict = TestStepResult();
+	if (verdict==EPass)
+		{
+		TInt err, ret;
+		iImp = LoadInterface();
+		if (!iImp)
+			{
+			ERR_PRINTF1(_L("Unable to load BoundCLPush Interface"));
+			verdict = EFail;
+			}
+		else
+			{
+			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
+			ShowConnectionInfo();
+			TRequestStatus reqStatus;
+			iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, reqStatus);
+			TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("AwaitPush Fails not as expected")))
+				if (ret) 
+					verdict = EFail;
+				else
+					{
+					Wap::TPort port;
+					err=iImp->GetLocalPort(port);
+					TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalPort Fails not as expected")))
+						if (ret)
+							verdict = EFail;
+						else
+							{
+							HBufC8* localHost;					
+							err=iImp->GetLocalAddress(localHost);
+							TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalAddress Fails not as expected")))
+								if (ret) 
+									verdict = EFail;
+								else
+									{
+									err=iImp->GetBearer(iBearer);
+									TRAP(ret, TEST_CHECKL(err, iExError, _L("GetBearer Fails not as expected")))
+										if (ret) 
+											verdict = EFail;
+										else
+											{
+											HBufC8* host;
+											err=iImp->GetServerAddress(host);
+											TRAP(ret, TEST_CHECKL(err, iExError, _L("GetServerAddress Fails not as expected")))
+												if (ret) 
+													verdict = EFail;
+											}
+									}
+							}
+					}
+				UnloadInterface();
+			}
+		}
+	if (verdict==EPass)
+		{
+		INFO_PRINTF1(_L("BoundCLPush. Requests Fail as expected"));
+		}
+	SetTestStepResult(verdict);
+	return TestStepResult();
+	}
+
+TInt CBoundCLPushStep_3::CallStateMachine()
+	{
+	return (0);
+	}
+
+
+CBoundCLPushStep_4::CBoundCLPushStep_4()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundCLPushStep_4::~CBoundCLPushStep_4() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundCLPushStep_4::doTestStepL()
+/** 
+* Test receiving PDU data over UDP
+* The test is run concurently with CBoundCLPushStep_9 test. CBoundCLPushStep_4 waits for push message whilst 
+* CBoundCLPushStep_9 sends a push message over UDP using loopback. 
+* The test pair is used to test two cases (dependent on configuration read for CBoundCLPushStep_9):
+* - sending PDU data that is smaller than the allocated buffer on the receiving side (<=1024)
+* - sending PDU data that is larger than the allocated buffer on the receiving side and needs reallocation (>1024)
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-CLPUSH: Connect-AwaitPush"));
+	INFO_PRINTF1(_L("Receiving PDU over UDP from a concurrent test... "));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port;
+			TInt error = KErrNone;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) 
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			GetBoolFromConfig(ConfigSection(), KMiddleCancel, iMiddleCancel);
+			GetBoolFromConfig(ConfigSection(), KMultiReadCancel, iMultiReadCancel);
+			TInt headerLength, bufLength; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			
+
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(),KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+
+						
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundCLPushStep_4::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine:  state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iBearer != Wap::EIP)
+					{
+					TRAP(err, WaitForInitializeL());
+					}
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
+				INFO_PRINTF1(_L("Start AwaitingPush....."));
+				activate = 1;
+				if (!iMiddleCancel)
+					{
+					SetState(EAwaitPush);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Cancel AwaitPush"));
+					iImp->CancelAwaitPush();
+					SetState(EFinish);
+					}
+				}
+			else 
+				{
+				SetState(EFinish);
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			break;
+			
+		case EAwaitPush:
+			
+			INFO_PRINTF1(_L("EAwaitPush"));
+			if(iStatus->Int() != KErrNone && iStatus->Int()!=Wap::EMoreData) 
+				// AwaitPush failed
+				{
+				INFO_PRINTF1(_L("AwaitPush failed"));
+				SetLastError(iStatus->Int());
+				SetState(EFinish);
+				iControl->ReStart();
+				}
+			else
+				{
+				iMaxWspHeaderRecvBuffer.Append(iRecvHeadersBuf);
+				iMaxWspDataRecvBuffer.Append(iRecvBodyBuf);
+				if (iStatus->Int()==Wap::EMoreData)
+					{
+					iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
+					activate = 1;
+					if (!iMultiReadCancel)
+						{
+						SetState(EAwaitPush);
+						}
+					else
+						{
+						INFO_PRINTF1(_L("Cancel Receive in EMutipleReceive state"));
+						iImp->CancelAwaitPush();
+						SetState(EFinish);
+						}					
+					}
+				else
+					{
+					SetLastError(iStatus->Int());
+					iControl->ReStart();
+					SetState(EFinish);
+					}
+				}
+			break;
+			
+		case EFinish:
+			
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			if (verdict==EPass && !iMiddleCancel && !iMultiReadCancel)
+				{
+				iImp->CancelAwaitPush();
+				INFO_PRINTF1(_L("Headers:"));
+				DumpBuf(iMaxWspHeaderRecvBuffer);
+				INFO_PRINTF1(_L("Body"));
+				DumpBuf(iMaxWspDataRecvBuffer);
+				if (verdict==EPass)
+					{
+					HBufC8* buf;
+					iImp->GetServerAddress(buf);
+					verdict = (buf->Match(iRemoteHost)!=KErrNotFound)?EPass:EFail;
+					delete buf;
+					}
+				if (verdict==EPass)
+					{
+					Wap::TPort port;
+					iImp->GetLocalPort(port);
+					verdict = (port == iLocalPort)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					Wap::TBearer bearer;
+					iImp->GetBearer(bearer);
+					verdict = (bearer == iBearer)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					//This test can not perform.
+					HBufC8* buf;
+					iImp->GetLocalAddress(buf);
+					delete buf;
+					}
+				}
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+		return (activate);
+}
+
+CBoundCLPushStep_5::CBoundCLPushStep_5()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundCLPushStep_5::~CBoundCLPushStep_5() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundCLPushStep_5::doTestStepL()
+/** 
+* Test Cancel 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BOUNDCL-PUSH: Testing Cancel"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer, port;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			
+			ShowConnectionInfo();
+			error = iImp->Connect(iBearer, iLocalPort, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+			if( error == KErrNone)
+				{
+				TBuf8<100> header, body;
+				TPckgBuf<TUint8> pushIdPckg;
+				TRequestStatus reqStatus;
+				iImp->AwaitPush(header, body, pushIdPckg, reqStatus);
+				SetState(EAwaitPush);
+				StartScheduler();
+				iControl->ReStart();
+				if(reqStatus==KErrCancel)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundCLPushStep_5::CallStateMachine()
+	{
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EAwaitPush:
+			INFO_PRINTF1(_L("EAwaitPush"));
+			iImp->CancelAwaitPush();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			SetState(EIdle);
+			StopScheduler();
+			break;
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+
+CBoundCLPushStep_6::CBoundCLPushStep_6() 
+	{
+	}
+CBoundCLPushStep_6::~CBoundCLPushStep_6() 
+	{
+	}
+TVerdict CBoundCLPushStep_6::doTestStepL()
+	{
+	return TestStepResult();
+	}
+TInt CBoundCLPushStep_6::CallStateMachine()
+	{
+	return (0);
+	}
+
+CBoundCLPushStep_7::CBoundCLPushStep_7() 
+	{
+	}
+CBoundCLPushStep_7::~CBoundCLPushStep_7() 
+	{
+	}
+TVerdict CBoundCLPushStep_7::doTestStepL()
+	{
+	INFO_PRINTF1(_L("BOUND-CLPUSH: Connect-AwaitPush-AwaitPush"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port;
+			TInt error = KErrNone;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) 
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) 
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error)) 
+				{
+				SetExpectedError(error);
+				}
+			TInt headerLength, bufLength; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+TInt CBoundCLPushStep_7::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				TRequestStatus reqStatus;
+				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, reqStatus);
+				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
+				INFO_PRINTF1(_L("AwaitPush"));
+				activate = 1;
+				}
+			else
+				{
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			
+			INFO_PRINTF1(_L("EFinish"));
+			iImp->CancelAwaitPush();
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state [%d]"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+	return (activate);
+	}
+
+CBoundCLPushStep_8::CBoundCLPushStep_8() 
+	{
+	}
+CBoundCLPushStep_8::~CBoundCLPushStep_8() 
+	{
+	}
+TVerdict CBoundCLPushStep_8::doTestStepL()
+/**
+*	@return - TVerdict code
+*	Wrong parameter values for Bound CL Push API:
+*	- Wrong TUid on construction
+*	- Connect to wrong bearer (already implemented in test 2)
+*/
+	{
+	INFO_PRINTF1(_L("CreateImplementation with wrong Uid- CWapBoundCLPushService"));
+	if(TestStepResult() == EPass )
+		{
+		TInt error;
+		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
+			{
+			iExError2=error;
+			}
+		TInt trapValue;
+		
+		TUid invalidInterfaceUid = {0x00000000}; 
+		
+		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
+		TRAP(trapValue, iImp = CWapBoundCLPushService::NewL(invalidInterfaceUid));
+		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;
+		if (verdict==EPass)
+			{
+			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
+			}
+		SetTestStepResult(verdict);
+		}
+	return TestStepResult();
+	}
+TInt CBoundCLPushStep_8::CallStateMachine()
+	{
+	return (0);
+	}
+
+CBoundCLPushStep_9::CBoundCLPushStep_9() 
+	{
+	}
+CBoundCLPushStep_9::~CBoundCLPushStep_9() 
+	{
+	}
+TVerdict CBoundCLPushStep_9::doTestStepL()
+/** 
+* Test sending PDU data over UDP
+* Test should be run concurently with CBoundCLPushStep_4 test. CBoundCLPushStep_4 waits for push message whilst 
+* CBoundCLPushStep_9 sends a push message over UDP using loopback. 
+* The test pair is used to test two cases (dependent on configuration read for CBoundCLPushStep_9):
+* - sending PDU data that is smaller than the allocated buffer on the receiving side (<=1024)
+* - sending PDU data that is larger than the allocated buffer on the receiving side and needs reallocation (>1024)
+* @return - TVerdict code
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-CLPUSH: Sending Push Message"));
+	
+	if(TestStepResult() == EPass )
+		{
+		User::After(20000000);
+		SetTestStepResult(EFail);
+		SetLastError(KErrNone);
+		TInt error = KErrNone;
+		/**
+		Getting information from config file
+		Local port
+		Remote port
+		Local address
+		Remote address
+		Size of data to be sent
+		*/
+		GetIntFromConfig(ConfigSection(),KLocalPort, iLclPort);
+		GetIntFromConfig(ConfigSection(),KRemotePort, iRmtPort);
+		TPtrC temp;
+		if(GetStringFromConfig(ConfigSection(),KWapLocalHost, temp))
+			{
+			error = iLocalAddr.Input(temp);
+			if(error)
+				{
+				User::Leave(error);
+				}
+			}
+		if(GetStringFromConfig(ConfigSection(),KWapRemoteHost, temp ))
+			{
+			error = iRemoteAddr.Input(temp);
+			if(error)
+				{
+				User::Leave(error);
+				}
+			}
+//		error = GetStringFromConfig(ConfigSection(),KWapData, temp);
+
+		RFs fS;
+		RFile file;
+		User::LeaveIfError(fS.Connect());
+		_LIT(KPduFilename,"z:\\testdata\\configs\\pushpdu.bin");
+		_LIT(KPDUDataSize,"Data_Size");
+		
+		User::LeaveIfError(file.Open(fS, KPduFilename , EFileStream | EFileRead));
+		/* Read PDU from the file */
+
+		TInt dataSize(1024);        
+		GetIntFromConfig(ConfigSection(),KPDUDataSize, dataSize);
+		iSendBuffPtr = HBufC8::NewL(dataSize);
+		TPtr8 tmpbuf = iSendBuffPtr->Des();
+		User::LeaveIfError(file.Read(tmpbuf));
+
+		file.Close();
+		fS.Close();
+		/**
+		Settings
+		*/
+		iLocalAddr.SetPort(iLclPort);
+		iRemoteAddr.SetPort(iRmtPort);
+//		iSendBuffPtr = HBufC8::NewL(temp.Length());
+//		TPtr8 tmp = iSendBuffPtr->Des();
+//		tmp.Copy(temp);
+		INFO_PRINTF2(_L("Sending PDU of size %d over UDP to a concurrent test... "), dataSize);
+		/**
+		socket server 
+		*/
+		RSocketServ socketServer;
+	    User::LeaveIfError(socketServer.Connect());
+		CleanupClosePushL(socketServer);
+		RSocket sock;
+		User::LeaveIfError(sock.Open(socketServer, KAfInet, KSockDatagram, KProtocolInetUdp));
+		CleanupClosePushL(sock);
+		TRequestStatus status;
+		sock.SendTo(iSendBuffPtr->Des(),iRemoteAddr , 0, status);
+		User::WaitForRequest(status);
+		INFO_PRINTF2(_L("Send Push Message - status = %d"), status.Int());
+		User::LeaveIfError(status.Int());
+		sock.Close();
+		socketServer.Close();
+		CleanupStack::PopAndDestroy(&sock);
+		CleanupStack::Pop(&socketServer);
+		TVerdict verdict = (status.Int() == KErrNone)?EPass:EFail;
+		SetTestStepResult(verdict);
+		}
+	return TestStepResult();
+	}
+TInt CBoundCLPushStep_9::CallStateMachine()
+	{
+			return (0);
+	}
+
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapBoundCLPushSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,143 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapBoundCLPushSteps.h
+*/
+#if (!defined __BOUNDCLPUSH_STEP_H__)
+#define __BOUNDCLPUSH_STEP_H__
+#include <test/testexecutestepbase.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+#include "WapStackSuiteStepBase.h"
+
+_LIT(KBoundCLPushStep_1,"BoundCLPush_1");
+_LIT(KBoundCLPushStep_2,"BoundCLPush_2");
+_LIT(KBoundCLPushStep_3,"BoundCLPush_3");
+_LIT(KBoundCLPushStep_4,"BoundCLPush_4");
+_LIT(KBoundCLPushStep_5,"BoundCLPush_5");
+_LIT(KBoundCLPushStep_6,"BoundCLPush_6");
+_LIT(KBoundCLPushStep_7,"BoundCLPush_7");
+_LIT(KBoundCLPushStep_8,"BoundCLPush_8");
+_LIT(KBoundCLPushStep_9,"BoundCLPush_9");
+
+
+class CBoundCLPushStepBase : public CWapStackSuiteStepBase
+{
+public:
+	CBoundCLPushStepBase();
+	~CBoundCLPushStepBase();
+	CWapBoundCLPushService* LoadInterface();
+	void UnloadInterface();
+protected:
+	CWapBoundCLPushService* iImp;
+};
+
+class CBoundCLPushStep_1 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_1();
+	~CBoundCLPushStep_1();
+	virtual TVerdict doTestStepL();
+private:
+	};
+
+class CBoundCLPushStep_2 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_2();
+	~CBoundCLPushStep_2();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_3 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_3();
+	~CBoundCLPushStep_3();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_4 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_4();
+	~CBoundCLPushStep_4();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_5 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_5();
+	~CBoundCLPushStep_5();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_6 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_6();
+	~CBoundCLPushStep_6();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_7 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_7();
+	~CBoundCLPushStep_7();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_8 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_8();
+	~CBoundCLPushStep_8();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundCLPushStep_9 : public CBoundCLPushStepBase
+	{
+public:
+	CBoundCLPushStep_9();
+	~CBoundCLPushStep_9();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapBoundWDPSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1014 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CStepOne derived implementation
+// 
+//
+
+/**
+ @file
+ @internalComponent 
+*/
+
+#include <e32base.h>
+#include <sacls.h>
+
+#include "WapBoundWDPSteps.h"
+#include "WapStackSuiteDefs.h"
+#include <etel.h>
+#include <es_wsms.h>
+#include <simtsy.h>
+#include <wapmsgerr.h>
+#include <ecom/ecom.h>
+
+CBoundWDPStepBase::CBoundWDPStepBase()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWDPStepBase::~CBoundWDPStepBase()
+/**
+* Destructor
+*/
+	{
+	if(iImp) 
+		{
+		UnloadInterface();
+		}
+	}
+
+// Load CWapBoundDatagramService Interface 
+CWapBoundDatagramService* CBoundWDPStepBase::LoadInterface()
+	{
+	TInt trapValue;
+	CWapBoundDatagramService* implementation = NULL;
+	// UID {0x101FBB37} - SWS implementation
+	TUid KInterfaceUid = {0x101FBB37}; 	
+	INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), KInterfaceUid);
+	TRAP(trapValue, implementation = CWapBoundDatagramService::NewL(KInterfaceUid));
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
+		return implementation;
+		}
+	else return NULL;
+	}
+
+void CBoundWDPStepBase::UnloadInterface()
+	{
+	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
+	delete iImp;
+	iImp = NULL;
+	REComSession::FinalClose();	
+	}
+
+CBoundWDPStep_1::CBoundWDPStep_1()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWDPStep_1::~CBoundWDPStep_1() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWDPStep_1::doTestStepL()
+/** 
+* Load and destroy BoundDatagtamService interface implementation
+* Two different methods are used NewL() and NewL(TUid InterfaceUid)
+* @return - TVerdict code
+*/
+	{
+	// CWapBoundDatagramService
+	INFO_PRINTF1(_L("CreateImplementation - CWapBoundDatagramService"));
+	INFO_PRINTF1(_L("Calling old NewL() method"));
+	
+	SetTestStepResult(EFail);
+
+	TInt trapValue(0); 
+	TRAP(trapValue, iImp = CWapBoundDatagramService::NewL());
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
+		UnloadInterface();
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			INFO_PRINTF1(_L("CreateImplementation - OK"));
+			SetTestStepResult(EPass);
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+CBoundWDPStep_2::CBoundWDPStep_2()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWDPStep_2::~CBoundWDPStep_2()
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWDPStep_2::doTestStepL()
+/**
+* Test Connect methoths
+* @return - TVerdict code
+*
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WDP: Connect"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer, port;
+			TInt error = KErrNone;
+			TBool reconnect = EFalse;
+			TBool delay = EFalse;
+
+			SetLastError(KErrNone);
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(),KWapReconnect, reconnect)) iReconnect = reconnect;
+			if(GetBoolFromConfig(ConfigSection(),KWapDelayPortClosure, delay)) iDelayPortClosure = delay;
+			
+			TInt checkValue = 0;
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				// double check that base did set it since this is the first place we try setting it in the harness
+				RProperty::Get(KUidPSSimTsyCategory, KPSSimTsyTestNumber, checkValue);
+				__ASSERT_ALWAYS(checkValue == iSimTsyState,User::Panic(KWapStackSuitePanic, EDataCorrupt));
+				} 
+			
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			// double check
+			RProperty::Get(KUidSystemCategory, KUidPhonePwr.iUid, checkValue);
+			__ASSERT_ALWAYS(checkValue == ESAPhoneOn,User::Panic(KWapStackSuitePanic, EDataCorrupt));
+
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWDPStep_2::CallStateMachine()
+	{
+	TInt err = KErrNone;
+	INFO_PRINTF2(_L("CallStateMachine: step [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iReconnect)
+					{
+					INFO_PRINTF1(_L("Second connect"));
+					iControl->ReStart();
+					break;
+					}
+				}
+			SetState(EFinish);
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+
+		case EFinish:
+			// it's necessary to delay port closure, let the other concurrent test step
+			// can fail opening the same port with expected error EPortAlreadyBound (-5498)
+			if (iDelayPortClosure)
+				User::After(5000000);
+
+			INFO_PRINTF1(_L("EFinish"));
+			if(GetLastError() == GetExpectedError()) SetTestStepResult(EPass);
+			else SetTestStepResult(EFail);
+			SetState(EIdle);
+			// End of state machine
+			StopScheduler();
+			break;
+
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: bad state EIdle or unknown [%d]"), State());
+			SetTestStepResult(EFail);
+			// End of state machine
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+
+CBoundWDPStep_3::CBoundWDPStep_3() 
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWDPStep_3::~CBoundWDPStep_3() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWDPStep_3::doTestStepL()
+/*
+* Test the CBoundWDP APIs in unconnected state.
+*/
+	{
+	INFO_PRINTF1(_L("BoundWDP. Requests without connection"));
+	// check preamble result
+	TVerdict verdict = TestStepResult();
+	if (verdict==EPass)
+		{
+		TInt err, ret;
+		iImp = LoadInterface();
+		if (!iImp)
+			{
+			ERR_PRINTF1(_L("Unable to load BoundWDP Interface"));
+			verdict = EFail;
+			}
+		else
+			{
+			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
+			ShowConnectionInfo();
+			TBuf8<100> buf;
+			err = iImp->SendTo(iRemoteHost, iRemotePort, buf, iBearer);
+			TRAP(ret, TEST_CHECKL(err, iExError, _L("SendTo Fails not as expected")))
+			if (ret) 
+				{
+				verdict = EFail;
+				}
+			else
+				{
+				TPckg<TUint16> aDataSizePckg(0);
+				TRequestStatus reqStatus;
+				iImp->AwaitRecvDataSize(aDataSizePckg, reqStatus);
+				User::WaitForRequest(reqStatus);
+				TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("AwaitRecvDataSize Fails not as expected")))
+				if (ret) 
+					{
+					verdict = EFail;
+					}
+				else
+					{
+					TBuf8<100> buf;
+					TBool truncated;
+					TUint32 timeout=0;
+					iImp->RecvFrom(iRecvRemoteHost, iRecvRemotePort, buf, truncated, reqStatus, timeout);
+					User::WaitForRequest(reqStatus);
+					TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("RecvFrom Fails not as expected")))
+					if (ret) 
+						{
+						verdict = EFail;
+						}
+					else
+						{
+						Wap::TPort aPort;
+						err=iImp->GetLocalPort(aPort);
+						TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalPort Fails not as expected")))
+						if (ret) 
+							{
+							verdict = EFail;
+							}
+						else
+							{
+							HBufC8* localHost;
+							err=iImp->GetLocalAddress(localHost);
+							TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalAddress Fails not as expected")))
+							if (ret) 
+								{
+								verdict = EFail;
+								}
+							else
+								{
+								TUint16 maxSize, nominalSize;
+								err=iImp->GetDatagramSizes(maxSize, nominalSize);
+								if (err)
+									{
+									verdict = EFail;
+									}
+								else
+									{
+									err=iImp->GetBearer(iBearer);
+									TRAP(ret, TEST_CHECKL(err, iExError, _L("GetBearer Fails not as expected")))
+									if (ret)
+										{
+										verdict = EFail;
+										}
+									}
+								}
+							}
+						}
+					}
+				}
+			UnloadInterface();
+			}
+		}
+	if (verdict==EPass)
+		{
+		INFO_PRINTF1(_L("BoundWDP. Requests Fail as expected"));
+		}
+	SetTestStepResult(verdict);
+	return TestStepResult();
+	}
+
+TInt CBoundWDPStep_3::CallStateMachine()
+	{
+	return (0);
+	}
+
+
+CBoundWDPStep_4::CBoundWDPStep_4() 
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWDPStep_4::~CBoundWDPStep_4() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWDPStep_4::doTestStepL()
+/** 
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WDP: Connect-Send-Await-Receive"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+
+			TInt bearer, port, bufLen;
+			TInt error = KErrNone;
+			TPtrC data, remote_host;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetStringFromConfig(ConfigSection(), KWapRemoteHost, remote_host))
+				{
+				iRemoteHost.Copy(remote_host);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapRemotePort, port))
+				{
+				iRemotePort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			GetIntFromConfig(ConfigSection(), KWapExError2, iExError2);
+			GetBoolFromConfig(ConfigSection(), KAwaitLengthCancel, iAwaitLengthCancel);
+			GetBoolFromConfig(ConfigSection(), KMiddleCancel, iMiddleCancel);
+			GetBoolFromConfig(ConfigSection(), KMultiReadCancel, iMultiReadCancel);
+			GetBoolFromConfig(ConfigSection(), KAwaitLengthTwice, iAwaitLengthTwice);
+			if(GetIntFromConfig(ConfigSection(),KWapWdpBufLength, bufLen))
+				{
+				iWdpRecvBufLength=static_cast<TUint16>(bufLen);
+				iRecvBuffPtr = HBufC8::NewL(iWdpRecvBufLength);
+				}
+			error = GetStringFromConfig(ConfigSection(),KWapData, data);
+			if(!error)
+				{
+				User::Leave(error);
+				}
+			iSendBuffPtr = HBufC8::NewL(data.Length());
+			TPtr8 tmp = iSendBuffPtr->Des();
+			tmp.Copy(data);
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+					
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler(); 
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWDPStep_4::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+					if(iBearer != Wap::EIP)
+						{
+						TRAP(err, WaitForInitializeL());
+						}
+					if(iSendBuffPtr->Length())
+						{
+						INFO_PRINTF1(_L("Data to send"));
+						DumpBuf(iSendBuffPtr->Des());
+						}
+				err = iImp->SendTo(iRemoteHost, iRemotePort, iSendBuffPtr->Des(), iBearer);
+				INFO_PRINTF2(_L("SendTo completed with code = %d"), err);
+				if(err == KErrNone) 
+					{	
+					SetState(EAwaitSize);
+					}
+				else 
+					{	
+					SetState(EFinish);
+					}
+				}
+			else 
+				{
+				SetState(EFinish);
+				}
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EAwaitSize:
+			INFO_PRINTF1(_L("EAwaitSize"));
+			iImp->AwaitRecvDataSize(iLength, *iStatus);
+			activate = 1;
+			if (!iAwaitLengthCancel)
+				{
+				SetState(EReceive);
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Cancel Receive in AwaitSize state"));
+				iImp->CancelRecv();
+				SetState(EFinish);
+				}
+			break;
+			
+		case EReceive:
+			INFO_PRINTF1(_L("EReceive"));
+			if(iStatus->Int()!=KErrNone) 
+				// AwaitSize failed
+				{
+				INFO_PRINTF1(_L("AwaitSize failed"));
+				SetLastError(iStatus->Int());
+				iControl->ReStart();
+				SetState(EFinish);
+				}
+			else
+				{	
+				INFO_PRINTF2(_L("AwaitSize returned - %d"),iLength());
+				if (!iAwaitLengthTwice)
+					{
+					if (iRecvBuffPtr==NULL)
+						{
+						TInt len=iLength();
+						TRAP(err, iRecvBuffPtr = HBufC8::NewL(len))
+							if (err!=KErrNone)
+								{
+								SetLastError(err);
+								iControl->ReStart();
+								SetState(EFinish);
+								break;
+								}
+						}
+					iRecvBuf.Set(iRecvBuffPtr->Des());
+					iImp->RecvFrom(iRecvRemoteHost, iRecvRemotePort, iRecvBuf, iTruncated, *iStatus, 0);
+					activate = 1;
+					if (!iMiddleCancel)
+						{
+						SetState(EMutipleReceive);
+						}
+					else
+						{
+						INFO_PRINTF1(_L("Cancel Receive in Receive state"));
+						iImp->CancelRecv();
+						SetState(EFinish);
+						}
+					}
+				else
+					{
+					iImp->AwaitRecvDataSize(iLength, *iStatus);
+					activate = 1;
+					SetState(EFinish);
+					}
+				}
+			break;
+			
+		case EMutipleReceive:
+			INFO_PRINTF1(_L("EMultipleReceive"));
+			if (iStatus->Int()!=KErrNone && iStatus->Int()!=Wap::EMoreData)
+				{
+				INFO_PRINTF1(_L("Receive failed"));
+				SetLastError(iStatus->Int());
+				iControl->ReStart();
+				SetState(EFinish);
+				}
+			else
+				{
+				iMaxWdpRecvBuffer.Append(iRecvBuf);
+				if (iTruncated)
+					{
+					iImp->RecvFrom(iRecvRemoteHost, iRecvRemotePort, iRecvBuf, iTruncated, *iStatus, 0);
+					activate = 1;
+					if (!iMultiReadCancel)
+						{
+						SetState(EMutipleReceive);
+						}
+					else
+						{
+						INFO_PRINTF1(_L("Cancel Receive in EMutipleReceive state"));
+						iImp->CancelRecv();
+						SetState(EFinish);
+						}					
+					}
+				else
+					{
+					SetLastError(iStatus->Int());
+					iControl->ReStart();
+					SetState(EFinish);
+					}
+				}	
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			if(iMaxWdpRecvBuffer.Length())
+				{
+				INFO_PRINTF1(_L("Data received:"));
+				DumpBuf(iMaxWdpRecvBuffer);
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			if (verdict==EPass && !iMiddleCancel && !iMultiReadCancel && !iAwaitLengthCancel && !iAwaitLengthTwice)
+				{
+				iImp->CancelRecv();
+				if (verdict==EPass)
+					{
+					verdict = (iSendBuffPtr->Match(iMaxWdpRecvBuffer)!=KErrNotFound)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					verdict = (iRemoteHost.Match(iRecvRemoteHost)!=KErrNotFound)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					Wap::TPort port;
+					iImp->GetLocalPort(port);
+					verdict = (port == iLocalPort)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					Wap::TBearer bearer;
+					iImp->GetBearer(bearer);
+					verdict = (bearer == iBearer)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					//This test can not perform in SIMTSY.
+					HBufC8* buf;
+					iImp->GetLocalAddress(buf);
+					delete buf;
+					}
+				}
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF1(_L("EIdle or unknown"));
+			INFO_PRINTF2(_L("Error: bad state %d, State = %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+		return (activate);
+	}
+	
+CBoundWDPStep_5::CBoundWDPStep_5() 
+/**
+* Constructor
+*/
+	{
+	}
+	
+CBoundWDPStep_5::~CBoundWDPStep_5() 
+/**
+* Destructor
+*/
+	{
+	}
+	
+TVerdict CBoundWDPStep_5::doTestStepL()
+/** 
+*	Test Cancel
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WDP: Testing Cancel"));
+	
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{	
+			TInt bearer, port;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			SetLastError(KErrNone);
+				
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+				
+			error = iImp->Connect(iBearer, (Wap::TPort)iLocalPort, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+			if( error == KErrNone)
+				{
+				TPckg<TUint16> aDataSizePckg(0);
+				TRequestStatus reqStatus;
+				iImp->AwaitRecvDataSize(aDataSizePckg, reqStatus);
+				SetState(EAwaitSize);
+				ShowConnectionInfo();
+
+				StartScheduler();
+				iControl->ReStart();
+				if(reqStatus==KErrCancel)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			}
+		}
+	return TestStepResult();
+	}
+	
+TInt CBoundWDPStep_5::CallStateMachine()
+	{
+
+	INFO_PRINTF2(_L("CallStateMachine: step [%d]"), State());
+	switch(iState)
+		{
+		case EAwaitSize:
+			INFO_PRINTF1(_L("EAwaitSize"));
+			iImp->CancelRecv();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			SetState(EIdle);
+			StopScheduler();
+			break;
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return 0;
+	}
+	
+CBoundWDPStep_6::CBoundWDPStep_6()
+	{
+	}
+	
+CBoundWDPStep_6::~CBoundWDPStep_6() 
+	{
+	}
+
+TVerdict CBoundWDPStep_6::doTestStepL()
+//
+//Test the CBoundWDP APIs Time out.
+//
+	{
+	//Not in use
+	return TestStepResult();
+	}
+	
+TInt CBoundWDPStep_6::CallStateMachine()
+	{
+	return (0);
+	}
+	
+CBoundWDPStep_7::CBoundWDPStep_7()
+	{
+	}
+
+CBoundWDPStep_7::~CBoundWDPStep_7()
+	{
+	}
+
+TVerdict CBoundWDPStep_7::doTestStepL()
+//
+// Test wrong sequenece
+//
+	{
+	INFO_PRINTF1(_L("BOUND-WDP: Connect-Receive-Await-Await"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			TInt bearer, port, bufLen;
+			TInt error = KErrNone;
+				
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{	
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWdpBufLength, bufLen))
+				{
+				iWdpRecvBufLength=static_cast<TUint16>(bufLen);
+				}
+			iRecvBuffPtr = HBufC8::NewL(iWdpRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+	
+TInt CBoundWDPStep_7::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+		
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+//				WaitForInitializeL();
+				if(iRecvBuffPtr == NULL)
+					{
+					err=KErrNoMemory;
+					}
+				else
+					{
+					iRecvBuf.Set(iRecvBuffPtr->Des());
+					iImp->RecvFrom(iRecvRemoteHost, iRecvRemotePort, iRecvBuf, iTruncated, *iStatus, iTimeout);
+					SetState(EReceive);
+					activate = 1;
+					}
+				}
+			SetLastError(err);
+			if (err!=KErrNone)
+				{
+				SetState(EFinish);
+				iControl->ReStart();
+				}
+			break;
+				
+		case EReceive:
+			INFO_PRINTF1(_L("EReceive"));
+			SetLastError(iStatus->Int());
+			if(iStatus->Int() != KErrNone) 
+			// Receiving fails as expect
+				{
+				verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+				if (verdict==EPass)
+					{
+					INFO_PRINTF1(_L("Receiving failed as expect"));
+					TRequestStatus reqStatus;
+					iImp->AwaitRecvDataSize(iLength, reqStatus);
+					iImp->AwaitRecvDataSize(iLength, *iStatus);
+					activate = 1;
+					SetState(EAwaitSize);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Receiving failed not as expect"));
+					iControl->ReStart();
+					SetState(EFinish);
+					}
+				}
+			else
+				{	
+				INFO_PRINTF1(_L("Receiving succeed not as expect"));
+				iControl->ReStart();
+				SetState(EFinish);
+				}
+			break;
+				
+		case EAwaitSize:
+			INFO_PRINTF1(_L("EAwaitSize"));
+			SetLastError(iStatus->Int());
+			iImp->CancelRecv();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+				
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+				
+		case EIdle:
+		default:
+			INFO_PRINTF1(_L("EIdle or unknown"));
+			INFO_PRINTF2(_L("Error: bad state %d, State = %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+	return (activate);
+	}
+	
+CBoundWDPStep_8::CBoundWDPStep_8() 
+	{
+	}
+
+CBoundWDPStep_8::~CBoundWDPStep_8() 
+	{
+	}
+
+TVerdict CBoundWDPStep_8::doTestStepL()
+/*
+*	Using invalid values for API parameters:
+*	- Invalid TUid on construction
+*	- Setting invalid timeout for RecvFrom
+*	Note: wrong bearer value has already been implemented as part of test 2
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WDP: Wrong parameter values"));
+	if(TestStepResult() == EPass )
+		{
+		TInt error;
+		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
+			{
+			iExError2=error;
+			}
+		TInt trapValue;
+		TUid invalidInterfaceUid = {0x00000000}; 	
+		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
+		TRAP(trapValue, iImp = CWapBoundDatagramService::NewL(invalidInterfaceUid));
+		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;	
+		if (verdict==EPass)
+			{
+			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
+			}
+		SetTestStepResult(verdict);
+		}
+	return TestStepResult();
+	}
+	
+TInt CBoundWDPStep_8::CallStateMachine()
+	{
+	return 0;
+	}
+	
+CBoundWDPStep_9::CBoundWDPStep_9() 
+	{
+	}
+
+CBoundWDPStep_9::~CBoundWDPStep_9() 
+	{
+	}
+
+TVerdict CBoundWDPStep_9::doTestStepL()
+	{
+	return TestStepResult();
+	}
+	
+TInt CBoundWDPStep_9::CallStateMachine()
+	{
+	return 0;
+	}
+	
+CBoundWDPStep_OutOfMemory::CBoundWDPStep_OutOfMemory() 
+	{
+	}
+
+CBoundWDPStep_OutOfMemory::~CBoundWDPStep_OutOfMemory() 
+	{
+	}
+
+TVerdict CBoundWDPStep_OutOfMemory::doTestStepL()
+	{
+	// to test fix for DEF117706: Memory leak in CWapBoundDatagramService::Connect under OOM
+	__UHEAP_MARK;
+
+	for(TInt i=1;; i++)
+		{
+		__UHEAP_FAILNEXT(i);
+
+		CWapBoundDatagramService* datServ = NULL;
+		TRAP_IGNORE(datServ = CWapBoundDatagramService::NewL());
+		if(datServ)
+			{
+			datServ->Connect(Wap::EAll, 7576);
+			delete datServ;
+			}		 
+		REComSession::FinalClose();
+
+		TInt* marker = new TInt(0);
+		if (!marker)
+			{
+			break;		
+			}
+		delete marker;
+		}
+
+	__UHEAP_MARKEND;	
+	return TestStepResult();
+	}
+	
+TInt CBoundWDPStep_OutOfMemory::CallStateMachine()
+	{
+	return 0;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapBoundWDPSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,150 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapBoundWDPSteps.h
+*/
+#if (!defined __BOUNDWDP_STEP_H__)
+#define __BOUNDWDP_STEP_H__
+#include <test/testexecutestepbase.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+#include "WapStackSuiteStepBase.h"
+
+_LIT(KBoundWDPStep_1,"BoundWDP_1");
+_LIT(KBoundWDPStep_2,"BoundWDP_2");
+_LIT(KBoundWDPStep_3,"BoundWDP_3");
+_LIT(KBoundWDPStep_4,"BoundWDP_4");
+_LIT(KBoundWDPStep_5,"BoundWDP_5");
+_LIT(KBoundWDPStep_6,"BoundWDP_6");
+_LIT(KBoundWDPStep_7,"BoundWDP_7");
+_LIT(KBoundWDPStep_8,"BoundWDP_8");
+_LIT(KBoundWDPStep_9,"BoundWDP_9");
+_LIT(KBoundWDPStep_OutOfMemory,"BoundWDP_OutOfMemory");
+
+class CBoundWDPStepBase : public CWapStackSuiteStepBase
+{
+public:
+	CBoundWDPStepBase();
+	~CBoundWDPStepBase();
+	CWapBoundDatagramService* LoadInterface();
+	void UnloadInterface();
+protected:
+	CWapBoundDatagramService* iImp;
+};
+
+
+class CBoundWDPStep_1 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_1();
+	~CBoundWDPStep_1();
+	virtual TVerdict doTestStepL();
+private:
+	};
+
+class CBoundWDPStep_2 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_2();
+	~CBoundWDPStep_2();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+	};
+
+class CBoundWDPStep_3 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_3();
+	~CBoundWDPStep_3();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+public:
+	};
+
+class CBoundWDPStep_4 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_4();
+	~CBoundWDPStep_4();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+protected:
+private:
+	};
+
+class CBoundWDPStep_5 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_5();
+	~CBoundWDPStep_5();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundWDPStep_6 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_6();
+	~CBoundWDPStep_6();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWDPStep_7 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_7();
+	~CBoundWDPStep_7();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWDPStep_8 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_8();
+	~CBoundWDPStep_8();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWDPStep_9 : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_9();
+	~CBoundWDPStep_9();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWDPStep_OutOfMemory : public CBoundWDPStepBase
+	{
+public:
+	CBoundWDPStep_OutOfMemory();
+	~CBoundWDPStep_OutOfMemory();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};	
+
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapBoundWSPSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1005 @@
+// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// CStepOne derived implementation
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "WapBoundWSPSteps.h"
+#include "WapStackSuiteDefs.h"
+#include <simtsy.h>
+#include <ecom/ecom.h>
+
+CBoundWSPStepBase::CBoundWSPStepBase()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWSPStepBase::~CBoundWSPStepBase()
+/**
+* Destructor
+*/
+	{
+	if(iImp) 
+		{
+		UnloadInterface();
+		}
+	}
+
+CWapBoundCLWSPService* CBoundWSPStepBase::LoadInterface()
+	{
+	TInt trapValue;
+	CWapBoundCLWSPService* implementation = NULL;
+	// UID {0x101FBB3C} - SWS implementation
+	TUid KInterfaceUid = {0x101FBB3C}; 	
+	INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), KInterfaceUid);
+	TRAP(trapValue, implementation = CWapBoundCLWSPService::NewL(KInterfaceUid));
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
+		return implementation;
+		}
+	else return NULL;
+	}
+
+void CBoundWSPStepBase::UnloadInterface()
+	{
+	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
+	delete iImp;
+	iImp = NULL;
+	REComSession::FinalClose();	
+	}
+
+CBoundWSPStep_1::~CBoundWSPStep_1()
+/**
+* Destructor
+*/
+	{
+	}
+
+CBoundWSPStep_1::CBoundWSPStep_1()
+/**
+* Constructor
+*/
+	{
+	}
+
+TVerdict CBoundWSPStep_1::doTestStepL()
+/**
+* @return - TVerdict code
+* Override of base class pure virtual
+* Our implementation only gets called if the base class doTestStepPreambleL() did
+* not leave. That being the case, the current test result value will be EPass.
+*/
+	{
+	//
+	// CWapBoundCLWSPService
+	// 
+	INFO_PRINTF1(_L("CreateImplementation - CWapBoundCLWSPService"));
+	INFO_PRINTF1(_L("Calling old NewL() method"));
+	
+	TInt trapValue; 
+	
+	SetTestStepResult(EFail);
+	TRAP(trapValue, iImp = CWapBoundCLWSPService::NewL());
+	if(!trapValue)
+		{
+		// interface is loaded
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
+		UnloadInterface();
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			INFO_PRINTF1(_L("CreateImplementation - OK"));
+			SetTestStepResult(EPass);
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+CBoundWSPStep_2::CBoundWSPStep_2()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWSPStep_2::~CBoundWSPStep_2() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWSPStep_2::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WSP: Testing Connect"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer, port;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			TBool delay = EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			if(GetBoolFromConfig(ConfigSection(),KWapDelayPortClosure, delay)) iDelayPortClosure = delay;
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_2::CallStateMachine()
+	{
+	TInt err = KErrNone;
+	INFO_PRINTF2(_L("CallStateMachine: state %d"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iReconnect)
+					{ 
+					INFO_PRINTF1(_L("Reconnection"));
+					iControl->ReStart();
+					break;
+					}
+				}
+			SetState(EFinish);
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			// it's necessary to delay port closure, let the other concurrent test step
+			// can fail opening the same port with expected error EPortAlreadyBound (-5498)
+			if (iDelayPortClosure)
+				User::After(5000000);
+
+			INFO_PRINTF1(_L("EFinish"));
+			if(GetLastError() == GetExpectedError()) SetTestStepResult(EPass);
+			else SetTestStepResult(EFail);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CBoundWSPStep_3::CBoundWSPStep_3()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWSPStep_3::~CBoundWSPStep_3() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWSPStep_3::doTestStepL()
+/*
+* Test the BoundWSP APIs in unconnected state.
+*/
+	{
+	INFO_PRINTF1(_L("BoundCLPush. Requests without connection"));
+	// check preamble result
+	TVerdict verdict = TestStepResult();
+	if (verdict==EPass)
+		{
+		TInt err, ret;
+		iImp = LoadInterface();
+		if (!iImp)
+			{
+			ERR_PRINTF1(_L("Unable to load BoundWSP Interface"));
+			verdict = EFail;
+			}
+		else
+			{
+			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
+			ShowConnectionInfo();
+			TBuf8<100> header, body;
+			TPckgBuf<TUint8> idPckg;
+			TWSPStatus wspStatus;
+			TRequestStatus reqStatus;
+			TUint32 timeout = 0;
+			iImp->MethodResult(header, body, idPckg, wspStatus, reqStatus, timeout);
+			TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("MethodResult Fails not as expected")))
+				if (ret) 
+					verdict = EFail;
+				else
+					{
+					Wap::TPort port;
+					err=iImp->GetLocalPort(port);
+					TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalPort Fails not as expected")))
+						if (ret)
+							verdict = EFail;
+						else
+							{
+							HBufC8* localHost;					
+							err=iImp->GetLocalAddress(localHost);
+							TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalAddress Fails not as expected")))
+								if (ret) 
+									verdict = EFail;
+								else
+									{
+									err=iImp->GetBearer(iBearer);
+									TRAP(ret, TEST_CHECKL(err, iExError, _L("GetBearer Fails not as expected")))
+										if (ret) 
+											verdict = EFail;
+										else
+											{
+											HBufC8* host;
+											err=iImp->GetServerAddress(host);
+											TRAP(ret, TEST_CHECKL(err, iExError, _L("GetServerAddress Fails not as expected")))
+												if (ret) 
+													verdict = EFail;
+												else
+													{
+													TBuf<100> uri;
+													TUint8 id = 0;
+													err=iImp->MethodInvoke(iBearer, iRemoteHost, iRemotePort, 0x40, uri, header, body, id);
+													TRAP(ret, TEST_CHECKL(err, iExError, _L("MethodInvoke Fails not as expected")))
+														if (ret) 
+															verdict = EFail;
+													}
+											}
+									}
+							}
+					}
+				UnloadInterface();
+			}
+		}
+	if (verdict==EPass)
+		{
+		INFO_PRINTF1(_L("BoundWSP. Requests Fail as expected"));
+		}
+	SetTestStepResult(verdict);
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_3::CallStateMachine()
+	{
+	return (0);
+	}
+
+
+CBoundWSPStep_4::CBoundWSPStep_4()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWSPStep_4::~CBoundWSPStep_4() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWSPStep_4::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WSP: UnitInvoke-UnitResult"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port, repeat, method;
+			TInt error = KErrNone;
+			TPtrC headers;
+			TPtrC body;
+			TPtrC uri;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error)) SetExpectedError(error);
+			if(GetIntFromConfig(ConfigSection(),KWapWSPMethod, method)) iMethod = method;
+			if(GetIntFromConfig(ConfigSection(), KWapRepeat, repeat)) iRepeat = repeat;
+
+			if(!GetStringFromConfig(ConfigSection(),KWapURI, uri)) 
+				{
+				User::Leave(KErrNoMemory);
+				}
+			
+			GetStringFromConfig(ConfigSection(),KWapWSPHeaders, headers);
+			GetStringFromConfig(ConfigSection(),KWapWSPBody, body);
+
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			
+			if(UseSimTsy())
+				{
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, 41));
+				}
+			
+			
+			iURI = HBufC16::NewL(uri.Length());
+			
+			iSendHeaders = HBufC8::NewL(headers.Length());
+			
+			iSendBody = HBufC8::NewL(body.Length());
+			
+			iRecvHeaders = HBufC8::NewL(KMaxWapWspHeaderBufferLength);
+			iRecvBody = HBufC8::NewL(KMaxWapWspDataBufferLength);
+
+			TPtr16 tmp16 = iURI->Des();
+			tmp16.Copy(uri);
+			TPtr8 tmp1 = iSendHeaders->Des();
+			tmp1.Copy(headers);
+			TPtr8 tmp2 = iSendBody->Des();
+			tmp2.Copy(body);
+
+			iRecvHeadersBuf.Set(iRecvHeaders->Des());
+			iRecvHeadersBuf.Zero();
+			iRecvBodyBuf.Set(iRecvBody->Des());
+			iRecvBodyBuf.Zero();
+			
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+
+			delete iSendBody;
+			iSendBody=NULL;
+			delete iSendHeaders;
+			iSendHeaders=NULL;
+			delete iURI;
+			iURI=NULL;
+
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_4::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	static TUint total_headers = 0;		
+	static TUint total_body = 0;		
+	static TUint repeat = 0;		
+	
+	INFO_PRINTF2(_L("CallStateMachine [state %d]"), State());
+
+	switch(iState)
+		{
+		case EConnect:
+			total_headers = 0;
+			total_body = 0;
+			err = iImp->Connect(iBearer, iLocalPort, EFalse);
+			if( err == KErrNone)
+				{
+				SetState(EUnitInvoke);
+				}
+			else
+				{
+				SetState(EFinish);
+				}
+			SetLastError(err);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			iControl->ReStart();
+			break;
+
+		case EUnitInvoke:
+			INFO_PRINTF2(_L("EUnitInvoke: Method - 0x%02x"), iMethod);
+			if(iBearer != Wap::EIP)
+			{
+				TRAP(err, WaitForInitializeL());
+			}
+			if(iSendHeaders->Length() !=0 )
+				{
+				INFO_PRINTF1(_L("Headers to send:"));
+				DumpBuf(iSendHeaders->Des());
+				}	
+			if(iSendBody->Length() !=0 )
+				{
+				INFO_PRINTF1(_L("Data to send:"));
+				DumpBuf(iSendBody->Des());
+				}
+			err = iImp->MethodInvoke(iBearer, iRemoteHost, iRemotePort, iMethod, iURI->Des(), iSendHeaders->Des(), iSendBody->Des(), iTransactionId);
+			INFO_PRINTF3(_L("MethodInvoke() retcode: - dec: %d hex: 0x%08x"), err, err);
+			if(err == KErrNone) 
+				{	
+				SetState(EUnitResult);
+				}
+			else 
+				{
+				SetState(EFinish);
+				}
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+
+		case EUnitResult:
+
+			iRecvHeadersBuf.Set(iRecvHeaders->Des());
+			iRecvHeadersBuf.Zero();
+			iRecvBodyBuf.Set(iRecvBody->Des());
+			iRecvBodyBuf.Zero();
+			iImp->MethodResult(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, iWspStatus, *iStatus, iTimeout);
+			INFO_PRINTF2(_L("EUnitResult: status 0x%08x"), iStatus->Int());
+			activate = 1;
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			
+			INFO_PRINTF4(_L("EFinish: Status: %d, WSP status: %d (0x%02x)"), iStatus->Int(), iWspStatus, iWspStatus);
+
+			if(iRecvHeadersBuf.Length() != 0)
+				{
+				INFO_PRINTF1(_L("Headers"));
+				total_headers += iRecvHeadersBuf.Length();
+				DumpBuf(iRecvHeadersBuf);
+				}
+
+			if(iRecvBodyBuf.Length() != 0)
+				{
+				INFO_PRINTF1(_L("Body"));
+				total_body += iRecvBodyBuf.Length();
+				DumpBuf(iRecvBodyBuf);
+				}
+
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				if(iStatus->Int() == Wap::EMoreData)
+					{
+					INFO_PRINTF1(_L("NOTE: More data... calling MethodResult()"));
+					SetState(EUnitResult);
+					iControl->ReStart();
+					break;
+					}
+				}
+
+			INFO_PRINTF3(_L("Data received: headers - %d bytes, body - %d bytes"), total_headers, total_body);
+			total_headers = 0;
+			total_body = 0;
+			if((--iRepeat != 0) && (iStatus->Int() == KErrNone))
+				{
+				++repeat;
+				INFO_PRINTF2(_L("REPEAT TEST - %d"), repeat);
+				if(err == KErrNone) 
+					{	
+					SetState(EUnitInvoke);
+					iControl->ReStart();
+					break;
+					}
+				}
+
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+	return (activate);
+	}
+
+CBoundWSPStep_5::CBoundWSPStep_5()
+/**
+* Constructor
+*/
+	{
+	}
+
+CBoundWSPStep_5::~CBoundWSPStep_5() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CBoundWSPStep_5::doTestStepL()
+/** 
+* Test Cancel Request 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BoundCLPush. Testing Cancel Request"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer, port;
+			TInt err = KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, err)) SetExpectedError(err);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+
+			ShowConnectionInfo();
+			err = iImp->Connect(iBearer, iLocalPort, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				TBuf8<100> header, body;
+				TPckgBuf<TUint8> idPckg;
+				TWSPStatus wspStatus;
+				TRequestStatus reqStatus;
+				TUint32 timeout=0;
+				iImp->MethodResult(header, body, idPckg, wspStatus, reqStatus, timeout);
+				SetState(EUnitResult);
+				StartScheduler();
+				iControl->ReStart();
+				if(reqStatus==KErrCancel)
+					{
+					SetTestStepResult(EPass);
+					}
+				
+				}
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_5::CallStateMachine()
+	{
+	INFO_PRINTF2(_L("CallStateMachine: step %d"), State());
+	switch(iState)
+		{
+		case EUnitResult:
+			INFO_PRINTF1(_L("EUnitResult"));
+			iImp->CancelReq();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CBoundWSPStep_6::CBoundWSPStep_6() 
+	{
+	}
+CBoundWSPStep_6::~CBoundWSPStep_6()  
+	{
+	}
+
+TVerdict CBoundWSPStep_6::doTestStepL()
+/*
+* Test receive time out
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WSP: Connect-UnitResult-TimeOut"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			TInt bearer, port;
+			TInt error = KErrNone;
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			TInt headerLength, bufLength, timeOut; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapTimeOut, timeOut))
+				{
+				iTimeout=timeOut;
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_6::CallStateMachine()
+/*
+* Test receive time out
+*/
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+//				WaitForInitializeL();
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				iImp->MethodResult(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, iWspStatus, *iStatus, iTimeout);
+				INFO_PRINTF1(_L("MethodResult"));
+				activate = 1;
+				}
+			else
+				{
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+	return (activate);
+	}
+
+CBoundWSPStep_7::CBoundWSPStep_7() 
+	{
+	}
+CBoundWSPStep_7::~CBoundWSPStep_7()
+	{
+	}
+
+TVerdict CBoundWSPStep_7::doTestStepL()
+//
+//Wrong sequence
+//
+	{
+	INFO_PRINTF1(_L("BOUND-WSP: Connect-UnitResult-UnitResult"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			TInt bearer, port;
+			TInt error = KErrNone;
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			TInt headerLength, bufLength; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_7::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iBearer, iLocalPort, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+//				WaitForInitializeL();
+				TRequestStatus reqStatus;
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				iImp->MethodResult(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, iWspStatus, reqStatus, iTimeout);
+				iImp->MethodResult(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, iWspStatus, *iStatus, iTimeout);
+				INFO_PRINTF1(_L("MethodResult"));
+				activate = 1;
+				}
+			else
+				{
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			iImp->CancelReq();
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d, State = %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+	return (activate);
+	}
+
+CBoundWSPStep_8::CBoundWSPStep_8() 
+	{
+	}
+CBoundWSPStep_8::~CBoundWSPStep_8()  
+	{
+	}
+TVerdict CBoundWSPStep_8::doTestStepL()
+/*
+*	Using invalid values for API parameters:
+*	- Invalid TUid on construction
+*	- Invalid method for MethodInvoke
+*	- Invalid timeout for MethodResult
+*	Note: wrong bearer value has already been implemented as part of test 2
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WSP: Wrong parameters testing"));
+	if(TestStepResult() == EPass )
+		{
+		TInt error;
+		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
+			{
+			iExError2=error;
+			}
+		TInt trapValue;
+		TUid invalidInterfaceUid = {0x00000000}; /*{0x101FBB3C};*/
+		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
+		TRAP(trapValue, iImp = CWapBoundCLWSPService::NewL(invalidInterfaceUid));
+		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;
+		if (verdict==EFail)
+			{
+			SetTestStepResult(EFail);
+			return TestStepResult();
+			}
+		else
+			{
+			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
+			// Now use the correct Uid
+			iImp = LoadInterface();
+			if(iImp)
+				{
+				SetLastError(KErrNone);
+				TInt method;
+				TInt error = KErrNone;
+				TPtrC headers;
+				TPtrC body;
+				TPtrC uri;
+				
+				if(GetIntFromConfig(ConfigSection(), KWapExError, error))
+					{
+					SetExpectedError(error);
+					}
+				if (GetIntFromConfig(ConfigSection(),KWapWSPMethod, method))
+					{
+					iMethod=method;
+					}
+				
+				if(!GetStringFromConfig(ConfigSection(),KWapURI, uri) || \
+					!GetStringFromConfig(ConfigSection(),KWapWSPHeaders, headers) || \
+					!GetStringFromConfig(ConfigSection(),KWapWSPBody, body))
+					{
+					User::Leave(KErrNoMemory);
+					}
+				
+				iURI = HBufC16::NewL(uri.Length());
+				
+				iSendHeaders = HBufC8::NewL(headers.Length());
+				
+				iSendBody = HBufC8::NewL(body.Length());
+				
+				TPtr16 tmp16 = iURI->Des();
+				tmp16.Copy(uri);
+				TPtr8 tmp = iSendHeaders->Des();
+				tmp.Copy(headers);
+				TPtr8 tmp1 = iSendBody->Des();
+				tmp1.Copy(body);
+
+				ShowConnectionInfo();
+				error = iImp->Connect(iBearer, iLocalPort, EFalse);
+				INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+				if( error == KErrNone)
+					{
+					error = iImp->MethodInvoke(iBearer, iRemoteHost, iRemotePort, iMethod, iURI->Des(), iSendHeaders->Des(), iSendBody->Des(), iTransactionId);
+					}
+				TVerdict verdict = (error == GetExpectedError())?EPass:EFail;
+				SetTestStepResult(verdict);
+				
+				delete iSendBody;
+				iSendBody=NULL;
+				delete iSendHeaders;
+				iSendHeaders=NULL;
+				delete iURI;
+				iURI=NULL;
+				UnloadInterface();
+				}
+			}
+		}
+	return TestStepResult();
+	}
+TInt CBoundWSPStep_8::CallStateMachine()
+	{
+	return (0);
+	}
+
+CBoundWSPStep_9::CBoundWSPStep_9() {}
+CBoundWSPStep_9::~CBoundWSPStep_9()  {}
+
+TVerdict CBoundWSPStep_9::doTestStepL()
+	{
+	return TestStepResult();
+	}
+
+TInt CBoundWSPStep_9::CallStateMachine()
+	{
+	return (0);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapBoundWSPSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,139 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapBoundWSPSteps.h
+*/
+#if (!defined __BOUNDWSP_STEP_H__)
+#define __BOUNDWSP_STEP_H__
+#include <test/testexecutestepbase.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+#include "WapStackSuiteStepBase.h"
+
+// steps names
+_LIT(KBoundWSPStep_1,"BoundWSP_1");
+_LIT(KBoundWSPStep_2,"BoundWSP_2");
+_LIT(KBoundWSPStep_3,"BoundWSP_3");
+_LIT(KBoundWSPStep_4,"BoundWSP_4");
+_LIT(KBoundWSPStep_5,"BoundWSP_5");
+_LIT(KBoundWSPStep_6,"BoundWSP_6");
+_LIT(KBoundWSPStep_7,"BoundWSP_7");
+_LIT(KBoundWSPStep_8,"BoundWSP_8");
+_LIT(KBoundWSPStep_9,"BoundWSP_9");
+
+class CBoundWSPStepBase : public CWapStackSuiteStepBase
+{
+public:
+	CBoundWSPStepBase();
+	~CBoundWSPStepBase();
+	CWapBoundCLWSPService* LoadInterface();
+	void UnloadInterface();
+protected:
+	CWapBoundCLWSPService* iImp;
+};
+
+class CBoundWSPStep_1 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_1();
+	~CBoundWSPStep_1();
+	virtual TVerdict doTestStepL();
+private:
+	};
+
+class CBoundWSPStep_2 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_2();
+	~CBoundWSPStep_2();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundWSPStep_3 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_3();
+	~CBoundWSPStep_3();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundWSPStep_4 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_4();
+	~CBoundWSPStep_4();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundWSPStep_5 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_5();
+	~CBoundWSPStep_5();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CBoundWSPStep_6 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_6();
+	~CBoundWSPStep_6();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWSPStep_7 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_7();
+	~CBoundWSPStep_7();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWSPStep_8 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_8();
+	~CBoundWSPStep_8();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CBoundWSPStep_9 : public CBoundWSPStepBase
+	{
+public:
+	CBoundWSPStep_9();
+	~CBoundWSPStep_9();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapFullySpecCLPushSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,776 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "WapFullySpecCLPushSteps.h"
+#include "WapStackSuiteDefs.h"
+#include <simtsy.h>
+#include <wapmsgerr.h>
+#include <ecom/ecom.h>
+
+
+CFullySpecCLPushBase::CFullySpecCLPushBase()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecCLPushBase::~CFullySpecCLPushBase()
+/**
+* Destructor
+*/
+	{
+	if(iImp) 
+		{
+		UnloadInterface();
+		}
+	}
+
+CWapFullySpecCLPushService* CFullySpecCLPushBase::LoadInterface()
+	{
+	TInt trapValue;
+	CWapFullySpecCLPushService* implementation = NULL;
+	// UID {0x101FBB3A} - SWS implementation
+	TUid KInterfaceUid = {0x101FBB3A}; 	
+	INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), KInterfaceUid);
+	TRAP(trapValue, implementation = CWapFullySpecCLPushService::NewL(KInterfaceUid));
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
+		return implementation;
+		}
+	else return NULL;
+	}
+
+void CFullySpecCLPushBase::UnloadInterface()
+	{
+	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
+	delete iImp;
+	iImp = NULL;
+	REComSession::FinalClose();	
+	}
+
+CFullySpecCLPushStep_1::CFullySpecCLPushStep_1()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecCLPushStep_1::~CFullySpecCLPushStep_1()
+/**
+* Destructor
+*/
+	{
+	}
+
+
+TVerdict CFullySpecCLPushStep_1::doTestStepL()
+/**
+* @return - TVerdict code
+* Override of base class pure virtual
+* Our implementation only gets called if the base class doTestStepPreambleL() did
+* not leave. That being the case, the current test result value will be EPass.
+*/
+	{
+	//
+	// CWapFullySpecCLPushService
+	// 
+	INFO_PRINTF1(_L("CreateImplementation - CWapFullySpecCLPushService"));
+	INFO_PRINTF1(_L("Calling old NewL() method"));
+	
+	TInt trapValue; 
+	
+	SetTestStepResult(EFail);
+	TRAP(trapValue, iImp = CWapFullySpecCLPushService::NewL());
+	if(!trapValue)
+		{
+		// interface is loaded
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
+		UnloadInterface();
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			INFO_PRINTF1(_L("CreateImplementation - OK"));
+			SetTestStepResult(EPass);
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+CFullySpecCLPushStep_2::CFullySpecCLPushStep_2()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecCLPushStep_2::~CFullySpecCLPushStep_2() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecCLPushStep_2::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-PUSH: Testing Connect"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect = EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_2::CallStateMachine()
+	{
+	TInt err = KErrNone;
+	INFO_PRINTF2(_L("CallStateMachine: step [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iReconnect)
+					{ 
+					INFO_PRINTF1(_L("Reconnection"));
+					iControl->ReStart();
+					break;
+					}
+				}
+			SetState(EFinish);
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(GetLastError() == GetExpectedError()) SetTestStepResult(EPass);
+			else SetTestStepResult(EFail);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CFullySpecCLPushStep_3::CFullySpecCLPushStep_3()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecCLPushStep_3::~CFullySpecCLPushStep_3() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecCLPushStep_3::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FullySpecWSPPush. Requests without connection"));
+	// check preamble result
+	TVerdict verdict = TestStepResult();
+	if (verdict==EPass)
+		{
+		TInt err, ret;
+		iImp = LoadInterface();
+		if (!iImp)
+			{
+			ERR_PRINTF1(_L("Unable to load FullySpecWSPPush Interface"));
+			verdict = EFail;
+			}
+		else
+			{
+			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
+			ShowConnectionInfo();
+			TRequestStatus reqStatus;
+			iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, reqStatus);
+			TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("AwaitPush Fails not as expected")))
+				if (ret) 
+					verdict = EFail;
+				else
+					{
+					Wap::TPort port;
+					err=iImp->GetLocalPort(port);
+					TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalPort Fails not as expected")))
+						if (ret)
+							verdict = EFail;
+						else
+							{
+							HBufC8* localHost;					
+							err=iImp->GetLocalAddress(localHost);
+							TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalAddress Fails not as expected")))
+								if (ret) 
+									verdict = EFail;
+							}
+					}
+				UnloadInterface();
+			}
+		}
+	if (verdict==EPass)
+		{
+		INFO_PRINTF1(_L("FullySpecCLPush. Requests Fail as expected"));
+		}
+	SetTestStepResult(verdict);
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_3::CallStateMachine()
+	{
+	return (0);
+	}
+
+CFullySpecCLPushStep_4::CFullySpecCLPushStep_4()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecCLPushStep_4::~CFullySpecCLPushStep_4() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecCLPushStep_4::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-CLPUSH: Connect-AwaitPush"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port;
+			TInt error = KErrNone;
+			TPtrC16 remote_host;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetStringFromConfig(ConfigSection(), KWapRemoteHost, remote_host))
+				{
+				iRemoteHost.Copy(remote_host);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) 
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapRemotePort, port)) 
+				{
+				iRemotePort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			GetBoolFromConfig(ConfigSection(), KMiddleCancel, iMiddleCancel);
+			GetBoolFromConfig(ConfigSection(), KMultiReadCancel, iMultiReadCancel);
+			TInt headerLength, bufLength; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+				
+				
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			//	Start state machine
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			} 
+		
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_4::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());	
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				TRAP(err, WaitForInitializeL());
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
+				INFO_PRINTF1(_L("Start AwaitingPush....."));
+				activate = 1;
+				if (!iMiddleCancel)
+					{
+					SetState(EAwaitPush);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Cancel AwaitPush"));
+					iImp->CancelAwaitPush();
+					SetState(EFinish);
+					}
+				}
+			else 
+				{
+				SetState(EFinish);
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			break;
+			
+		case EAwaitPush:
+			INFO_PRINTF1(_L("EAwaitPush"));
+			if(iStatus->Int() != KErrNone && iStatus->Int()!=Wap::EMoreData) 
+				// AwaitPush failed
+				{
+				INFO_PRINTF1(_L("AwaitPush failed"));
+				SetLastError(iStatus->Int());
+				SetState(EFinish);
+				iControl->ReStart();
+				}
+			else
+				{
+				iMaxWspHeaderRecvBuffer.Append(iRecvHeadersBuf);
+				iMaxWspDataRecvBuffer.Append(iRecvBodyBuf);
+				if (iStatus->Int()==Wap::EMoreData)
+					{
+					iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
+					activate = 1;
+					if (!iMultiReadCancel)
+						{
+						SetState(EAwaitPush);
+						}
+					else
+						{
+						INFO_PRINTF1(_L("Cancel Receive in EMutipleReceive state"));
+						iImp->CancelAwaitPush();
+						SetState(EFinish);
+						}					
+					
+					}
+				else
+					{
+					SetLastError(iStatus->Int());
+					iControl->ReStart();
+					SetState(EFinish);
+					}
+				}
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			if (verdict==EPass && !iMiddleCancel && !iMultiReadCancel)
+				{
+				iImp->CancelAwaitPush();
+				INFO_PRINTF1(_L("Headers"));
+				DumpBuf(iMaxWspHeaderRecvBuffer);
+				INFO_PRINTF1(_L("Body"));
+				DumpBuf(iMaxWspDataRecvBuffer);
+				if (verdict==EPass)
+					{
+					Wap::TPort port;
+					iImp->GetLocalPort(port);
+					verdict = (port == iLocalPort)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					//This test can not perform.
+					HBufC8* buf;
+					iImp->GetLocalAddress(buf);
+					delete buf;
+					}
+				}
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+		return (activate);
+}
+
+CFullySpecCLPushStep_5::CFullySpecCLPushStep_5()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecCLPushStep_5::~CFullySpecCLPushStep_5() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecCLPushStep_5::doTestStepL()
+/** 
+* Test Cancel await push 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FullySpecified-PUSH: Testing Cancel"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect = EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			
+			ShowConnectionInfo();
+			error = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+			if( error == KErrNone)
+				{
+				TBuf8<100> header, body;
+				TPckgBuf<TUint8> pushIdPckg;
+				TRequestStatus reqStatus;
+				iImp->AwaitPush(header, body, pushIdPckg, reqStatus);
+				SetState(EAwaitPush);
+				StartScheduler();
+				iControl->ReStart();
+				if(reqStatus==KErrCancel)
+					{
+					SetTestStepResult(EPass);
+					}
+				}
+			
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_5::CallStateMachine()
+	{
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());	
+	switch(iState)
+		{
+		case EAwaitPush:
+			INFO_PRINTF1(_L("EAwaitPush"));
+			iImp->CancelAwaitPush();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			SetState(EIdle);
+			StopScheduler();
+			break;
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CFullySpecCLPushStep_6::CFullySpecCLPushStep_6() 
+	{
+	}
+CFullySpecCLPushStep_6::~CFullySpecCLPushStep_6() 
+	{
+	}
+TVerdict CFullySpecCLPushStep_6::doTestStepL()
+	{
+	//Not in use
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_6::CallStateMachine()
+	{
+	return (0);
+	}
+
+CFullySpecCLPushStep_7::CFullySpecCLPushStep_7() 
+	{
+	}
+CFullySpecCLPushStep_7::~CFullySpecCLPushStep_7() 
+	{
+	}
+TVerdict CFullySpecCLPushStep_7::doTestStepL()
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-CLPUSH: Connect-AwaitPush-AwaitPush"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer;
+			TInt error = KErrNone;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) 
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error)) 
+				{
+				SetExpectedError(error);
+				}
+			TInt headerLength, bufLength; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_7::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());	
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+//				WaitForInitializeL();
+				TRequestStatus reqStatus;
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, reqStatus);
+				iImp->AwaitPush(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, *iStatus);
+				INFO_PRINTF1(_L("AwaitPush"));
+				activate = 1;
+				}
+			else
+				{
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			
+			INFO_PRINTF1(_L("EFinish"));
+			iImp->CancelAwaitPush();
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+	return (activate);
+	}
+
+CFullySpecCLPushStep_8::CFullySpecCLPushStep_8() 
+	{
+	}
+CFullySpecCLPushStep_8::~CFullySpecCLPushStep_8() 
+	{
+	}
+TVerdict CFullySpecCLPushStep_8::doTestStepL()
+/**
+*	@return - TVerdict code
+*	Wrong parameter values for FullySpecified CL Push API:
+*	- Wrong TUid on construction
+*	- Connect to wrong bearer (already implemented in test 2)
+*/
+	{
+	INFO_PRINTF1(_L("CreateImplementation with wrong Uid- CWapFullySpecCLPushService"));
+	if(TestStepResult() == EPass )
+		{
+		TInt error;
+		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
+			{
+			iExError2=error;
+			}
+		TInt trapValue;
+		TUid invalidInterfaceUid = {0x00000000}; 
+		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
+		TRAP(trapValue, iImp = CWapFullySpecCLPushService::NewL(invalidInterfaceUid));
+		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;
+		if (verdict==EPass)
+			{
+			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
+			}
+		SetTestStepResult(verdict);
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_8::CallStateMachine()
+	{
+	return (0);
+	}
+
+CFullySpecCLPushStep_9::CFullySpecCLPushStep_9() {}
+CFullySpecCLPushStep_9::~CFullySpecCLPushStep_9() {}
+TVerdict CFullySpecCLPushStep_9::doTestStepL()
+	{
+	return TestStepResult();
+	}
+
+TInt CFullySpecCLPushStep_9::CallStateMachine()
+	{
+	return (0);
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapFullySpecCLPushSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,138 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapFullySpecCLPush.h
+*/
+#if (!defined __FULLYSPECCLPUSH_STEP_H__)
+#define __FULLYSPECCLPUSH_STEP_H__
+#include <test/testexecutestepbase.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+#include "WapStackSuiteStepBase.h"
+
+_LIT(KFullySpecCLPushStep_1,"FullySpecCLPush_1");
+_LIT(KFullySpecCLPushStep_2,"FullySpecCLPush_2");
+_LIT(KFullySpecCLPushStep_3,"FullySpecCLPush_3");
+_LIT(KFullySpecCLPushStep_4,"FullySpecCLPush_4");
+_LIT(KFullySpecCLPushStep_5,"FullySpecCLPush_5");
+_LIT(KFullySpecCLPushStep_6,"FullySpecCLPush_6");
+_LIT(KFullySpecCLPushStep_7,"FullySpecCLPush_7");
+_LIT(KFullySpecCLPushStep_8,"FullySpecCLPush_8");
+_LIT(KFullySpecCLPushStep_9,"FullySpecCLPush_9");
+
+class CFullySpecCLPushBase : public CWapStackSuiteStepBase
+{
+public:
+	CFullySpecCLPushBase();
+	~CFullySpecCLPushBase();
+	CWapFullySpecCLPushService* LoadInterface();
+	void UnloadInterface();
+protected:
+	CWapFullySpecCLPushService* iImp;
+};
+
+class CFullySpecCLPushStep_1 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_1();
+	~CFullySpecCLPushStep_1();
+	virtual TVerdict doTestStepL();
+private:
+	};
+
+class CFullySpecCLPushStep_2 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_2();
+	~CFullySpecCLPushStep_2();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecCLPushStep_3 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_3();
+	~CFullySpecCLPushStep_3();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecCLPushStep_4 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_4();
+	~CFullySpecCLPushStep_4();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecCLPushStep_5 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_5();
+	~CFullySpecCLPushStep_5();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecCLPushStep_6 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_6();
+	~CFullySpecCLPushStep_6();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CFullySpecCLPushStep_7 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_7();
+	~CFullySpecCLPushStep_7();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CFullySpecCLPushStep_8 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_8();
+	~CFullySpecCLPushStep_8();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CFullySpecCLPushStep_9 : public CFullySpecCLPushBase
+	{
+public:
+	CFullySpecCLPushStep_9();
+	~CFullySpecCLPushStep_9();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWDPSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,885 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "WapFullySpecWDPSteps.h"
+#include "WapStackSuiteDefs.h"
+#include <wapmsgerr.h>
+#include <simtsy.h>
+#include <ecom/ecom.h>
+
+CFullySpecWDPStepBase::CFullySpecWDPStepBase()
+/*
+* Constructor
+*/
+	{
+	}
+CFullySpecWDPStepBase::~CFullySpecWDPStepBase()
+/*
+* Destructor
+*/
+	{
+	if(iImp) 
+		{
+		UnloadInterface();
+		}
+	}
+
+CWapFullySpecDatagramService* CFullySpecWDPStepBase::LoadInterface()
+/*
+* Load CWapFullySpecifiedDatagramService Interface with Interface ID
+*/
+	{
+	CWapFullySpecDatagramService* implementation = NULL;
+	TUid KInterfaceUid = {0x101FBB38};
+	INFO_PRINTF2(_L("Calling new NewL(%08X) method"), KInterfaceUid);
+	TRAPD(trapValue, implementation = CWapFullySpecDatagramService::NewL(KInterfaceUid));
+	if(!trapValue)	
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
+		return implementation;
+		}
+	else 
+		return NULL;
+	}
+
+void CFullySpecWDPStepBase::UnloadInterface()
+	{
+	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
+	delete iImp;
+	iImp = NULL;
+	REComSession::FinalClose();	
+	}
+
+CFullySpecWDPStep_1::CFullySpecWDPStep_1()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWDPStep_1::~CFullySpecWDPStep_1()
+/**
+* Destructor
+*/
+	{
+	}
+TVerdict CFullySpecWDPStep_1::doTestStepL()
+/** 
+* Load and destroy FullySpecifiedDatagtamService interface implementation
+* Two different methods are used NewL() and NewL(TUid InterfaceUid)
+* @return - TVerdict code
+*/
+	{
+	// CWapFullySpecDatagramService
+	INFO_PRINTF1(_L("CreateImplementation - CWapFullySpecDatagramService"));
+	INFO_PRINTF1(_L("Calling old NewL() method"));
+	
+	TInt trapValue; 
+	
+	SetTestStepResult(EFail);
+	TRAP(trapValue, iImp = CWapFullySpecDatagramService::NewL());
+	if(!trapValue)
+		{
+		// interface is loaded
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
+		UnloadInterface();
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			INFO_PRINTF1(_L("CreateImplementation - OK"));
+			SetTestStepResult(EPass);
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+CFullySpecWDPStep_2::CFullySpecWDPStep_2()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWDPStep_2::~CFullySpecWDPStep_2() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWDPStep_2::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-WDP: Testing Connect"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer	= 0;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect = EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWDPStep_2::CallStateMachine()
+	{
+	TInt err = KErrNone;
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iReconnect)
+					{ 
+					INFO_PRINTF1(_L("Reconnection"));
+					iControl->ReStart();
+					break;
+					}
+				}
+			SetState(EFinish);
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(GetLastError() == GetExpectedError()) SetTestStepResult(EPass);
+			else SetTestStepResult(EFail);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CFullySpecWDPStep_3::CFullySpecWDPStep_3()
+/**
+* Constructor
+*/
+	{
+	SetTestStepName(KWapWDPStackSuiteLogFile);
+	}
+CFullySpecWDPStep_3::~CFullySpecWDPStep_3()
+/**
+* Destructor
+*/
+	{
+	}
+TVerdict CFullySpecWDPStep_3::doTestStepL()
+/*
+* Test the FullySpecWDP APIs in unconnected state.
+*/
+	{
+	INFO_PRINTF1(_L("FULLYSPECIFIEDWDP. Requests without connection"));
+	// check preamble result
+	TVerdict verdict = TestStepResult();
+	if (verdict==EPass)
+		{
+		TInt err, ret;
+		iImp = LoadInterface();
+		if (!iImp)
+			verdict = EFail;
+		else
+			{
+			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
+			ShowConnectionInfo();
+			TBuf8<100> buf;
+			err = iImp->Send(buf);
+			TRAP(ret, TEST_CHECKL(err, iExError, _L("Connect Fails as expected")))
+				if (ret) 
+					verdict = EFail;
+				else
+					{
+					TPckg<TUint16> aDataSizePckg(0);
+					TRequestStatus reqStatus;
+					iImp->AwaitRecvDataSize(aDataSizePckg, reqStatus);
+					User::WaitForRequest(reqStatus);
+					TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("Connect Fails as expected")))
+						if (ret) 
+							verdict = EFail;
+						else
+							{
+							TBuf8<100> buf;
+							TBool truncated;
+							TUint32 timeout=0;
+							iImp->Recv(buf, truncated,reqStatus,timeout);
+							User::WaitForRequest(reqStatus);
+							TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("Connect Fails as expected")))
+								if (ret) 
+									verdict = EFail;
+								else
+									{
+									Wap::TPort aPort;
+									err=iImp->GetLocalPort(aPort);
+									TRAP(ret, TEST_CHECKL(err, iExError, _L("Connect Fails as expected")))
+										if (ret) 
+											verdict = EFail;
+										else
+											{
+											HBufC8* localHost;
+											err=iImp->GetLocalAddress(localHost);
+											TRAP(ret, TEST_CHECKL(err, iExError, _L("Connect Fails as expected")))
+												if (ret) 
+													verdict = EFail;
+												else
+													{
+													TUint16 maxSize, nominalSize;
+													err=iImp->GetDatagramSizes(maxSize, nominalSize);
+													if (err)
+														verdict = EFail;
+													}
+											}
+									}
+							}
+					}
+				UnloadInterface();
+			}
+		}
+	if (verdict==EPass)
+		{
+		INFO_PRINTF1(_L("FullySpecWDP. Requests Fail as expected"));
+		}
+	SetTestStepResult(verdict);
+	return TestStepResult();
+	}
+
+TInt CFullySpecWDPStep_3::CallStateMachine()
+	{
+	return KErrNone;
+	}
+
+CFullySpecWDPStep_4::~CFullySpecWDPStep_4()
+/**
+* Destructor
+*/
+	{
+	}
+
+CFullySpecWDPStep_4::CFullySpecWDPStep_4()
+/**
+* Constructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWDPStep_4::doTestStepL()
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-WDP: Connect-Send-Await-Receive"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port, bufLen;
+			TInt error = KErrNone;
+			TPtrC data;
+			TPtrC16 remote_host;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetStringFromConfig(ConfigSection(), KWapRemoteHost, remote_host))
+				{
+				iRemoteHost.Copy(remote_host);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapRemotePort, port))
+				{
+				iRemotePort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			GetIntFromConfig(ConfigSection(), KWapExError2, iExError2);
+			GetBoolFromConfig(ConfigSection(), KAwaitLengthTwice, iAwaitLengthTwice);
+			GetBoolFromConfig(ConfigSection(), KAwaitLengthCancel, iAwaitLengthCancel);
+			GetBoolFromConfig(ConfigSection(), KMiddleCancel, iMiddleCancel);
+			GetBoolFromConfig(ConfigSection(), KMultiReadCancel, iMultiReadCancel);
+			if(GetIntFromConfig(ConfigSection(),KWapWdpBufLength, bufLen))
+				{
+				iWdpRecvBufLength=static_cast<TUint16>(bufLen);
+				iRecvBuffPtr = HBufC8::NewL(iWdpRecvBufLength);
+				}
+			error = GetStringFromConfig(ConfigSection(),KWapData, data);
+			if(!error)
+				{
+				User::Leave(error);
+				}
+			iSendBuffPtr = HBufC8::NewL(data.Length());
+			TPtr8 tmp = iSendBuffPtr->Des();
+			tmp.Copy(data);
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler(); 
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWDPStep_4::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	TInt leaveError = KErrNone;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state  [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				TRAP(leaveError, WaitForInitializeL());
+				err = iImp->Send(iSendBuffPtr->Des());
+				if(err == KErrNone && leaveError == KErrNone) 
+					{	
+					INFO_PRINTF2(_L("Send completetd with code = %d"), err);
+					SetState(EAwaitSize);
+					}
+				else 
+					{	
+					SetState(EFinish);
+					}
+				}
+			else 
+				{
+				SetState(EFinish);
+				}
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EAwaitSize:
+			INFO_PRINTF1(_L("EAwaitSize"));
+			iImp->AwaitRecvDataSize(iLength, *iStatus);
+			activate = 1;
+			if (!iAwaitLengthCancel)
+				{
+				SetState(EReceive);
+				}
+			else
+				{
+				INFO_PRINTF1(_L("Cancel Receive in AwaitSize state"));
+				iImp->CancelRecv();
+				SetState(EFinish);
+				}
+			
+			break;
+			
+		case EReceive:
+			INFO_PRINTF1(_L("EReceive"));
+			if(iStatus->Int()!=KErrNone) 
+				// AwaitSize failed
+				{
+				INFO_PRINTF1(_L("AwaitSize failed"));
+				SetLastError(iStatus->Int());
+				iControl->ReStart();
+				SetState(EFinish);
+				}
+			else
+				{	
+				INFO_PRINTF2(_L("AwaitSize returned - %d"),iLength());
+				if (!iAwaitLengthTwice)
+					{
+					if (iRecvBuffPtr==NULL)
+						{
+						TInt len=iLength();
+						TRAP(err, iRecvBuffPtr = HBufC8::NewL(len))
+							if (err!=KErrNone)
+								{
+								SetLastError(err);
+								iControl->ReStart();
+								SetState(EFinish);
+								break;
+								}
+						}
+					iRecvBuf.Set(iRecvBuffPtr->Des());
+					iImp->Recv(iRecvBuf, iTruncated, *iStatus, 0);
+					activate = 1;
+					if (!iMiddleCancel)
+						{
+						SetState(EMutipleReceive);
+						}
+					else
+						{
+						INFO_PRINTF1(_L("Cancel Receive in Receive state"));
+						iImp->CancelRecv();
+						SetState(EFinish);
+						}
+					}
+				else
+					{
+					iImp->AwaitRecvDataSize(iLength, *iStatus);
+					activate = 1;
+					SetState(EFinish);
+					}
+				}
+			break;
+			
+		case EMutipleReceive:
+			INFO_PRINTF1(_L("EMultipleReceive"));
+			if (iStatus->Int()!=KErrNone && iStatus->Int()!=Wap::EMoreData)
+				{
+				INFO_PRINTF1(_L("Receive failed"));
+				SetLastError(iStatus->Int());
+				iControl->ReStart();
+				SetState(EFinish);
+				}
+			else
+				{
+				iMaxWdpRecvBuffer.Append(iRecvBuf);
+				if (iTruncated)
+					{
+					iImp->Recv(iRecvBuf, iTruncated, *iStatus, 0);
+					activate = 1;
+					if (!iMultiReadCancel)
+						{
+						SetState(EMutipleReceive);
+						}
+					else
+						{
+						INFO_PRINTF1(_L("Cancel Receive in EMutipleReceive state"));
+						iImp->CancelRecv();
+						SetState(EFinish);
+						}					
+					}
+				else
+					{
+					SetLastError(iStatus->Int());
+					iControl->ReStart();
+					SetState(EFinish);
+					}
+				}	
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			if (verdict==EPass && !iAwaitLengthTwice && !iMiddleCancel && !iMultiReadCancel && !iAwaitLengthCancel)
+				{
+				iImp->CancelRecv();
+				INFO_PRINTF1(_L("Data received"));
+				DumpBuf(iMaxWdpRecvBuffer);
+				if (verdict==EPass)
+					{
+					verdict = (iSendBuffPtr->Match(iMaxWdpRecvBuffer)!=KErrNotFound)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					Wap::TPort port;
+					iImp->GetLocalPort(port);
+					verdict = (port == iLocalPort)?EPass:EFail;
+					}
+				if (verdict==EPass)
+					{
+					//This test can not perform to get own telnumber
+					HBufC8* buf;
+					iImp->GetLocalAddress(buf);
+					delete buf;
+					}
+				}
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+		return (activate);
+	}
+	
+	CFullySpecWDPStep_5::~CFullySpecWDPStep_5()
+	/**
+	* Destructor
+	*/
+		{
+		}
+	
+	CFullySpecWDPStep_5::CFullySpecWDPStep_5()
+	/**
+	* Constructor
+	*/
+		{
+		}
+	
+	TVerdict CFullySpecWDPStep_5::doTestStepL()
+	/** 
+	*	Test Cancel
+	*/
+		{
+		INFO_PRINTF1(_L("Fully Specified-WDP: Testing Cancel"));
+		
+		if(TestStepResult() == EPass )
+			{
+			SetTestStepResult(EFail);
+			iImp = LoadInterface();
+			if(iImp)
+				{	
+				TInt bearer	= 0;
+				TInt error	= KErrNone;
+				TBool secure= EFalse;
+				TBool reconnect = EFalse;
+				SetLastError(KErrNone);
+				
+				if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+				if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+				if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+				if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+
+				ShowConnectionInfo();				
+
+				error = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
+				INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+				if( error == KErrNone)
+					{
+					TPckg<TUint16> aDataSizePckg(0);
+					TRequestStatus reqStatus;
+					iImp->AwaitRecvDataSize(aDataSizePckg, reqStatus);
+					SetState(EAwaitSize);
+					StartScheduler();
+					iControl->ReStart();
+					if(reqStatus==KErrCancel)
+						{
+						SetTestStepResult(EPass);
+						}
+					}
+				}
+			}
+		return TestStepResult();
+		}
+
+TInt CFullySpecWDPStep_5::CallStateMachine()
+	{
+	INFO_PRINTF2(_L("CallStateMachine: step [%d]"), State());
+	switch(iState)
+		{
+		case EAwaitSize:
+			INFO_PRINTF1(_L("EAwaitSize"));
+			iImp->CancelRecv();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			SetState(EIdle);
+			StopScheduler();
+			break;
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknow state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return 0;
+	}
+	
+CFullySpecWDPStep_6::~CFullySpecWDPStep_6() 
+	{
+	}
+
+CFullySpecWDPStep_6::CFullySpecWDPStep_6()
+	{
+	}
+
+TVerdict CFullySpecWDPStep_6::doTestStepL()
+	{
+	//Test timeout (Not in use)
+	return TestStepResult();
+	}
+
+TInt CFullySpecWDPStep_6::CallStateMachine()
+	{
+	return KErrNone;
+	}
+
+CFullySpecWDPStep_7::~CFullySpecWDPStep_7()
+	{
+	}
+
+CFullySpecWDPStep_7::CFullySpecWDPStep_7()
+	{
+	}
+
+TVerdict CFullySpecWDPStep_7::doTestStepL()
+	//
+	//Test wrong sequenece
+	//
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-WDP: Connect-Receive-Await-Await"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port, bufLen;
+			TInt error = KErrNone;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{	
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWdpBufLength, bufLen))
+				{
+				iWdpRecvBufLength=static_cast<TUint16>(bufLen);
+				}
+			iRecvBuffPtr = HBufC8::NewL(iWdpRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWDPStep_7::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state  [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+//				WaitForInitializeL();
+				if(iRecvBuffPtr == NULL)
+					{
+					err=KErrNoMemory;
+					}
+				else
+					{
+					iRecvBuf.Set(iRecvBuffPtr->Des());
+					iImp->Recv(iRecvBuf, iTruncated, *iStatus, iTimeout);
+					SetState(EReceive);
+					activate = 1;
+					}
+				}
+			SetLastError(err);
+			if (err!=KErrNone)
+				{
+				SetState(EFinish);
+				iControl->ReStart();
+				}
+			break;
+			
+		case EReceive:
+			INFO_PRINTF1(_L("EReceive"));
+			SetLastError(iStatus->Int());
+			if(iStatus->Int() != KErrNone) 
+				// Receiving fails as expect
+				{
+				verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+				if (verdict==EPass)
+					{
+					INFO_PRINTF1(_L("Receiving failed as expect"));
+					TRequestStatus reqStatus;
+					iImp->AwaitRecvDataSize(iLength, reqStatus);
+					iImp->AwaitRecvDataSize(iLength, *iStatus);
+					activate = 1;
+					SetState(EAwaitSize);
+					}
+				else
+					{
+					INFO_PRINTF1(_L("Receiving failed not as expect"));
+					iControl->ReStart();
+					SetState(EFinish);
+					}
+				}
+			else
+				{	
+				INFO_PRINTF1(_L("Receiving succeed not as expect"));
+				iControl->ReStart();
+				SetState(EFinish);
+				}
+			break;
+			
+		case EAwaitSize:
+			INFO_PRINTF1(_L("EAwaitSize"));
+			SetLastError(iStatus->Int());
+			iImp->CancelRecv();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+	return (activate);
+}
+
+CFullySpecWDPStep_8::~CFullySpecWDPStep_8()
+	{
+	}
+CFullySpecWDPStep_8::CFullySpecWDPStep_8() 
+	{
+	}
+
+TVerdict CFullySpecWDPStep_8::doTestStepL()
+/*
+*	Using invalid values for API parameters:
+*	- Invalid TUid on construction
+*	- Setting invalid timeout for Recv
+*	Note: wrong bearer value has already been implemented as part of test 2
+*/
+	{
+	INFO_PRINTF1(_L("FullySpec-WDP: Wrong parameter values"));
+	if(TestStepResult() == EPass )
+		{
+		TInt error;
+		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
+			{
+			iExError2=error;
+			}
+		TInt trapValue;
+		TUid invalidInterfaceUid = {0x00000000}; 	
+		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
+		TRAP(trapValue, iImp = CWapFullySpecDatagramService::NewL(invalidInterfaceUid));
+		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;
+		if (verdict==EPass)
+			{
+			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
+			}
+		SetTestStepResult(verdict);
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWDPStep_8::CallStateMachine()
+	{
+	return KErrNone;
+	}
+
+CFullySpecWDPStep_9::~CFullySpecWDPStep_9() {}
+CFullySpecWDPStep_9::CFullySpecWDPStep_9() {}
+TVerdict CFullySpecWDPStep_9::doTestStepL()
+	{
+	return TestStepResult();
+	}
+TInt CFullySpecWDPStep_9::CallStateMachine()
+	{
+	return KErrNone;
+	}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWDPSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,142 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapFullySpecWDPSteps.h
+*/
+#if (!defined __FULLYSPECWDP_STEP_H__)
+#define __FULLYSPECWDP_STEP_H__
+#include <test/testexecutestepbase.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+
+#include "WapStackSuiteStepBase.h"
+
+_LIT(KFullySpecWDPStep_1,"FullySpecWDP_1");
+_LIT(KFullySpecWDPStep_2,"FullySpecWDP_2");
+_LIT(KFullySpecWDPStep_3,"FullySpecWDP_3");
+_LIT(KFullySpecWDPStep_4,"FullySpecWDP_4");
+_LIT(KFullySpecWDPStep_5,"FullySpecWDP_5");
+_LIT(KFullySpecWDPStep_6,"FullySpecWDP_6");
+_LIT(KFullySpecWDPStep_7,"FullySpecWDP_7");
+_LIT(KFullySpecWDPStep_8,"FullySpecWDP_8");
+_LIT(KFullySpecWDPStep_9,"FullySpecWDP_9");
+
+class CFullySpecWDPStepBase : public CWapStackSuiteStepBase
+{
+public:
+	~CFullySpecWDPStepBase();
+	void UnloadInterface();
+protected:
+	CFullySpecWDPStepBase();
+	CWapFullySpecDatagramService* LoadInterface();
+	CWapFullySpecDatagramService* iImp;
+};
+
+class CFullySpecWDPStep_1 : public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_1();
+	~CFullySpecWDPStep_1();
+	virtual TVerdict doTestStepL();
+private:
+	};
+
+class CFullySpecWDPStep_2 : public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_2();
+	~CFullySpecWDPStep_2();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_3 : public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_3();
+	~CFullySpecWDPStep_3();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_4 : public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_4();
+	~CFullySpecWDPStep_4();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_5: public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_5();
+	~CFullySpecWDPStep_5();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_6: public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_6();
+	~CFullySpecWDPStep_6();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_7: public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_7();
+	~CFullySpecWDPStep_7();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_8: public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_8();
+	~CFullySpecWDPStep_8();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWDPStep_9: public CFullySpecWDPStepBase
+	{
+public:
+	CFullySpecWDPStep_9();
+	~CFullySpecWDPStep_9();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWSPSteps.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,983 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "WapFullySpecWSPSteps.h"
+#include "WapStackSuiteDefs.h"
+#include <simtsy.h>
+#include <ecom/ecom.h>
+
+CFullySpecWSPStepBase::CFullySpecWSPStepBase()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWSPStepBase::~CFullySpecWSPStepBase()
+/**
+* Destructor
+*/
+	{
+	if(iImp) 
+		{
+		UnloadInterface();
+		}
+	}
+
+// Load CWapBoundDatagramService Interface 
+CWapFullySpecCLWSPService* CFullySpecWSPStepBase::LoadInterface()
+	{
+	TInt trapValue;
+	CWapFullySpecCLWSPService* implementation = NULL;
+	// UID {0x101FBB3E} - SWS implementation
+	TUid KInterfaceUid = {0x101FBB3E}; 	
+	INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), KInterfaceUid);
+	TRAP(trapValue, implementation = CWapFullySpecCLWSPService::NewL(KInterfaceUid));
+	if(!trapValue)
+		{
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), implementation);
+		return implementation;
+		}
+	else return NULL;
+	}
+
+void CFullySpecWSPStepBase::UnloadInterface()
+	{
+	INFO_PRINTF2(_L("Interface at implementation.addr = 0x%08x is deleted"), iImp);
+	delete iImp;
+	iImp = NULL;
+	REComSession::FinalClose();	
+	}
+
+CFullySpecWSPStep_1::~CFullySpecWSPStep_1()
+/**
+* Destructor
+*/
+	{
+	}
+
+CFullySpecWSPStep_1::CFullySpecWSPStep_1()
+/**
+* Constructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWSPStep_1::doTestStepL()
+/**
+* @return - TVerdict code
+* Override of base class pure virtual
+* Our implementation only gets called if the base class doTestStepPreambleL() did
+* not leave. That being the case, the current test result value will be EPass.
+*/
+	{
+	//
+	// CWapFullySpecCLWSPService
+	// 
+	INFO_PRINTF1(_L("CreateImplementation - CWapFullySpecCLWSPService"));
+	INFO_PRINTF1(_L("Calling old NewL() method"));
+	
+	TInt trapValue; 
+	
+	SetTestStepResult(EFail);
+	TRAP(trapValue, iImp = CWapFullySpecCLWSPService::NewL());
+	if(!trapValue)
+		{
+		// interface is loaded
+		INFO_PRINTF2(_L("Interface is loaded: implementation.addr = 0x%08x"), iImp);
+		UnloadInterface();
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			INFO_PRINTF1(_L("CreateImplementation - OK"));
+			SetTestStepResult(EPass);
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+CFullySpecWSPStep_2::CFullySpecWSPStep_2()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWSPStep_2::~CFullySpecWSPStep_2() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWSPStep_2::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-WSP: Testing Connect"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer	= 0;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			
+			if(UseSimTsy())
+				{
+				GetIntFromConfig(ConfigSection(), KWapSIMTSYState, iSimTsyState);
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, iSimTsyState));
+				}
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+			// Start state machine
+			StartScheduler();
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_2::CallStateMachine()
+	{
+	TInt err = KErrNone;
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(State())
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				if(iReconnect)
+					{ 
+					INFO_PRINTF1(_L("Reconnection"));
+					iControl->ReStart();
+					break;
+					}
+				}
+			SetState(EFinish);
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(GetLastError() == GetExpectedError()) 
+				{
+				SetTestStepResult(EPass);
+				}
+			else
+				{
+				SetTestStepResult(EFail);
+				}
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+CFullySpecWSPStep_3::CFullySpecWSPStep_3()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWSPStep_3::~CFullySpecWSPStep_3() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWSPStep_3::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FullySpecWSP. Requests without connection"));
+	// check preamble result
+	TVerdict verdict = TestStepResult();
+	if (verdict==EPass)
+		{
+		TInt err, ret;
+		iImp = LoadInterface();
+		if (!iImp)
+			{
+			ERR_PRINTF1(_L("Unable to load FullySpecWSP Interface"));
+			verdict = EFail;
+			}
+		else
+			{
+			GetIntFromConfig(ConfigSection(),KWapExError,(TInt&)iExError);
+			ShowConnectionInfo();
+			TBuf8<100> header, body;
+			TPckgBuf<TUint8> idPckg;
+			TWSPStatus wspStatus;
+			TRequestStatus reqStatus;
+			TUint32 timeout = 0;
+			ShowConnectionInfo();
+			iImp->MethodResult(header, body, idPckg, wspStatus, reqStatus, timeout);
+			TRAP(ret, TEST_CHECKL(reqStatus.Int(), iExError, _L("MethodResult Fails not as expected")))
+				if (ret) 
+					verdict = EFail;
+				else
+					{
+					Wap::TPort port;
+					err=iImp->GetLocalPort(port);
+					TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalPort Fails not as expected")))
+						if (ret)
+							verdict = EFail;
+						else
+							{
+							HBufC8* localHost;					
+							err=iImp->GetLocalAddress(localHost);
+							TRAP(ret, TEST_CHECKL(err, iExError, _L("GetLocalAddress Fails not as expected")))
+								if (ret) 
+									verdict = EFail;
+								else
+									{
+									TBuf<100> uri;
+									TUint8 id = 0;
+									err=iImp->MethodInvoke(0x40, uri, header, body, id);
+									TRAP(ret, TEST_CHECKL(err, iExError, _L("MethodInvoke Fails not as expected")))
+										if (ret) 
+											verdict = EFail;
+									}
+							}
+					}
+				UnloadInterface();
+			}
+		}
+	if (verdict==EPass)
+		{
+		INFO_PRINTF1(_L("FullySpecWSP. Requests Fail as expected"));
+		}
+	SetTestStepResult(verdict);
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_3::CallStateMachine()
+	{
+	return (0);
+	}
+
+CFullySpecWSPStep_4::CFullySpecWSPStep_4()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWSPStep_4::~CFullySpecWSPStep_4() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWSPStep_4::doTestStepL()
+/** 
+* Test Connect methoths 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-WSP: UnitInvoke-UnitResult"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			
+			TInt bearer, port, repeat, method;
+			TInt error = KErrNone;
+			TPtrC headers;
+			TPtrC body;
+			TPtrC uri;
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port)) iLocalPort = (Wap::TPort)port;
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error)) SetExpectedError(error);
+			if(GetIntFromConfig(ConfigSection(),KWapWSPMethod, method)) iMethod = method;
+			if(GetIntFromConfig(ConfigSection(), KWapRepeat, repeat)) iRepeat = repeat;
+			
+			if(!GetStringFromConfig(ConfigSection(),KWapURI, uri)) 
+				{
+				User::Leave(KErrNoMemory);
+				}
+			GetStringFromConfig(ConfigSection(),KWapWSPHeaders, headers);
+			GetStringFromConfig(ConfigSection(),KWapWSPBody, body);
+			
+			User::LeaveIfError(RProperty::Set(KUidSystemCategory, KUidPhonePwr.iUid, ESAPhoneOn));
+			
+			if(UseSimTsy())
+				{
+				User::LeaveIfError(RProperty::Set(KUidPSSimTsyCategory, KPSSimTsyTestNumber, 41));
+				}
+				
+			
+			iURI = HBufC16::NewL(uri.Length());
+			
+			iSendHeaders = HBufC8::NewL(headers.Length());
+			
+			iSendBody = HBufC8::NewL(body.Length());
+			
+			iRecvHeaders = HBufC8::NewL(KMaxWapWspHeaderBufferLength);
+			iRecvBody = HBufC8::NewL(KMaxWapWspDataBufferLength);
+
+			TPtr16 tmp16 = iURI->Des();
+			tmp16.Copy(uri);
+			TPtr8 tmp1 = iSendHeaders->Des();
+			tmp1.Copy(headers);
+			TPtr8 tmp2 = iSendBody->Des();
+			tmp2.Copy(body);
+
+			iRecvHeadersBuf.Set(iRecvHeaders->Des());
+			iRecvHeadersBuf.Zero();
+			iRecvBodyBuf.Set(iRecvBody->Des());
+			iRecvBodyBuf.Zero();
+			
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();
+
+			StartScheduler();
+			
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+
+			delete iSendBody;
+			iSendBody=NULL;
+			delete iSendHeaders;
+			iSendHeaders=NULL;
+			delete iURI;
+			iURI=NULL;
+
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_4::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	TPtr8 tmp = iSendBody->Des();
+		
+	static TUint total_headers = 0;		
+	static TUint total_body = 0;		
+	static TUint repeat = 0;		
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			total_headers = 0;
+			total_body = 0;
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				SetState(EUnitInvoke);
+				}
+			else
+				{
+				SetState(EFinish);
+				}
+			SetLastError(err);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			iControl->ReStart();
+			break;
+
+		case EUnitInvoke:
+			INFO_PRINTF2(_L("EUnitInvoke: Method - 0x%02x"), iMethod);
+			if(iBearer != Wap::EIP)
+			{
+				TRAP(err, WaitForInitializeL());
+			}
+			if(tmp.Length() != 0)
+				{
+				INFO_PRINTF1(_L("Data to send:"));
+				DumpBuf(tmp);
+				}
+			err = iImp->MethodInvoke(iMethod, iURI->Des(), iSendHeaders->Des(), iSendBody->Des(), iTransactionId);
+			INFO_PRINTF3(_L("MethodInvoke() retcode: - dec: %d hex: 0x%08x"), err, err);
+			if(err == KErrNone) 
+				{	
+				SetState(EUnitResult);
+				}
+			else 
+				{
+				SetState(EFinish);
+				}
+			SetLastError(err);
+			iControl->ReStart();
+			break;
+
+		case EUnitResult:
+
+			iRecvHeadersBuf.Set(iRecvHeaders->Des());
+			iRecvHeadersBuf.Zero();
+			iRecvBodyBuf.Set(iRecvBody->Des());
+			iRecvBodyBuf.Zero();
+			iImp->MethodResult(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, iWspStatus, *iStatus, iTimeout);
+			INFO_PRINTF2(_L("EUnitResult: status 0x%08x"), iStatus->Int());
+			activate = 1;
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			
+			INFO_PRINTF4(_L("EFinish: Status: %d, WSP status: %d (0x%02x)"), iStatus->Int(), iWspStatus, iWspStatus);
+
+			if(iRecvHeadersBuf.Length() != 0)
+				{
+				INFO_PRINTF1(_L("Headers"));
+				total_headers += iRecvHeadersBuf.Length();
+				DumpBuf(iRecvHeadersBuf);
+				}
+
+			if(iRecvBodyBuf.Length() != 0)
+				{
+				INFO_PRINTF1(_L("Body"));
+				total_body += iRecvBodyBuf.Length();
+				DumpBuf(iRecvBodyBuf);
+				}
+
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				if(iStatus->Int() == Wap::EMoreData)
+					{
+					INFO_PRINTF1(_L("NOTE: More data... calling MethodResult()"));
+					SetState(EUnitResult);
+					iControl->ReStart();
+					break;
+					}
+				}
+
+			INFO_PRINTF3(_L("Data received: headers - %d bytes, body - %d bytes"), total_headers, total_body);
+			total_headers = 0;
+			total_body = 0;
+			if((--iRepeat != 0) && (iStatus->Int() == KErrNone))
+				{
+				++repeat;
+				INFO_PRINTF2(_L("REPEAT TEST - %d"), repeat);
+				if(err == KErrNone) 
+					{	
+					SetState(EUnitInvoke);
+					iControl->ReStart();
+					break;
+					}
+				}
+
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+	return (activate);
+	}
+
+
+CFullySpecWSPStep_5::CFullySpecWSPStep_5()
+/**
+* Constructor
+*/
+	{
+	}
+
+CFullySpecWSPStep_5::~CFullySpecWSPStep_5() 
+/**
+* Destructor
+*/
+	{
+	}
+
+TVerdict CFullySpecWSPStep_5::doTestStepL()
+/** 
+* Test Cancel Request 
+* @return - TVerdict code
+* 
+*/
+	{
+	INFO_PRINTF1(_L("BoundCLPush. Testing Cancel Request"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			TInt bearer	= 0;
+			TInt error	= KErrNone;
+			TBool secure= EFalse;
+			TBool reconnect= EFalse;
+			SetLastError(KErrNone);
+			
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer)) iBearer = (Wap::TBearer)bearer;
+			if(GetIntFromConfig(ConfigSection(), KWapExError, error)) SetExpectedError(error);
+			if(GetBoolFromConfig(ConfigSection(), KWapSecure, secure)) iSecure = secure;
+			if(GetBoolFromConfig(ConfigSection(),_L("Reconnect"), reconnect)) iReconnect = reconnect;
+			
+			ShowConnectionInfo();			
+
+			error = iImp->Connect(iRemoteHost, iRemotePort, iBearer, iSecure);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+			if( error == KErrNone)
+				{
+				TBuf8<100> header, body;
+				TPckgBuf<TUint8> idPckg;
+				TWSPStatus wspStatus;
+				TRequestStatus reqStatus;
+				TUint32 timeout=0;
+				iImp->MethodResult(header, body, idPckg, wspStatus, reqStatus, timeout);
+				SetState(EUnitResult);
+				StartScheduler();
+				iControl->ReStart();
+				if(reqStatus==KErrCancel)
+					{
+					SetTestStepResult(EPass);
+					}
+				
+				}
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_5::CallStateMachine()
+	{
+	INFO_PRINTF2(_L("CallStateMachine: step [%d]"), State());
+	switch(iState)
+		{
+		case EUnitResult:
+			INFO_PRINTF1(_L("EUnitResult"));
+			iImp->CancelReq();
+			SetState(EFinish);
+			iControl->ReStart();
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(EFail);
+			StopScheduler();
+			break;
+		}
+	return (0);
+	}
+
+
+CFullySpecWSPStep_6::CFullySpecWSPStep_6() 
+	{
+	}
+
+CFullySpecWSPStep_6::~CFullySpecWSPStep_6()
+	{
+	}
+
+TVerdict CFullySpecWSPStep_6::doTestStepL()
+/*
+* Test receive time out
+*/
+	{
+	INFO_PRINTF1(_L("BOUND-WSP: Connect-UnitResult-TimeOut"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			TInt bearer, port;
+			TInt error = KErrNone;
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			TInt headerLength, bufLength, timeOut; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapTimeOut, timeOut))
+				{
+				iTimeout=timeOut;
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();						
+			// Start state machine
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_6::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+				//				WaitForInitializeL();
+				iRecvHeadersBuf.Set(iRecvHeaders->Des());
+				iRecvBodyBuf.Set(iRecvBody->Des());
+				iImp->MethodResult(iRecvHeadersBuf, iRecvBodyBuf, iTransactionIdPckg, iWspStatus, *iStatus, iTimeout);
+				INFO_PRINTF1(_L("MethodResult"));
+				activate = 1;
+				}
+			else
+				{
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			break;
+		}
+	return (activate);
+	}
+
+CFullySpecWSPStep_7::CFullySpecWSPStep_7() 
+	{
+	}
+CFullySpecWSPStep_7::~CFullySpecWSPStep_7()  
+	{
+	}
+TVerdict CFullySpecWSPStep_7::doTestStepL()
+	{
+	INFO_PRINTF1(_L("FULLYSPEC-WSP: Connect-UnitResult-TimeOut"));
+	if(TestStepResult() == EPass )
+		{
+		SetTestStepResult(EFail);
+		iImp = LoadInterface();
+		if(iImp)
+			{
+			SetLastError(KErrNone);
+			TInt bearer, port;
+			TInt error = KErrNone;
+			if(GetIntFromConfig(ConfigSection(),KWapBearer, bearer))
+				{
+				iBearer = static_cast<Wap::TBearer>(bearer);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapLocalPort, port))
+				{
+				iLocalPort = static_cast<Wap::TPort>(port);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapExError, error))
+				{
+				SetExpectedError(error);
+				}
+			TInt headerLength, bufLength; 
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvHeaderLength, headerLength))
+				{
+				iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+				}
+			if(GetIntFromConfig(ConfigSection(),KWapWSPRecvBodyLength, bufLength))
+				{
+				iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+				}
+			iRecvHeaders = HBufC8::NewL(iHeaderRecvBufLength);
+			iRecvBody = HBufC8::NewL(iBodyRecvBufLength);
+			SetState(EConnect);
+			iControl->ReStart();
+			ShowConnectionInfo();						
+
+			StartScheduler();
+			delete iRecvBody;
+			iRecvBody=NULL;
+			delete iRecvHeaders;
+			iRecvHeaders=NULL;
+			UnloadInterface();
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_7::CallStateMachine()
+	{
+	TVerdict verdict = EFail;
+	TInt err = KErrNone;
+	TInt activate = 0;
+	TDes8 headers = iRecvHeaders->Des();
+	TDes8 body = iRecvBody->Des();
+	
+	INFO_PRINTF2(_L("CallStateMachine: state [%d]"), State());
+	switch(iState)
+		{
+		case EConnect:
+			INFO_PRINTF1(_L("EConnect"));
+			err = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
+			INFO_PRINTF2(_L("Connection completed with code = %d"), err);
+			if( err == KErrNone)
+				{
+//				WaitForInitializeL();
+				TRequestStatus reqStatus;
+				iImp->MethodResult(headers, body, iTransactionIdPckg, iWspStatus, reqStatus, iTimeout);
+				iImp->MethodResult(headers, body, iTransactionIdPckg, iWspStatus, *iStatus, iTimeout);
+				INFO_PRINTF1(_L("MethodResult"));
+				activate = 1;
+				}
+			else
+				{
+				iControl->ReStart();
+				}
+			SetLastError(err);
+			SetState(EFinish);
+			break;
+			
+		case EFinish:
+			INFO_PRINTF1(_L("EFinish"));
+			if(iStatus->Int() != KErrNone) 
+				{
+				SetLastError(iStatus->Int());
+				}
+			verdict = (GetLastError() == GetExpectedError())?EPass:EFail;
+			SetTestStepResult(verdict);
+			SetState(EIdle);
+			StopScheduler();
+			break;
+			
+		case EIdle:
+		default:
+			INFO_PRINTF2(_L("Error: EIdle or unknown state %d"), State());
+			SetTestStepResult(verdict);
+			StopScheduler();
+			
+			break;
+		}
+	return (activate);
+	}
+
+CFullySpecWSPStep_8::CFullySpecWSPStep_8() 
+	{
+	}
+CFullySpecWSPStep_8::~CFullySpecWSPStep_8()  
+	{
+	}
+TVerdict CFullySpecWSPStep_8::doTestStepL()
+/*
+*	Using invalid values for API parameters:
+*	- Invalid TUid on construction
+*	- Invalid method for MethodInvoke
+*	- Invalid timeout for MethodResult
+*	Note: wrong bearer value has already been implemented as part of test 2
+*/
+	{
+	INFO_PRINTF1(_L("FullySpec-WSP: Wrong parameters testing"));
+	if(TestStepResult() == EPass )
+		{
+		TInt error;
+		if(GetIntFromConfig(ConfigSection(),KWapExError2, error))
+			{
+			iExError2=error;
+			}
+		TInt trapValue;
+		TUid invalidInterfaceUid = {0x00000000}; 	
+		INFO_PRINTF2(_L("Calling new NewL(0x%08X) method"), invalidInterfaceUid);
+		TRAP(trapValue, iImp = CWapFullySpecCLWSPService::NewL(invalidInterfaceUid));
+		TVerdict verdict = (trapValue == iExError2)?EPass:EFail;
+		if (verdict==EFail)
+			{
+			SetTestStepResult(EFail);
+			return TestStepResult();
+			}
+		else
+			{
+			INFO_PRINTF2(_L("CreateImplementation with wrong Uid- Failed as expected with error %d"),trapValue);
+			
+			// Now use the correct Uid
+			iImp = LoadInterface();
+			if(iImp)
+				{
+				SetLastError(KErrNone);
+				TInt error = KErrNone;
+				TInt method;
+				TPtrC headers;
+				TPtrC body;
+				TPtrC uri;
+				
+				if (GetIntFromConfig(ConfigSection(),KWapWSPMethod, method))
+					{
+					iMethod=method;
+					}
+				
+				if(GetIntFromConfig(ConfigSection(), KWapExError, error))
+					{
+					SetExpectedError(error);
+					}
+				
+				if(!GetStringFromConfig(ConfigSection(),KWapURI, uri) || \
+					!GetStringFromConfig(ConfigSection(),KWapWSPHeaders, headers) || \
+					!GetStringFromConfig(ConfigSection(),KWapWSPBody, body))
+					{
+					User::Leave(KErrNoMemory);
+					}
+				
+				iURI = HBufC16::NewL(uri.Length());
+				
+				iSendHeaders = HBufC8::NewL(headers.Length());
+				
+				iSendBody = HBufC8::NewL(body.Length());
+				
+				TPtr16 tmp16 = iURI->Des();
+				tmp16.Copy(uri);
+				TPtr8 tmp = iSendHeaders->Des();
+				tmp.Copy(headers);
+				TPtr8 tmp1 = iSendBody->Des();
+				tmp1.Copy(body);
+				
+				ShowConnectionInfo();						
+				error = iImp->Connect(iRemoteHost, iRemotePort, iBearer, EFalse);
+				INFO_PRINTF2(_L("Connection completed with code = %d"), error);
+				if( error == KErrNone)
+					{
+					error =iImp->MethodInvoke(iMethod, iURI->Des(), iSendHeaders->Des(), iSendBody->Des(), iTransactionId); 
+					}
+				TVerdict verdict = (error == GetExpectedError())?EPass:EFail;
+				SetTestStepResult(verdict);
+				delete iSendBody;
+				iSendBody=NULL;
+				delete iSendHeaders;
+				iSendHeaders=NULL;
+				delete iURI;
+				iURI=NULL;
+				UnloadInterface();
+				}
+			}
+		}
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_8::CallStateMachine()
+	{
+	return (0);
+	}
+
+CFullySpecWSPStep_9::CFullySpecWSPStep_9() {}
+CFullySpecWSPStep_9::~CFullySpecWSPStep_9()  {}
+TVerdict CFullySpecWSPStep_9::doTestStepL()
+	{
+	return TestStepResult();
+	}
+
+TInt CFullySpecWSPStep_9::CallStateMachine()
+	{
+	return (0);
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapFullySpecWSPSteps.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,139 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapFullySpecWSPSteps.h
+*/
+#if (!defined __FULLYSPECWSP_STEP_H__)
+#define __FULLYSPECWSP_STEP_H__
+#include <test/testexecutestepbase.h>
+#include <in_sock.h>
+#include <es_sock.h>
+#include <wapmessage.h>
+#include "WapStackSuiteStepBase.h"
+
+_LIT(KFullySpecWSPStep_1,"FullySpecWSP_1");
+_LIT(KFullySpecWSPStep_2,"FullySpecWSP_2");
+_LIT(KFullySpecWSPStep_3,"FullySpecWSP_3");
+_LIT(KFullySpecWSPStep_4,"FullySpecWSP_4");
+_LIT(KFullySpecWSPStep_5,"FullySpecWSP_5");
+_LIT(KFullySpecWSPStep_6,"FullySpecWSP_6");
+_LIT(KFullySpecWSPStep_7,"FullySpecWSP_7");
+_LIT(KFullySpecWSPStep_8,"FullySpecWSP_8");
+_LIT(KFullySpecWSPStep_9,"FullySpecWSP_9");
+
+class CFullySpecWSPStepBase : public CWapStackSuiteStepBase
+{
+public:
+	CFullySpecWSPStepBase();
+	~CFullySpecWSPStepBase();
+	CWapFullySpecCLWSPService* LoadInterface();
+	void UnloadInterface();
+protected:
+	CWapFullySpecCLWSPService* iImp;
+};
+
+
+class CFullySpecWSPStep_1 : public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_1();
+	~CFullySpecWSPStep_1();
+	virtual TVerdict doTestStepL();
+private:
+	};
+
+class CFullySpecWSPStep_2 : public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_2();
+	~CFullySpecWSPStep_2();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWSPStep_3: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_3();
+	~CFullySpecWSPStep_3();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWSPStep_4: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_4();
+	~CFullySpecWSPStep_4();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWSPStep_5: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_5();
+	~CFullySpecWSPStep_5();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+class CFullySpecWSPStep_6: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_6();
+	~CFullySpecWSPStep_6();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CFullySpecWSPStep_7: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_7();
+	~CFullySpecWSPStep_7();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CFullySpecWSPStep_8: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_8();
+	~CFullySpecWSPStep_8();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+class CFullySpecWSPStep_9: public CFullySpecWSPStepBase
+	{
+public:
+	CFullySpecWSPStep_9();
+	~CFullySpecWSPStep_9();
+	virtual TVerdict doTestStepL();
+	virtual TInt CallStateMachine();
+private:
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteDefs.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,96 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapStackSuiteDefs.h
+*/
+
+#include <es_wsms.h>
+#include <wapmsgerr.h>
+
+// Although Publish and Subscribe replaces System Agent, 
+// the UIDs we need are still defined by System Agent
+#include <sacls.h>
+
+_LIT(KWapCommonSec, "COMMON");
+
+_LIT(KWapBearer,"Bearer");
+_LIT(KWapRemoteHost,"Remote_Host");
+_LIT(KWapRemotePort,"Remote_Port");
+_LIT(KWapLocalHost,"Local_Host");
+_LIT(KWapLocalPort,"Local_Port");
+_LIT(KLocalPort,"LocalPort");
+_LIT(KRemotePort,"RemotePort");
+_LIT(KWapExError, "ExError");
+_LIT(KWapExError2, "ExError2");
+_LIT(KWapReconnect, "Reconnect");
+_LIT(KWapSecure, "Secure");
+_LIT(KWapRepeat, "Repeat");
+_LIT(KWapData, "Data");
+_LIT(KWapDataType, "Type");
+_LIT(KWapUseSIMTSY, "SimTsy");
+_LIT(KWapDetailedLogging, "DetailedLogging");
+_LIT(KWapDelayPortClosure, "DelayPortClosure");
+_LIT(KWapSIMTSYState, "TsyState");
+_LIT(KWapTimeOut, "TimeOut");
+_LIT(KWapWdpBufLength, "WDPBufLength");
+_LIT(KAwaitLengthCancel, "AwaitLengthCancel");
+_LIT(KMiddleCancel, "MiddleCancel");
+_LIT(KMultiReadCancel, "MultiReadCancel");
+_LIT(KAwaitLengthTwice, "AwaitLengthTwice");
+// WSP 
+_LIT(KWapWSPMethod, "WSPMethod");
+_LIT(KWapWSPHeaders, "WSPHeaders");
+_LIT(KWapWSPBody, "WSPBody");
+_LIT(KWapURI, "WSPURI");
+_LIT(KWapWSPRecvHeaderLength, "WSPHeaderLength");
+_LIT(KWapWSPRecvBodyLength, "WSPBodyLength");
+
+_LIT(KWapWDPStackSuiteLogFile,"WapWDPLog");
+_LIT(KWapPushStackSuiteLogFile,"WapPushLog");
+_LIT(KWapWSPStackSuiteLogFile,"WapWSPLog");
+
+
+_LIT(KWapStartC32,"StartC32");
+
+// For test step panics
+_LIT(KWapStackSuitePanic,"WapStackSuite");
+enum TWapSuitePanicCodes{EDataCorrupt = 1};
+
+// Port for the echo server
+// Could be read from the ini file
+const TInt KEchoPort = 7;
+
+//////////////////////////////////////////////////////////////////////////////
+// Wap Address / Port Settings
+//////////////////////////////////////////////////////////////////////////////
+/*
+	EWapPortUnspecified = -1,  // Unspecified
+	EWapPortWsp         = 9200,  // Connectionless session protocol
+	EWapPortWspWtp      = 9201,  // Connection oriented session protocol
+	EWapPortWspWtls     = 9202,  // Secure connectionless session protocol
+	EWapPortWspWtpWtls  = 9203,  // Secure connection oriented session protocol
+	EWapPortVCard       = 9204,  // vCard
+	EWapPortVCardWtls   = 9206,  // Secure vCard
+	EWapPortVCal        = 9205,  // vCal
+	EWapPortVCalWtls    = 9207   // Secure vCal
+	};
+*/
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteServer.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,236 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// WAP stack test suite server
+// 
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+// Include your own server header file and step header file(s) here
+#include "WapStackSuiteServer.h"
+
+#include "WapBoundWDPSteps.h"
+#include "WapBoundCLPushSteps.h"
+#include "WapBoundWSPSteps.h"
+#include "WapFullySpecCLPushSteps.h"
+#include "WapFullySpecWDPSteps.h"
+#include "WapFullySpecWSPSteps.h"
+#include <ecom/ecom.h>
+
+_LIT(KServerName,"WapStackSuite");
+CWapStackSuite* CWapStackSuite::NewL()
+/**
+ * @return - Instance of the test server
+ * Same code for Secure and non-secure variants
+ * Called inside the MainL() function to create and start the
+ * CTestServer derived server.
+ */
+	{
+	CWapStackSuite * server = new (ELeave) CWapStackSuite();
+	CleanupStack::PushL(server);
+	// CServer base class call
+	server->StartL(KServerName);
+	CleanupStack::Pop(server);
+	return server;
+	}
+
+
+
+LOCAL_C void MainL()
+	{
+#if (defined __DATA_CAGING__)
+	RProcess().DataCaging(RProcess::EDataCagingOn);
+	RProcess().SecureApi(RProcess::ESecureApiOn);
+#endif
+	CActiveScheduler* sched=NULL;
+	sched=new(ELeave) CActiveScheduler;
+	CActiveScheduler::Install(sched);
+	CWapStackSuite* server = NULL;
+	// Create the CTestServer derived server
+	TRAPD(err,server = CWapStackSuite::NewL());
+	if(!err)
+		{
+		// Sync with the client and enter the active scheduler
+		RProcess::Rendezvous(KErrNone);
+		sched->Start();
+		}
+	delete server;
+	delete sched;
+	}
+
+
+
+GLDEF_C TInt E32Main()
+/**
+ * @return - Standard Epoc error code on process exit
+ * Secure variant only
+ * Process entry point. Called by client using RProcess API
+ */
+	{
+	__UHEAP_MARK;
+	CTrapCleanup* cleanup = CTrapCleanup::New();
+	if(cleanup == NULL)
+		{
+		return KErrNoMemory;
+		}
+	TRAPD(err,MainL());
+	delete cleanup;
+	__UHEAP_MARKEND;
+	return err;
+    }
+
+CTestStep* CWapStackSuite::CreateTestStep(const TDesC& aStepName)
+/**
+ * @return - A CTestStep derived instance
+ * Secure and non-secure variants
+ * Implementation of CTestServer pure virtual
+ */
+	{
+	CTestStep* testStep = NULL;
+	// Creating your own test steps here
+	//*************************************
+	// BOUND connection tests
+	//*************************************
+
+	// Bound WDP steps [1 - 9]
+	if(aStepName == KBoundWDPStep_1) 
+		testStep = new CBoundWDPStep_1();
+	else if(aStepName == KBoundWDPStep_2) 
+		testStep = new CBoundWDPStep_2();
+	else if(aStepName == KBoundWDPStep_3) 
+		testStep = new CBoundWDPStep_3();
+	else if(aStepName == KBoundWDPStep_4) 
+		testStep = new CBoundWDPStep_4();
+	else if(aStepName == KBoundWDPStep_5) 
+		testStep = new CBoundWDPStep_5();
+	else if(aStepName == KBoundWDPStep_6) 
+		testStep = new CBoundWDPStep_6();
+	else if(aStepName == KBoundWDPStep_7) 
+		testStep = new CBoundWDPStep_7();
+	else if(aStepName == KBoundWDPStep_8) 
+		testStep = new CBoundWDPStep_8();
+	else if(aStepName == KBoundWDPStep_9) 
+		testStep = new CBoundWDPStep_9();
+	else if(aStepName == KBoundWDPStep_OutOfMemory) 
+		testStep = new CBoundWDPStep_OutOfMemory();
+
+	// Bound Push tests [1 - 9]
+	else if(aStepName == KBoundCLPushStep_1) 
+		testStep = new CBoundCLPushStep_1();
+	else if(aStepName == KBoundCLPushStep_2) 
+		testStep = new CBoundCLPushStep_2();
+	else if(aStepName == KBoundCLPushStep_3) 
+		testStep = new CBoundCLPushStep_3();
+	else if(aStepName == KBoundCLPushStep_4) 
+		testStep = new CBoundCLPushStep_4();
+	else if(aStepName == KBoundCLPushStep_5) 
+		testStep = new CBoundCLPushStep_5();
+	else if(aStepName == KBoundCLPushStep_6) 
+		testStep = new CBoundCLPushStep_6();
+	else if(aStepName == KBoundCLPushStep_7) 
+		testStep = new CBoundCLPushStep_7();
+	else if(aStepName == KBoundCLPushStep_8) 
+		testStep = new CBoundCLPushStep_8();
+	else if(aStepName == KBoundCLPushStep_9) 
+		testStep = new CBoundCLPushStep_9();
+	
+	// Bound WSP tests [1 - 9]
+	else if(aStepName == KBoundWSPStep_1) 
+		testStep = new CBoundWSPStep_1();
+	else if(aStepName == KBoundWSPStep_2) 
+		testStep = new CBoundWSPStep_2();
+	else if(aStepName == KBoundWSPStep_3) 
+		testStep = new CBoundWSPStep_3();
+	else if(aStepName == KBoundWSPStep_4) 
+		testStep = new CBoundWSPStep_4();
+	else if(aStepName == KBoundWSPStep_5) 
+		testStep = new CBoundWSPStep_5();
+	else if(aStepName == KBoundWSPStep_6) 
+		testStep = new CBoundWSPStep_6();
+	else if(aStepName == KBoundWSPStep_7) 
+		testStep = new CBoundWSPStep_7();
+	else if(aStepName == KBoundWSPStep_8) 
+		testStep = new CBoundWSPStep_8();
+	else if(aStepName == KBoundWSPStep_9) 
+		testStep = new CBoundWSPStep_9();
+
+	//*************************************
+	// FULLY SPECIFIED connection tests
+	//*************************************
+
+	// Fully spec. WDP [1 - 9
+	else if(aStepName == KFullySpecWDPStep_1) 
+		testStep = new CFullySpecWDPStep_1();
+	else if(aStepName == KFullySpecWDPStep_2) 
+		testStep = new CFullySpecWDPStep_2();
+	else if(aStepName == KFullySpecWDPStep_3) 
+		testStep = new CFullySpecWDPStep_3();
+	else if(aStepName == KFullySpecWDPStep_4) 
+		testStep = new CFullySpecWDPStep_4();
+	else if(aStepName == KFullySpecWDPStep_5) 
+		testStep = new CFullySpecWDPStep_5();
+	else if(aStepName == KFullySpecWDPStep_6) 
+		testStep = new CFullySpecWDPStep_6();
+	else if(aStepName == KFullySpecWDPStep_7) 
+		testStep = new CFullySpecWDPStep_7();
+	else if(aStepName == KFullySpecWDPStep_8) 
+		testStep = new CFullySpecWDPStep_8();
+	else if(aStepName == KFullySpecWDPStep_9) 
+		testStep = new CFullySpecWDPStep_9();
+	
+	// Fully spec. Push [1 - 9]
+	else if(aStepName == KFullySpecCLPushStep_1) 
+		testStep = new CFullySpecCLPushStep_1();
+	else if(aStepName == KFullySpecCLPushStep_2) 
+		testStep = new CFullySpecCLPushStep_2();
+	else if(aStepName == KFullySpecCLPushStep_3) 
+		testStep = new CFullySpecCLPushStep_3();
+	else if(aStepName == KFullySpecCLPushStep_4) 
+		testStep = new CFullySpecCLPushStep_4();
+	else if(aStepName == KFullySpecCLPushStep_5) 
+		testStep = new CFullySpecCLPushStep_5();
+	else if(aStepName == KFullySpecCLPushStep_6) 
+		testStep = new CFullySpecCLPushStep_6();
+	else if(aStepName == KFullySpecCLPushStep_7) 
+		testStep = new CFullySpecCLPushStep_7();
+	else if(aStepName == KFullySpecCLPushStep_8) 
+		testStep = new CFullySpecCLPushStep_8();
+	else if(aStepName == KFullySpecCLPushStep_9) 
+		testStep = new CFullySpecCLPushStep_9();
+
+	// Fully spec. WSP [1 - 9]
+	else if(aStepName == KFullySpecWSPStep_1) 
+		testStep = new CFullySpecWSPStep_1();
+	else if(aStepName == KFullySpecWSPStep_2) 
+		testStep = new CFullySpecWSPStep_2();
+	else if(aStepName == KFullySpecWSPStep_3) 
+		testStep = new CFullySpecWSPStep_3();
+	else if(aStepName == KFullySpecWSPStep_4) 
+		testStep = new CFullySpecWSPStep_4();
+	else if(aStepName == KFullySpecWSPStep_5) 
+		testStep = new CFullySpecWSPStep_5();
+	else if(aStepName == KFullySpecWSPStep_6) 
+		testStep = new CFullySpecWSPStep_6();
+	else if(aStepName == KFullySpecWSPStep_7)
+		testStep = new CFullySpecWSPStep_7();
+	else if(aStepName == KFullySpecWSPStep_8) 
+		testStep = new CFullySpecWSPStep_8();
+	else if(aStepName == KFullySpecWSPStep_9) 
+		testStep = new CFullySpecWSPStep_9();
+
+	return testStep;
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteServer.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,38 @@
+/**
+* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapStackSuiteServer.h
+*/
+
+#if (!defined __WAPSTACK_SUITE_SERVER_H__)
+#define __WAPSTACK_SUITE_SERVER_H__
+#include <test/testexecuteserverbase.h>
+
+class CWapStackSuite : public CTestServer
+	{
+public:
+	IMPORT_C TInt NewServer();
+	static CWapStackSuite* NewL();
+	// Base class pure virtual override
+	virtual CTestStep* CreateTestStep(const TDesC& aStepName);
+private:
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteStepBase.cpp	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,410 @@
+// Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include <c32comm.h>
+#include <etel.h>
+#include <wapmessage.h>
+#include <simtsy.h>
+#include "WapStackSuiteDefs.h"
+#include "WapStackSuiteStepBase.h"
+
+CWapStackSuiteStepBase::CWapStackSuiteStepBase() : iLenBuffer(0), iLength(iLenBuffer), iRecvBuf(0,0), iRecvHeadersBuf(0,0), iRecvBodyBuf(0,0)
+	{
+	SetTestStepName(KWapWDPStackSuiteLogFile);
+	iSendBuffPtr = NULL;
+	iRecvBuffPtr = NULL;
+	iRecvHeaders = NULL; 
+	iRecvBody = NULL;
+	iURI = NULL;
+	iSendHeaders = NULL;
+	iSendBody = NULL;
+	}
+
+CWapStackSuiteStepBase::~CWapStackSuiteStepBase()
+	{
+	if(iSendBuffPtr) delete iSendBuffPtr;
+	if(iRecvBuffPtr) delete iRecvBuffPtr;
+	if(iRecvHeaders) delete iRecvHeaders;
+	if(iRecvBody) delete iRecvBody;
+	if(iURI) delete iURI;
+	if(iSendHeaders) delete iSendHeaders;
+	if(iSendBody) delete iSendBody;
+	}
+
+TVerdict CWapStackSuiteStepBase::doTestStepPreambleL()
+/**
+* @return - TVerdict
+* Implementation of CTestStep base class virtual
+* Load serial drivers
+* Do all initialisation common to derived classes in here.
+*/
+	{
+	__UHEAP_MARK;
+	TInt err = KErrNone;
+	CActiveScheduler* sheduler;
+	sheduler = new(ELeave) CActiveScheduler;
+	CActiveScheduler::Install(sheduler);
+	SetScheduler(sheduler);
+
+	iControl = CActiveControl::NewL(this);
+	sheduler->Add(iControl);
+	iStatus = iControl->Status();
+
+
+	err=User::LoadPhysicalDevice(PDD_NAME);
+    if (err!=KErrNone && err!=KErrAlreadyExists) User::Leave(err);
+
+    err=User::LoadLogicalDevice(LDD_NAME );
+    if (err!=KErrNone && err!=KErrAlreadyExists) User::Leave(err);
+
+	TBool startC32 = ETrue;
+	GetBoolFromConfig(ConfigSection(),KWapStartC32, startC32);
+	if(startC32)
+	{
+		_LIT(KPhbkSyncCMI, "phbsync.cmi");
+		err = StartC32WithCMISuppressions(KPhbkSyncCMI);
+		ERR_PRINTF2(TRefByValue<const TDesC>(_L("Start Comms Process Status = %d\n")), err);
+		if(err!=KErrNone && err!=KErrAlreadyExists)
+		    {
+		    User::Leave(err);
+			}
+	    }
+
+	LoadConfig();
+
+    SetTestStepResult(EPass);
+	return TestStepResult();
+	}
+
+TVerdict CWapStackSuiteStepBase::doTestStepPostambleL()
+	{
+
+	delete iControl;
+	iControl = NULL;
+	delete Scheduler();
+	if(iSendBuffPtr) delete iSendBuffPtr;
+	iSendBuffPtr = NULL;
+	if(iRecvBuffPtr) delete iRecvBuffPtr;
+	iRecvBuffPtr = NULL;
+	__UHEAP_MARKEND;
+	return TestStepResult();
+	}
+
+void CWapStackSuiteStepBase::LoadConfig()
+	{
+	TPtrC16 remote_host, local_host;
+
+	GetIntFromConfig(KWapCommonSec, KWapBearer, (TInt&)iBearer);
+	if(GetStringFromConfig(KWapCommonSec, KWapRemoteHost, remote_host))
+		{
+		iRemoteHost.Copy(remote_host);
+		}
+	if(GetStringFromConfig(KWapCommonSec, KWapLocalHost, local_host))
+		{
+		iLocalHost.Copy(local_host);
+		}
+	TInt remote, local, timeOut;
+	if(GetIntFromConfig(KWapCommonSec, KWapRemotePort, remote))
+		{
+		iRemotePort = static_cast<Wap::TPort>(remote);
+		}
+	if(GetIntFromConfig(KWapCommonSec, KWapLocalPort, local))
+		{
+		iLocalPort = static_cast<Wap::TPort>(local);
+		}
+	if(GetIntFromConfig(KWapCommonSec,KWapTimeOut, timeOut))
+		{
+		iTimeout=timeOut;
+		}
+	TInt headerLength, bufLength, bufLen, method; 
+	if(GetIntFromConfig(KWapCommonSec,KWapWSPRecvHeaderLength, headerLength))
+		{
+		iHeaderRecvBufLength=static_cast<TUint16>(headerLength);
+		}
+	if(GetIntFromConfig(KWapCommonSec,KWapWSPRecvBodyLength, bufLength))
+		{
+		iBodyRecvBufLength=static_cast<TUint16>(bufLength);
+		}
+	if(GetIntFromConfig(KWapCommonSec,KWapWdpBufLength, bufLen))
+		{
+		iWdpRecvBufLength=static_cast<TUint16>(bufLen);
+		}
+	if(GetIntFromConfig(KWapCommonSec,KWapWSPMethod, method))
+		{
+		iMethod = static_cast<TUint16>(method);
+		}
+	else
+		{
+		iMethod = 64; // default method GET
+		}
+	GetIntFromConfig(KWapCommonSec, KWapExError, iExError);
+	if(!GetIntFromConfig(KWapCommonSec, KWapRepeat, iRepeat))
+		{
+		iRepeat = 1;
+		};
+
+	GetIntFromConfig(KWapCommonSec, KWapExError2, iExError2);
+	GetBoolFromConfig(KWapCommonSec, KWapUseSIMTSY, iUseSIMTSY);
+	GetBoolFromConfig(KWapCommonSec, KWapDetailedLogging, iDetailedLogging);
+	GetBoolFromConfig(KWapCommonSec, KAwaitLengthCancel, iAwaitLengthCancel);
+	GetBoolFromConfig(KWapCommonSec, KMiddleCancel, iMiddleCancel);
+	GetBoolFromConfig(KWapCommonSec, KMultiReadCancel, iMultiReadCancel);
+	GetBoolFromConfig(KWapCommonSec, KAwaitLengthTwice, iAwaitLengthTwice);
+	GetBoolFromConfig(KWapCommonSec, KWapDelayPortClosure, iDelayPortClosure);
+	GetIntFromConfig(KWapCommonSec,KWapSIMTSYState, iSimTsyState);
+	
+	TInt result;
+	// if using SIMTSY, we need to define the test number property
+	// since we set the test number before loading SIMTSY
+	if (iUseSIMTSY)
+		{
+		result = RProperty::Define(KUidPSSimTsyCategory, KPSSimTsyTestNumber, RProperty::EInt);
+		__ASSERT_ALWAYS(result == KErrNone || result == KErrAlreadyExists,User::Panic(KWapStackSuitePanic, EDataCorrupt));
+		}
+
+	// Phone power property, normally defined by UIKON, is not defined by any
+	// startup code in console builds - we're on our own with this one.
+	result = RProperty::Define(KUidSystemCategory, KUidPhonePwr.iUid, RProperty::EInt);
+	__ASSERT_ALWAYS(result == KErrNone || result == KErrAlreadyExists,User::Panic(KWapStackSuitePanic, EDataCorrupt));
+
+	}
+
+TInt CWapStackSuiteStepBase::CallStateMachine()
+	{
+	return (0);
+	}
+
+void CWapStackSuiteStepBase::StartScheduler()
+	{
+	INFO_PRINTF1(_L("Star Scheduler"));
+	CActiveScheduler::Start();
+	}
+
+void CWapStackSuiteStepBase::StopScheduler()
+	{
+	INFO_PRINTF1(_L("Stop Scheduler"));
+	CActiveScheduler::Stop();
+	}
+
+void CWapStackSuiteStepBase::WaitForInitializeL()
+	{
+	_LIT(KMMTSY,"MM");
+	_LIT(KSIMTSY,"SIM");
+
+	TName tsy;
+	
+	if(UseSimTsy())
+		{
+		tsy=KSIMTSY;
+		}
+	else
+		{
+		tsy = KMMTSY;
+		}
+
+	RTelServer serverT;
+	User::LeaveIfError(serverT.Connect());
+	CleanupClosePushL(serverT);
+	User::LeaveIfError(serverT.LoadPhoneModule(tsy));
+	INFO_PRINTF2(_L("%S TSY loaded"), &tsy);
+
+	// Find the phone corresponding to this TSY and open a number of handles on it
+	TInt numPhones;
+	User::LeaveIfError(serverT.EnumeratePhones(numPhones));
+	RPhone phone;
+	while (numPhones--)
+		{
+		TName phoneTsy;
+		User::LeaveIfError(serverT.GetTsyName(numPhones,phoneTsy));
+		if (phoneTsy.CompareF(tsy)==KErrNone)
+			{
+			RTelServer::TPhoneInfo info;
+			User::LeaveIfError(serverT.GetPhoneInfo(numPhones,info));
+			User::LeaveIfError(phone.Open(serverT,info.iName));
+			CleanupClosePushL(phone);
+			const TInt err = phone.Initialise();
+			User::LeaveIfError(err);
+			CleanupStack::PopAndDestroy(&phone);
+			break;
+			}
+		}
+	CleanupStack::PopAndDestroy(&serverT);
+	}
+
+void CWapStackSuiteStepBase::DumpBuf(const TDesC8& aBuf)
+	{
+	if(!DetailedLogging()) return;
+	TBuf16<100> dumpbuf;
+	TInt totLen = aBuf.Length();
+
+	INFO_PRINTF1(_L("-------------------------------------------------------------------------"));
+	INFO_PRINTF2(_L("Buffer: %d bytes"), totLen);
+	INFO_PRINTF1(_L("-------------------------------------------------------------------------"));
+
+	for (TInt i = 0; i < totLen; i += 16)
+		{
+		dumpbuf.FillZ(100);
+		dumpbuf.Zero();
+		dumpbuf.AppendFormat(_L("%04x  "),i);
+		TInt j = 0;
+		TInt thisRow = Min(16,totLen - j - i);
+		for (j = 0; j < 16; j++)
+			{
+			if (j < thisRow)
+				{
+				TText8 chr = aBuf[i + j];
+				dumpbuf.AppendFormat(_L("%02x "),chr);
+				}
+			else
+				dumpbuf.AppendFormat(_L("   "));
+			}
+		dumpbuf.AppendFormat(_L("   "));
+		for (j = 0; j < thisRow; j++)
+			{
+			TText8 chr = aBuf[i + j];
+			TChar c(chr);
+			if (!c.IsPrint())
+				{
+					chr='.';
+				}
+			// NOTE: "<" & ">" are HTML tags (change to "[" & "]")
+			if((chr == '<') || (chr == '>'))
+				{ 
+				chr+=31;
+				}
+				dumpbuf.AppendFormat(_L("%c"),chr);
+			}
+		INFO_PRINTF2(_L("%s"), dumpbuf.Ptr());
+		}
+	INFO_PRINTF1(_L("-------------------------------------------------------------------------"));
+	}
+
+void CWapStackSuiteStepBase::ShowConnectionInfo()
+{
+	if(!DetailedLogging()) return;
+
+	TBuf16<WAP_MAX_HOST_NAME> host;
+	TBuf16<100> infostr;
+
+	INFO_PRINTF1(_L("-------------------------------------------------------------------------"));
+	INFO_PRINTF1(_L("Connection Info:"));
+	INFO_PRINTF1(_L("-------------------------------------------------------------------------"));
+
+	infostr.FillZ(100);
+	switch(iBearer)
+	{
+	case Wap::EAll: infostr.Copy(_L("EAll"));
+		break;
+	case Wap::EIP: infostr.Copy(_L("EIP"));
+		break;
+	case Wap::ESMS7: infostr.Copy(_L("ESMS7"));
+		break;
+	case Wap::ESMS: infostr.Copy(_L("ESMS"));
+		break;
+	case Wap::EWAPSMS7: infostr.Copy(_L("EWAPSMS7"));
+		break;
+	case Wap::EWAPSMS: infostr.Copy(_L("EWAPSMS"));
+		break;
+	default:
+		break;
+	}
+
+	INFO_PRINTF2(_L("Bearer      : %s"), infostr.Ptr());
+	host.FillZ(WAP_MAX_HOST_NAME);
+	host.Copy(iRemoteHost);
+	INFO_PRINTF2(_L("Remote Host : %s"), host.Ptr());
+	INFO_PRINTF2(_L("Remote Port : %d"),iRemotePort);
+	host.FillZ(100);
+	host.Copy(iLocalHost);
+	INFO_PRINTF2(_L("Local Host  : %s"), host.Ptr());
+	INFO_PRINTF2(_L("Local Port  : %d"), iLocalPort);
+	infostr.FillZ(100);
+	switch(iSecure)
+	{
+	case ETrue: infostr.Copy(_L("TRUE"));
+		break;
+	case EFalse: infostr.Copy(_L("FALSE"));
+		break;
+	default:
+		break;
+	}
+	INFO_PRINTF2(_L("Secure      : %s"), infostr.Ptr());
+	infostr.FillZ(100);
+	switch(iReconnect)
+	{
+	case ETrue: infostr.Copy(_L("TRUE"));
+		break;
+	case EFalse: infostr.Copy(_L("FALSE"));
+		break;
+	default:
+		break;
+	}
+	INFO_PRINTF2(_L("Timeout     : %d"), iTimeout);
+	INFO_PRINTF2(_L("Reconnect   : %s"), infostr.Ptr());
+	INFO_PRINTF2(_L("ExitCode    : %d"), iExError);
+	INFO_PRINTF2(_L("Repeat      : %d"), iRepeat);
+
+	INFO_PRINTF1(_L("-------------------------------------------------------------------------"));
+}
+
+/**
+	Active controller
+*/
+CActiveControl* CActiveControl::NewL(MControlNotify* aControl)
+	{
+	CActiveControl* self = new(ELeave) CActiveControl(aControl);
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop();
+	return self;
+	}
+
+void CActiveControl::ConstructL()
+	{
+	}
+
+CActiveControl::CActiveControl(MControlNotify* aControl)
+: CActive(EPriorityStandard)
+	{
+	iControl = aControl;
+	}
+
+CActiveControl::~CActiveControl()
+	{
+	}
+
+void CActiveControl::ReStart()
+	{
+	TRequestStatus* status = &iStatus;
+	SetActive();
+	User::RequestComplete(status, KErrNone);
+	}
+
+void CActiveControl::RunL()
+	{
+	if(iControl->CallStateMachine())
+		{
+			SetActive();
+		}
+	}
+
+void CActiveControl::DoCancel()
+	{
+	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/src/WapStackSuiteStepBase.h	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,167 @@
+/**
+* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+
+/**
+ @file WapStackSuiteStepBase.h
+*/
+
+#if (!defined __WAPSTACK_SUITE_STEP_BASE__)
+#define __WAPSTACK_SUITE_STEP_BASE__
+#include <test/testexecutestepbase.h>
+#include <es_wsms.h>
+
+#define WAP_MAX_HOST_NAME 128
+
+#if defined (__WINS__)
+#define PDD_NAME _L("ECDRV")
+#define PDD_NAME2 _L("ECDRV")
+#define LDD_NAME _L("ECOMM")
+#else
+#define PDD_NAME _L("EUART1")
+#define LDD_NAME _L("ECOMM")
+#endif
+
+typedef enum
+	{
+	EIdle,
+	EConnect,
+	ESend,
+	EAwaitSize,
+	EReceive,
+	EMutipleReceive,
+	EAwaitPush,
+	EUnitInvoke,
+	EUnitResult,
+	EFinish,
+	EAbortTest
+	} TWapStep;
+const TUint KMaxWapWdpPduBufferLength=1080;
+const TUint KMaxWapWspHeaderBufferLength=256;
+const TUint KMaxWapWspDataBufferLength=1080;
+class MControlNotify
+{
+public:
+	virtual TInt CallStateMachine() = 0;
+};
+
+class CActiveControl : public CActive
+{
+public:
+	static CActiveControl* NewL(MControlNotify* aControl);
+	CActiveControl(MControlNotify* aControl);
+	~CActiveControl();
+	void ConstructL();
+	virtual void RunL();
+	virtual void DoCancel();
+	virtual void ReStart();
+	inline TRequestStatus* Status() {return &iStatus;}
+public:
+	MControlNotify* iControl;
+};
+
+class CWapStackSuiteStepBase : public CTestStep, public MControlNotify
+	{
+public:
+	CWapStackSuiteStepBase();
+	virtual ~CWapStackSuiteStepBase();
+	virtual TVerdict doTestStepPreambleL();
+	virtual TVerdict doTestStepPostambleL();
+	virtual TInt CallStateMachine();
+	void StartScheduler();
+	void StopScheduler();
+	void WaitForInitializeL();
+	inline void SetScheduler(CActiveScheduler* aScheduler) {iScheduler = aScheduler;}
+	inline CActiveScheduler* Scheduler() {return iScheduler;}
+	inline void SetState(TWapStep aState) { iState = aState; }
+	inline TWapStep State() { return iState; }
+	inline void SetLastError(TInt aError) { iLastError = aError; }
+	inline TInt GetLastError() { return iLastError; }
+	inline void SetExpectedError(TInt aError) {iExError = aError; }
+	inline TInt GetExpectedError() { return iExError; }
+	inline TBool UseSimTsy() { return iUseSIMTSY; }
+	inline TBool DetailedLogging() { return iDetailedLogging; }
+	void LoadConfig();
+	void DumpBuf(const TDesC8& aBuf);
+	void ShowConnectionInfo();
+protected:
+	CActiveControl* iControl;
+	TWapStep iState;
+	TRequestStatus* iStatus;
+
+	//Predefined value in .ini file
+	TInt iExError;
+	TInt iExError2;
+	TInt iRepeat;
+	TUint32 iTimeout;
+	TBool iSecure;
+	TBool iReconnect;
+	TBool iUseSIMTSY;
+	TBool iAwaitLengthCancel;
+	TBool iMiddleCancel;
+	TBool iMultiReadCancel;
+	TBool iAwaitLengthTwice;
+	TBool iDetailedLogging;
+	TBool iDelayPortClosure;
+	TInt iSimTsyState;
+	TUint16 iWdpRecvBufLength;
+	TUint16 iHeaderRecvBufLength;
+	TUint16 iBodyRecvBufLength;
+	Wap::TBearer iBearer;
+	Wap::TPort iLocalPort;
+	Wap::TPort iRemotePort;
+	TBuf8<WAP_MAX_HOST_NAME> iRemoteHost;
+	TBuf8<WAP_MAX_HOST_NAME> iLocalHost;
+	TInetAddr iRemoteAddr;
+	TInetAddr iLocalAddr;
+	TInt iRmtPort;
+	TInt iLclPort;	
+	//For WDP sending and receiving
+	HBufC8* iSendBuffPtr;
+	HBufC8* iRecvBuffPtr;
+	TUint16 iLenBuffer;
+	TPckg<TUint16> iLength;
+	TPtr8 iRecvBuf;
+	TBool iTruncated;
+	Wap::TPort iRecvRemotePort;
+	TBuf8<WAP_MAX_HOST_NAME> iRecvRemoteHost;
+	TBuf8<KMaxWapWdpPduBufferLength> iMaxWdpRecvBuffer;
+
+
+	//For both WSP Sending;
+	TUint8 iTransactionId;
+	TUint iMethod;
+	HBufC16* iURI;
+	HBufC8* iSendHeaders;
+	HBufC8* iSendBody;
+
+	//For WSP Receiving and Push
+	TPckgBuf<TUint8> iTransactionIdPckg;
+	TWSPStatus iWspStatus;
+	HBufC8* iRecvHeaders;
+	HBufC8* iRecvBody;
+	TPtr8 iRecvHeadersBuf;
+	TPtr8 iRecvBodyBuf;
+	TBuf8<KMaxWapWspHeaderBufferLength> iMaxWspHeaderRecvBuffer;
+	TBuf8<KMaxWapWspDataBufferLength> iMaxWspDataRecvBuffer;
+private:
+	CActiveScheduler* iScheduler;
+	TInt iLastError;
+	};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/testdata/UDPPush.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,69 @@
+[COMMON]
+Bearer=3
+Remote_Host=127.0.0.1
+Local_Host= 127.0.0.1
+Remote_Port=2948
+Local_Port=2948
+TimeOut=0
+ExError=0
+ExError2=0
+SimTsy=false
+TsyState=411
+WSPHeaderLength=50
+WSPBodyLength=50
+WDPBufLength=30
+AwaitLengthCancel=false
+MiddleCancel=false
+MultiReadCancel=false
+AwaitLengthTwice=false
+DetailedLogging=true
+Secure=0
+WSPMethod=1
+WSPHeaders=GET:
+WSPBody=EMPTY-001-002-003-004-005-006-007-END
+WSPURI=http://wap.wapgateway.com
+
+
+[Test_1]
+Bearer=1
+Remote_Port=2949
+Local_Port=2948
+Remote_Host=127.0.0.1
+Local_Host= 127.0.0.1
+StartC32=true
+
+[Test_2]
+Bearer=2
+RemotePort=2948
+LocalPort=2949
+Remote_Host=127.0.0.1
+Local_Host= 127.0.0.1
+StartC32=false
+//a size of PDU to be sent that fits into the allocated buffer on the receiving end
+Data_Size=80
+
+
+[Test_3]
+Bearer=1
+Remote_Port=2949
+Local_Port=2948
+Remote_Host=127.0.0.1
+Local_Host= 127.0.0.1
+StartC32=true
+
+[Test_4]
+Bearer=2
+RemotePort=2948
+LocalPort=2949
+Remote_Host=127.0.0.1
+Local_Host= 127.0.0.1
+StartC32=false
+//a size of PDU to be sent that doesn't fit into the allocated buffer on the receiving end - needs reallocation
+Data_Size=1080
+
+//Remote_Host=10.32.194.36
+//Local_Host=10.32.194.36
+//Remote_Host=127.0.0.1
+//Local_Host= 127.0.0.1
+//Remote_Host=10.32.194.75
+//Local_Host=10.32.194.75
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/testdata/WSP.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,116 @@
+[COMMON]
+Bearer=1
+Remote_Host=10.32.194.45
+//Remote_Host=10.32.194.45
+//Remote_Host=192.168.20.11
+Local_Host=10.32.194.45
+Remote_Port=9200
+Local_Port=9200
+Secure=0
+Repeat=1
+TimeOut=0
+ExError=0
+ExError2=0
+SimTsy=false
+TsyState=411
+AwaitLengthCancel=false
+MiddleCancel=false
+MultiReadCancel=false
+AwaitLengthTwice=false
+WSPHeaderLength=50
+WSPBodyLength=50
+WDPBufLength=30
+WSPMethod=64
+
+[Test_9.1]
+Repeat=2
+WSPURI=http://10.35.2.4/wap/wstiot/welcome.wml
+//WSPHeaders=Accept-Language: English
+
+[Test_9.2]
+WSPURI=http://10.35.2.4/wap/wstiot/welcome.wml
+WSPHeaders=my1:125, my2:abcdefghijklmnopqrstuvxuz, m:y
+
+[Test_9.3]
+WSPURI=http://10.35.2.4:80/wap/wstiot/size1k.txt
+WSPHeaders=125:125
+
+[Test_9.4]
+WSPURI=http://10.35.2.4:80/wap/wstiot/small.wml
+WSPHeaders=Cat sat on the mat:125
+
+[Test_9.5]
+WSPURI=http://10.35.2.4/wap/wstiot/large.wml
+WSPHeaders=A=10:125
+
+[Test_9.6]
+WSPURI=http://10.35.2.4:80/wap/wstiot/large.wml
+WSPHeaders=Accept-Language:
+
+[Test_9.7]
+WSPURI=http://10.35.2.4:80/wap/wstiot/large.wml
+WSPHeaders=WAP:125
+
+[Test_9.8]
+WSPURI=http://10.35.2.4/wap/wstiot/large.wml
+WSPHeaders=::;
+
+[Test_9.9]
+WSPURI=http://10.35.2.4/wap/wstiot/welcome.wml
+WSPHeaders=Test-Case:CLIENT
+
+[Test_9.10]
+WSPURI=http://10.35.2.4/wap/wstiot/welcome.wml
+WSPHeaders=http://10.35.2.4/wap/wstiot/welcome.wml
+
+[Test_9.11]
+WSPMethod=66
+WSPURI=http://10.35.2.4/wap/wstiot/
+WSPHeaders=Accept-Language: English
+
+[Test_9.12]
+WSPURI=http://10.35.2.4:80/wap/wstiot/large.wml
+WSPHeaders=User-Agent:symbianAgentNameLongStringOne1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMLongStringTwo1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMLongStringThree1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM
+
+[Test_9.13]
+WSPMethod=96
+WSPURI=http://10.35.2.4/perl/dumpform.pl
+WSPHeaders=Accept-Language: English
+WSPBody=WSPTESTWSPTEST
+
+[Test_9.14]
+WSPMethod=97
+WSPURI=http://10.35.2.4/upload/tao.txt
+WSPHeaders=Accept-Language: English
+WSPBody=Tao Te Ching: An English-Language Interpolation 1. The Way The Way that can be experienced is not true; The world that can be constructed is not real. The Way manifests all that happens and may happen; The world represents all that exists and may exist. To experience without abstraction is to sense the world; To experience with abstraction is to know the world. These two experiences are indistinguishable; Their construction differs but their effect is the same. Beyond the gate of experience flows the Way, Which is ever greater and more subtle than the world. 2. Abstraction When beauty is abstracted Then ugliness has been implied; When good is abstracted Then evil has been implied. So alive and dead are abstracted from nature, Difficult and easy abstracted from progress, Long and short abstracted from contrast, High and low abstracted from depth, Song and speech abstracted from melody, After and before abstracted from sequence. The sage experiences without abstraction, And accomplishes without action; He accepts the ebb and flow of things, Nurtures them, but does not own them, And lives, but does not dwell. 3. Without Action Not praising the worthy prevents contention, Not esteeming the valuable prevents theft, Not displaying the beautiful prevents desire. In this manner the sage governs people: Emptying their minds, Filling their bellies, Weakening their ambitions, And strengthening their bones. If people lack knowledge and desire Then they can not act; If no action is taken Harmony remains. 4. Limitless The Way is a limitless vessel; Used by the self, it is not filled by the world; It cannot be cut, knotted, dimmed or stilled; Its depths are hidden, ubiquitous and eternal; I don't know where it comes from; It comes before nature. 5. Nature Nature is not kind; It treats all things impartially. The Sage is not kind, And treats all people impartially. Nature is like a bellows, Empty, yet never ceasing its supply. The more it moves, the more it yields; So the sage draws upon experience And cannot be exhausted. 6. Experience Experience is a riverbed,  Its source hidden, forever flowing: Its entrance, the root of the world, The Way moves within it: Draw upon it; it will not run dry. 7. Complete Nature is complete because it does not serve itself. The sage places himself after and finds himself before, Ignores his desire and finds himself content. He is complete because he does not serve himself. 8. Water The best of man is like water, Which benefits all things, and does not contend with them, Which flows in places that others disdain, Where it is in harmony with the Way. So the sage: Lives within nature, Thinks within the deep, Gives within impartiality, Speaks within trust, Governs within order, Crafts within ability, Acts within opportunity. He does not contend, and none contend against him. 9. Retire Fill a cup to its brim and it is easily spilled; Temper a sword to its hardest and it is easily broken; Amass the greatest treasure and it is easily stolen; Claim credit and honour and you easily fall; Retire once your purpose is achieved - this is natural. 10. Harmony Embracing the Way, you become embraced; Breathing gently, you become newborn; Clearing your mind, you become clear; Nurturing your children, you become impartial; Opening your heart, you become accepted; Accepting the world, you embrace the Way. Bearing and nurturing, Creating but not owning, Giving without demanding, This is harmony. 11. Tools Thirty spokes meet at a nave; because of the hole we may use the wheel. Clay is moulded into a vessel; Because of the hollow we may use the cup. Walls are built around a hearth; Because of the doors we may use the house. Thus tools come from what exists, But use from what does not. 12. Substance Too much colour blinds the eye, Too much music deafens the ear, Too much taste dulls the palate, Too much play maddens the mind, Too much desire tears the heart. In this manner the sage cares for people: He provides for the belly, not for the senses; He ignores abstraction and holds fast to substance. 13. Self Both praise and blame cause concern, For they bring people hope and fear. The object of hope and fear is the self - For, without self, to whom may fortune and disaster occur? Therefore, Who distinguishes himself from the world may be given the world, But who regards himself as the world may accept the world. 14. Mystery Looked at but cannot be seen - it is beneath form; Listened to but cannot be heard - it is beneath sound; Held but cannot be touched - it is beneath feeling; These depthless things evade definition, And blend into a single mystery. In its rising there is no light, In its falling there is no darkness, A continuous thread beyond description, Lining what does not exist; Its form formless, Its image nothing, Its name silence; Follow it, it has no back, et it, it has no face. Attend the present to deal with the past; Thus you grasp the continuity of the Way, Which is its essence. 15. Enlightenment The enlightened possess understanding So profound they can not be understood. Because they cannot be understood I can only describe their appearance: Cautious as one crossing thin ice, Undecided as one surrounded by danger, Modest as one who is a guest, Unbounded as melting ice, Genuine as unshaped wood, Broad as a valley, Seamless as muddy water. Who stills the water that the mud may settle, Who seeks to stop that he may travel on, Who desires less than what may transpire, Decays, but will not renew. 16. Decay and Renewal Empty the self completely; Embrace perfect peace. The world will rise and move; Watch it return to rest. All the flourishing things Will return to their source. This return is peaceful; It is the flow of nature, An eternal decay and renewal. Accepting this brings enlightenment, Ignoring this brings misery. Who accepts nature's flow becomes all-cherishing; Being all-cherishing he becomes impartial; Being impartial he becomes magnanimous; Being magnanimous he becomes natural; Being natural he becomes one with the Way; Being one with the Way he becomes immortal: Though his body will decay, the Way will not. 17. Rulers The best rulers are scarcely known by their subjects; The next best are loved and praised; The next are feared; The next despised: They have no faith in their people, And their people become unfaithful to them. When the best rulers achieve their purpose Their subjects claim the achievement as their own. 18. Hypocrisy When the Way is forgotten Duty and justice appear; Then knowledge and wisdom are born Along with hypocrisy. When harmonious relationships dissolve Then respect and devotion arise; When a nation falls to chaos Then loyalty and patriotism are born. 19. Simplify If we could discard knowledge and wisdom Then people would profit a hundredfold; If we could discard duty and justice Then harmonious relationships would form; If we could discard artifice and profit Then waste and theft would disappear. Yet such remedies treat only symptoms And so they are inadequate. People need personal remedies: Reveal your naked self and embrace your original nature; Bind your self-interest and control your ambition; Forget your habits and simplify your affairs. 20. Wandering What is the difference between assent and denial? What is the difference between beautiful and ugly? What is the difference between fearsome and afraid? The people are merry as if at a magnificent party Or playing in the park at springtime, But I am tranquil and wandering, Like a newborn before it learns to smile, Alone, with no true home. The people have enough and to spare, Where I have nothing, And my heart is foolish, Muddled and cloudy. The people are bright and certain, Where I am dim and confused; The people are clever and wise, Where I am dull and ignorant; Aimless as a wave drifting over the sea, Attached to nothing. The people are busy with purpose, Where I am ipractical and rough; I do not share the peoples' cares But I am fed at nature's breast. 21. Accept Harmony is only in following the Way. The Way is without form or quality, But expresses all forms and qualities; The Way is hidden and implicate, But expresses all of nature; The Way is unchanging, But expresses all motion. Beneath sensation and memory The Way is the source of all the world. How can I understand the source of the world? By accepting. 22. Home Accept and you become whole, Bend and you straighten, Empty and you fill, Decay and you renew, Want and you acquire, Fulfill and you become confused. The sage accepts the world As the world accepts the Way; He does not display himself, so is clearly seen, Does not justify himself, so is recognized, Does not boast, so is credited, Does not pride himself, so endures, Does not contend, so none contend against him. The ancients said, "Accept and you become whole", Once whole, the world is as your home. 23. Words Nature says only a few words: High wind does not last long, Nor does heavy rain. If nature's words do not last Why should those of man? Who accepts harmony, becomes harmonious. Who accepts loss, becomes lost. For who accepts harmony, the Way harmonizes with him, And who accepts loss, the Way cannot find. 24. Indulgence Straighten yourself and you will not stand steady; Display yourself and you will not be clearly seen; Justify yourself and you will not be respected; Promote yourself and you will not be believed; Pride yourself and you will not endure. These behaviours are wasteful, indulgent, And so they attract disfavour; Harmony avoids them. 25. Beneath Abstraction There is a mystery, Beneath abstraction, Silent, depthless, Alone, unchanging, Ubiquitous and liquid, The mother of nature. It has no name, but I call it "the Way"; It has no limit, but I call it "limitless". Being limitless, it flows away forever; Flowing away forever, it returns to my self: The Way is limitless, So nature is limitless, So the world is limitless, And so I am limitless. For I am abstracted from the world, The world from nature, Nature from the Way, And the Way from what is beneath abstraction. 26. Calm Gravity is the source of lightness, Calm, the master of haste. A lone traveller will journey all day, watching over his belongings; Only safe in his own bed may he lose them in sleep. So the captain of a great vessel should not act lightly or hastily. Acting lightly, he loses sight of the world, Acting hastily, he loses control of himself. The captain can not treat his great ship as a small boat; Rather than glitter like jade He must stand like stone. 27. Perfection The perfect traveller leaves no trail to be followed; The perfect speaker leaves no question to be answered; The perfect accountant leaves no working to be completed; The perfect container leaves no lock to be closed; The perfect knot leaves no end to be ravelled. So the sage nurtures all men And abandons no one. He accepts everything And rejects nothing. He attends to the smallest details. For the strong must guide the weak; The weak are raw material to the strong. If the guide is not respected, Or the material is not cared for, Confusion will result, no matter how clever one is. This is the secret of perfection: When raw wood is carved, it becomes a tool; When a man is employed, he becomes a tool; The perfect carpenter leaves no wood to be carved. 28. Becoming Using the male, being female, Being the entrance of the world, You embrace harmony And become as a newborn. Using strength, being weak, Being the root of the world, You complete harmony And become as unshaped wood. Using the light, being dark, Being the world, You perfect harmony And return to the Way. 29. Ambition Those who wish to change the world According with their desire Cannot succeed. The world is shaped by the Way; It cannot be shaped by the self. Trying to change it, you damage it; Trying to possess it, you lose it. So some will lead, while others follow. Some will be warm, others cold Some will be strong, others weak. Some will get where they are going While others fall by the side of the road. So the sage will be neither extravagant nor violent. 30. Violence Powerful men are well advised not to use violence, For violence has a habit of returning; Thorns and weeds grow wherever an army goes, And lean years follow a great war. A general is well advised To achieve nothing more than his orders: Not to take advantage of his victory. Nor to glory, boast or pride himself; To do what is dictated by necessity, Not by choice. For even the strongest force will weaken with time, And then its violence will return, and kill it. 31. Armies Armies are tools of violence; They cause men to hate and fear. The sage will not join them. His purpose is creation; Their purpose is destruction. Weapons are tools of violence, Not of the sage; He uses them only when there is no choice, And then calmly, and with tact, For he finds no beauty in them. Whoever finds beauty in weapons Delights in the slaughter of men; And who delights in slaughter Cannot content himself with peace. So slaughters must be mourned And conquest celebrated with a funeral. 32. Shapes The Way has no true shape, And therefore none can control it. If a ruler could control the Way All things would follow In harmony with his desire, And sweet rain would fall, Effortlessly slaking every thirst. The Way is shaped by use, But then the shape is lost. Do not hold fast to shapes But let sensation flow into the world As a river courses down to the sea. 33. Virtues Who understands the world is learned; Who understands the self is enlightened. Who conquers the world has strength; Who conquers the self has harmony; Who is determined has purpose. Who is contented has wealth; Who defends his home may long endure; Who surrenders his home may long survive it. 34. Control The Way flows and ebbs, creating and destroying, Implementing all the world, attending to the tiniest details, Claiming nothing in return. It nurtures all things, Though it does not control them; It has no intention, So it seems inconsequential. It is the substance of all things; Though it does not control them; It has no exception, So it seems all-important. The sage would not control the world;  He is in harmony with the world. 35. Peace If you offer music and food Strangers may stop with you; But if you accord with the Way All the people of the world will keep you In safety, health, community, and peace. The Way lacks art and flavour; It can neither be seen  or heard, But its benefit cannot be exhausted.  36. Opposition To reduce someone's influence, first expand it; To reduce someone's force, first increase it; To overthrow someone, first exalt them; To take from someone, first give to them. This is the subtlety by which the weak overcome the strong: Fish should not leave their depths, And swords should not leave their scabbards. 37. Tranquillity The Way takes no action, but leaves nothing undone. When you accept this The world will flourish, In harmony with nature. Nature does not possess desire; Without desire, the heart becomes quiet; In this manner the whole world is made tranquil. Tao Te Ching: An English-Language Interpolation 1. The Way The Way that can be experienced is not true; The world that can be constructed is not real. The Way manifests all that happens and may happen; The world represents all that exists and may exist. To experience without abstraction is to sense the world; To experience with abstraction is to know the world. These two experiences are indistinguishable; Their construction differs but their effect is the same. Beyond the gate of experience flows the Way, Which is ever greater and more subtle than the world. 2. Abstraction When beauty is abstracted Then ugliness has been implied; When good is abstracted Then evil has been implied. So alive and dead are abstracted from nature, Difficult and easy abstracted from progress, Long and short abstracted from contrast, High and low abstracted from depth, Song and speech abstracted from melody, After and before abstracted from sequence. The sage experiences without abstraction, And accomplishes without action; He accepts the ebb and flow of things, Nurtures them, but does not own them, And lives, but does not dwell. 3. Without Action Not praising the worthy prevents contention, Not esteeming the valuable prevents theft, Not displaying the beautiful prevents desire. In this manner the sage governs people: Emptying their minds, Filling their bellies, Weakening their ambitions, And strengthening their bones. If people lack knowledge and desire Then they can not act; If no action is taken Harmony remains. 4. Limitless The Way is a limitless vessel; Used by the self, it is not filled by the world; It cannot be cut, knotted, dimmed or stilled; Its depths are hidden, ubiquitous and eternal; I don't know where it comes from; It comes before nature. 5. Nature Nature is not kind; It treats all things impartially. The Sage is not kind, And treats all people impartially. Nature is like a bellows, Empty, yet never ceasing its supply. The more it moves, the more it yields; So the sage draws upon experience And cannot be exhausted. 6. Experience Experience is a riverbed,  Its source hidden, forever flowing: Its entrance, the root of the world, The Way moves within it: Draw upon it; it will not run dry. 7. Complete Nature is complete because it does not serve itself. The sage places himself after and finds himself before, Ignores his desire and finds himself content. He is complete because he does not serve himself. 8. Water The best of man is like water, Which benefits all things, and does not contend with them, Which flows in places that others disdain, Where it is in harmony with the Way. So the sage: Lives within nature, Thinks within the deep, Gives within impartiality, Speaks within trust, Governs within order, Crafts within ability, Acts within opportunity. He does not contend, and none contend against him. 9. Retire Fill a cup to its brim and it is easily spilled; Temper a sword to its hardest and it is easily broken; Amass the greatest treasure and it is easily stolen; Claim credit and honour and you easily fall; Retire once your purpose is achieved - this is natural. 10. Harmony Embracing the Way, you become embraced; Breathing gently, you become newborn; Clearing your mind, you become clear; Nurturing your children, you become impartial; Opening your heart, you become accepted; Accepting the world, you embrace the Way. Bearing and nurturing, Creating but not owning, Giving without demanding, This is harmony. 11. Tools Thirty spokes meet at a nave; because of the hole we may use the wheel. Clay is moulded into a vessel; Because of the hollow we may use the cup. Walls are built around a hearth; Because of the doors we may use the house. Thus tools come from what exists, But use from what does not. 12. Substance Too much colour blinds the eye, Too much music deafens the ear, Too much taste dulls the palate, Too much play maddens the mind, Too much desire tears the heart. In this manner the sage cares for people: He provides for the belly, not for the senses; He ignores abstraction and holds fast to substance. 13. Self Both praise and blame cause concern, For they bring people hope and fear. The object of hope and fear is the self - For, without self, to whom may fortune and disaster occur? Therefore, Who distinguishes himself from the world may be given the world, But who regards himself as the world may accept the world. 14. Mystery Looked at but cannot be seen - it is beneath form; Listened to but cannot be heard - it is beneath sound; Held but cannot be touched - it is beneath feeling; These depthless things evade definition, And blend into a single mystery. In its rising there is no light, In its falling there is no darkness, A continuous thread beyond description, Lining what does not exist; Its form formless, Its image nothing, Its name silence; Follow it, it has no back, et it, it has no face. Attend the present to deal with the past; Thus you grasp the continuity of the Way, Which is its essence. 15. Enlightenment The enlightened possess understanding So profound they can not be understood. Because they cannot be understood I can only describe their appearance: Cautious as one crossing thin ice, Undecided as one surrounded by danger, Modest as one who is a guest, Unbounded as melting ice, Genuine as unshaped wood, Broad as a valley, Seamless as muddy water. Who stills the water that the mud may settle, Who seeks to stop that he may travel on, Who desires less than what may transpire, Decays, but will not renew. 16. Decay and Renewal Empty the self completely; Embrace perfect peace. The world will rise and move; Watch it return to rest. All the flourishing things Will return to their source. This return is peaceful; It is the flow of nature, An eternal decay and renewal. Accepting this brings enlightenment, Ignoring this brings misery. Who accepts nature's flow becomes all-cherishing; Being all-cherishing he becomes impartial; Being impartial he becomes magnanimous; Being magnanimous he becomes natural; Being natural he becomes one with the Way; Being one with the Way he becomes immortal: Though his body will decay, the Way will not. 17. Rulers The best rulers are scarcely known by their subjects; The next best are loved and praised; The next are feared; The next despised: They have no faith in their people, And their people become unfaithful to them. When the best rulers achieve their purpose Their subjects claim the achievement as their own. 18. Hypocrisy When the Way is forgotten Duty and justice appear; Then knowledge and wisdom are born Along with hypocrisy. When harmonious relationships dissolve Then respect and devotion arise; When a nation falls to chaos Then loyalty and patriotism are born. 19. Simplify If we could discard knowledge and wisdom Then people would profit a hundredfold; If we could discard duty and justice Then harmonious relationships would form; If we could discard artifice and profit Then waste and theft would disappear. Yet such remedies treat only symptoms And so they are inadequate. People need personal remedies: Reveal your naked self and embrace your original nature; Bind your self-interest and control your ambition; Forget your habits and simplify your affairs. 20. Wandering What is the difference between assent and denial? What is the difference between beautiful and ugly? What is the difference between fearsome and afraid? The people are merry as if at a magnificent party Or playing in the park at springtime, But I am tranquil and wandering, Like a newborn before it learns to smile, Alone, with no true home. The people have enough and to spare, Where I have nothing, And my heart is foolish, Muddled and cloudy. The people are bright and certain, Where I am dim and confused; The people are clever and wise, Where I am dull and ignorant; Aimless as a wave drifting over the sea, Attached to nothing. The people are busy with purpose, Where I am ipractical and rough; I do not share the peoples' cares But I am fed at nature's breast. 21. Accept Harmony is only in following the Way. The Way is without form or quality, But expresses all forms and qualities; The Way is hidden and implicate, But expresses all of nature; The Way is unchanging, But expresses all motion. Beneath sensation and memory The Way is the source of all the world. How can I understand the source of the world? By accepting. 22. Home Accept and you become whole, Bend and you straighten, Empty and you fill, Decay and you renew, Want and you acquire, Fulfill and you become confused. The sage accepts the world As the world accepts the Way; He does not display himself, so is clearly seen, Does not justify himself, so is recognized, Does not boast, so is credited, Does not pride himself, so endures, Does not contend, so none contend against him. The ancients said, "Accept and you become whole", Once whole, the world is as your home. 23. Words Nature says only a few words: High wind does not last long, Nor does heavy rain. If nature's words do not last Why should those of man? Who accepts harmony, becomes harmonious. Who accepts loss, becomes lost. For who accepts harmony, the Way harmonizes with him, And who accepts loss, the Way cannot find. 24. Indulgence Straighten yourself and you will not stand steady; Display yourself and you will not be clearly seen; Justify yourself and you will not be respected; Promote yourself and you will not be believed; Pride yourself and you will not endure. These behaviours are wasteful, indulgent, And so they attract disfavour; Harmony avoids them. 25. Beneath Abstraction There is a mystery, Beneath abstraction, Silent, depthless, Alone, unchanging, Ubiquitous and liquid, The mother of nature. It has no name, but I call it "the Way"; It has no limit, but I call it "limitless". Being limitless, it flows away forever; Flowing away forever, it returns to my self: The Way is limitless, So nature is limitless, So the world is limitless, And so I am limitless. For I am abstracted from the world, The world from nature, Nature from the Way, And the Way from what is beneath abstraction. 26. Calm Gravity is the source of lightness, Calm, the master of haste. A lone traveller will journey all day, watching over his belongings; Only safe in his own bed may he lose them in sleep. So the captain of a great vessel should not act lightly or hastily. Acting lightly, he loses sight of the world, Acting hastily, he loses control of himself. The captain can not treat his great ship as a small boat; Rather than glitter like jade He must stand like stone. 27. Perfection The perfect traveller leaves no trail to be followed; The perfect speaker leaves no question to be answered; The perfect accountant leaves no working to be completed; The perfect container leaves no lock to be closed; The perfect knot leaves no end to be ravelled. So the sage nurtures all men And abandons no one. He accepts everything And rejects nothing. He attends to the smallest details. For the strong must guide the weak; The weak are raw material to the strong. If the guide is not respected, Or the material is not cared for, Confusion will result, no matter how clever one is. This is the secret of perfection: When raw wood is carved, it becomes a tool; When a man is employed, he becomes a tool; The perfect carpenter leaves no wood to be carved. 28. Becoming Using the male, being female, Being the entrance of the world, You embrace harmony And become as a newborn. Using strength, being weak, Being the root of the world, You complete harmony And become as unshaped wood. Using the light, being dark, Being the world, You perfect harmony And return to the Way. 29. Ambition Those who wish to change the world According with their desire Cannot succeed. The world is shaped by the Way; It cannot be shaped by the self. Trying to change it, you damage it; Trying to possess it, you lose it. So some will lead, while others follow. Some will be warm, others cold Some will be strong, others weak. Some will get where they are going While others fall by the side of the road. So the sage will be neither extravagant nor violent. 30. Violence Powerful men are well advised not to use violence, For violence has a habit of returning; Thorns and weeds grow wherever an army goes, And lean years follow a great war. A general is well advised To achieve nothing more than his orders: Not to take advantage of his victory. Nor to glory, boast or pride himself; To do what is dictated by necessity, Not by choice. For even the strongest force will weaken with time, And then its violence will return, and kill it. 31. Armies Armies are tools of violence; They cause men to hate and fear. The sage will not join them. His purpose is creation; Their purpose is destruction. Weapons are tools of violence, Not of the sage; He uses them only when there is no choice, And then calmly, and with tact, For he finds no beauty in them. Whoever finds beauty in weapons Delights in the slaughter of men; And who delights in slaughter Cannot content himself with peace. So slaughters must be mourned And conquest celebrated with a funeral. 32. Shapes The Way has no true shape, And therefore none can control it. If a ruler could control the Way All things would follow In harmony with his desire, And sweet rain would fall, Effortlessly slaking every thirst. The Way is shaped by use, But then the shape is lost. Do not hold fast to shapes But let sensation flow into the world As a river courses down to the sea. 33. Virtues Who understands the world is learned; Who understands the self is enlightened. Who conquers the world has strength; Who conquers the self has harmony; Who is determined has purpose. Who is contented has wealth; Who defends his home may long endure; Who surrenders his home may long survive it. 34. Control The Way flows and ebbs, creating and destroying, Implementing all the world, attending to the tiniest details, Claiming nothing in return. It nurtures all things, Though it does not control them; It has no intention, So it seems inconsequential. It is the substance of all things; Though it does not control them; It has no exception, So it seems all-important. The sage would not control the world;  He is in harmony with the world. 35. Peace If you offer music and food Strangers may stop with you; But if you accord with the Way All the people of the world will keep you In safety, health, community, and peace. The Way lacks art and flavour; It can neither be seen  or heard, But its benefit cannot be exhausted.  36. Opposition To reduce someone's influence, first expand it; To reduce someone's force, first increase it; To overthrow someone, first exalt them; To take from someone, first give to them. This is the subtlety by which the weak overcome the strong: Fish should not leave their depths, And swords should not leave their scabbards.
+
+[Test_9.14.1]
+//Repeat=2
+WSPURI=http://192.168.20.11/upload/tao.txt
+//WSPURI=http://10.32.194.45/upload/tao.txt
+//WSPURI=http://10.35.2.4/upload/tao.txt
+
+[Test_9.14.2]
+WSPMethod=97
+WSPURI=http://192.168.20.11/upload/tao.txt
+//WSPURI=http://10.32.194.45/upload/tao.txt
+//WSPURI=http://10.35.2.4/upload/tao.txt
+WSPHeaders=Accept-Language: English
+WSPBody=Tao Te Ching: An English-Language Interpolation 1. The Way The Way that can be experienced is not true; The world that can be constructed is not real. The Way manifests all that happens and may happen; The world represents all that exists and may exist. To experience without abstraction is to sense the world; To experience with abstraction is to know the world. These two experiences are indistinguishable; Their construction differs but their effect is the same. Beyond the gate of experience flows the Way, Which is ever greater and more subtle than the world. 2. Abstraction When beauty is abstracted Then ugliness has been implied; When good is abstracted Then evil has been implied. So alive and dead are abstracted from nature, Difficult and easy abstracted from progress, Long and short abstracted from contrast, High and low abstracted from depth, Song and speech abstracted from melody, After and before abstracted from sequence. The sage experiences without abstraction, And accomplishes without action; He accepts the ebb and flow of things, Nurtures them, but does not own them, And lives, but does not dwell. 3. Without Action Not praising the worthy prevents contention, Not esteeming the valuable prevents theft, Not displaying the beautiful prevents desire. In this manner the sage governs people: Emptying their minds, Filling their bellies, Weakening their ambitions, And strengthening their bones. If people lack knowledge and desire Then they can not act; If no action is taken Harmony remains. 4. Limitless The Way is a limitless vessel; Used by the self, it is not filled by the world; It cannot be cut, knotted, dimmed or stilled; Its depths are hidden, ubiquitous and eternal; I don't know where it comes from; It comes before nature. 5. Nature Nature is not kind; It treats all things impartially. The Sage is not kind, And treats all people impartially. Nature is like a bellows, Empty, yet never ceasing its supply. The more it moves, the more it yields; So the sage draws upon experience And cannot be exhausted. 6. Experience Experience is a riverbed,  Its source hidden, forever flowing: Its entrance, the root of the world, The Way moves within it: Draw upon it; it will not run dry. 7. Complete Nature is complete because it does not serve itself. The sage places himself after and finds himself before, Ignores his desire and finds himself content. He is complete because he does not serve himself. 8. Water The best of man is like water, Which benefits all things, and does not contend with them, Which flows in places that others disdain, Where it is in harmony with the Way. So the sage: Lives within nature, Thinks within the deep, Gives within impartiality, Speaks within trust, Governs within order, Crafts within ability, Acts within opportunity. He does not contend, and none contend against him. 9. Retire Fill a cup to its brim and it is easily spilled; Temper a sword to its hardest and it is easily broken; Amass the greatest treasure and it is easily stolen; Claim credit and honour and you easily fall; Retire once your purpose is achieved - this is natural. 10. Harmony Embracing the Way, you become embraced; Breathing gently, you become newborn; Clearing your mind, you become clear; Nurturing your children, you become impartial; Opening your heart, you become accepted; Accepting the world, you embrace the Way. Bearing and nurturing, Creating but not owning, Giving without demanding, This is harmony. 11. Tools Thirty spokes meet at a nave; because of the hole we may use the wheel. Clay is moulded into a vessel; Because of the hollow we may use the cup. Walls are built around a hearth; Because of the doors we may use the house. Thus tools come from what exists, But use from what does not. 12. Substance Too much colour blinds the eye, Too much music deafens the ear, Too much taste dulls the palate, Too much play maddens the mind, Too much desire tears the heart. In this manner the sage cares for people: He provides for the belly, not for the senses; He ignores abstraction and holds fast to substance. 13. Self Both praise and blame cause concern, For they bring people hope and fear. The object of hope and fear is the self - For, without self, to whom may fortune and disaster occur? Therefore, Who distinguishes himself from the world may be given the world, But who regards himself as the world may accept the world. 14. Mystery Looked at but cannot be seen - it is beneath form; Listened to but cannot be heard - it is beneath sound; Held but cannot be touched - it is beneath feeling; These depthless things evade definition, And blend into a single mystery. In its rising there is no light, In its falling there is no darkness, A continuous thread beyond description, Lining what does not exist; Its form formless, Its image nothing, Its name silence; Follow it, it has no back, et it, it has no face. Attend the present to deal with the past; Thus you grasp the continuity of the Way, Which is its essence. 15. Enlightenment The enlightened possess understanding So profound they can not be understood. Because they cannot be understood I can only describe their appearance: Cautious as one crossing thin ice, Undecided as one surrounded by danger, Modest as one who is a guest, Unbounded as melting ice, Genuine as unshaped wood, Broad as a valley, Seamless as muddy water. Who stills the water that the mud may settle, Who seeks to stop that he may travel on, Who desires less than what may transpire, Decays, but will not renew. 16. Decay and Renewal Empty the self completely; Embrace perfect peace. The world will rise and move; Watch it return to rest. All the flourishing things Will return to their source. This return is peaceful; It is the flow of nature, An eternal decay and renewal. Accepting this brings enlightenment, Ignoring this brings misery. Who accepts nature's flow becomes all-cherishing; Being all-cherishing he becomes impartial; Being impartial he becomes magnanimous; Being magnanimous he becomes natural; Being natural he becomes one with the Way; Being one with the Way he becomes immortal: Though his body will decay, the Way will not. 17. Rulers The best rulers are scarcely known by their subjects; The next best are loved and praised; The next are feared; The next despised: They have no faith in their people, And their people become unfaithful to them. When the best rulers achieve their purpose Their subjects claim the achievement as their own. 18. Hypocrisy When the Way is forgotten Duty and justice appear; Then knowledge and wisdom are born Along with hypocrisy. When harmonious relationships dissolve Then respect and devotion arise; When a nation falls to chaos Then loyalty and patriotism are born. 19. Simplify If we could discard knowledge and wisdom Then people would profit a hundredfold; If we could discard duty and justice Then harmonious relationships would form; If we could discard artifice and profit Then waste and theft would disappear. Yet such remedies treat only symptoms And so they are inadequate. People need personal remedies: Reveal your naked self and embrace your original nature; Bind your self-interest and control your ambition; Forget your habits and simplify your affairs. 20. Wandering What is the difference between assent and denial? What is the difference between beautiful and ugly? What is the difference between fearsome and afraid? The people are merry as if at a magnificent party Or playing in the park at springtime, But I am tranquil and wandering, Like a newborn before it learns to smile, Alone, with no true home. The people have enough and to spare, Where I have nothing, And my heart is foolish, Muddled and cloudy. The people are bright and certain, Where I am dim and confused; The people are clever and wise, Where I am dull and ignorant; Aimless as a wave drifting over the sea, Attached to nothing. The people are busy with purpose, Where I am ipractical and rough; I do not share the peoples' cares But I am fed at nature's breast. 21. Accept Harmony is only in following the Way. The Way is without form or quality, But expresses all forms and qualities; The Way is hidden and implicate, But expresses all of nature; The Way is unchanging, But expresses all motion. Beneath sensation and memory The Way is the source of all the world. How can I understand the source of the world? By accepting. 22. Home Accept and you become whole, Bend and you straighten, Empty and you fill, Decay and you renew, Want and you acquire, Fulfill and you become confused. The sage accepts the world As the world accepts the Way; He does not display himself, so is clearly seen, Does not justify himself, so is recognized, Does not boast, so is credited, Does not pride himself, so endures, Does not contend, so none contend against him. The ancients said, "Accept and you become whole", Once whole, the world is as your home. 23. Words Nature says only a few words: High wind does not last long, Nor does heavy rain. If nature's words do not last Why should those of man? Who accepts harmony, becomes harmonious. Who accepts loss, becomes lost. For who accepts harmony, the Way harmonizes with him, And who accepts loss, the Way cannot find. 24. Indulgence Straighten yourself and you will not stand steady; Display yourself and you will not be clearly seen; Justify yourself and you will not be respected; Promote yourself and you will not be believed; Pride yourself and you will not endure. These behaviours are wasteful, indulgent, And so they attract disfavour; Harmony avoids them. 25. Beneath Abstraction There is a mystery, Beneath abstraction, Silent, depthless, Alone, unchanging, Ubiquitous and liquid, The mother of nature. It has no name, but I call it "the Way"; It has no limit, but I call it "limitless". Being limitless, it flows away forever; Flowing away forever, it returns to my self: The Way is limitless, So nature is limitless, So the world is limitless, And so I am limitless. For I am abstracted from the world, The world from nature, Nature from the Way, And the Way from what is beneath abstraction. 26. Calm Gravity is the source of lightness, Calm, the master of haste. A lone traveller will journey all day, watching over his belongings; Only safe in his own bed may he lose them in sleep. So the captain of a great vessel should not act lightly or hastily. Acting lightly, he loses sight of the world, Acting hastily, he loses control of himself. The captain can not treat his great ship as a small boat; Rather than glitter like jade He must stand like stone. 27. Perfection The perfect traveller leaves no trail to be followed; The perfect speaker leaves no question to be answered; The perfect accountant leaves no working to be completed; The perfect container leaves no lock to be closed; The perfect knot leaves no end to be ravelled. So the sage nurtures all men And abandons no one. He accepts everything And rejects nothing. He attends to the smallest details. For the strong must guide the weak; The weak are raw material to the strong. If the guide is not respected, Or the material is not cared for, Confusion will result, no matter how clever one is. This is the secret of perfection: When raw wood is carved, it becomes a tool; When a man is employed, he becomes a tool; The perfect carpenter leaves no wood to be carved. 28. Becoming Using the male, being female, Being the entrance of the world, You embrace harmony And become as a newborn. Using strength, being weak, Being the root of the world, You complete harmony And become as unshaped wood. Using the light, being dark, Being the world, You perfect harmony And return to the Way. 29. Ambition Those who wish to change the world According with their desire Cannot succeed. The world is shaped by the Way; It cannot be shaped by the self. Trying to change it, you damage it; Trying to possess it, you lose it. So some will lead, while others follow. Some will be warm, others cold Some will be strong, others weak. Some will get where they are going While others fall by the side of the road. So the sage will be neither extravagant nor violent. 30. Violence Powerful men are well advised not to use violence, For violence has a habit of returning; Thorns and weeds grow wherever an army goes, And lean years follow a great war. A general is well advised To achieve nothing more than his orders: Not to take advantage of his victory. Nor to glory, boast or pride himself; To do what is dictated by necessity, Not by choice. For even the strongest force will weaken with time, And then its violence will return, and kill it. 31. Armies Armies are tools of violence; They cause men to hate and fear. The sage will not join them. His purpose is creation; Their purpose is destruction. Weapons are tools of violence, Not of the sage; He uses them only when there is no choice, And then calmly, and with tact, For he finds no beauty in them. Whoever finds beauty in weapons Delights in the slaughter of men; And who delights in slaughter Cannot content himself with peace. So slaughters must be mourned And conquest celebrated with a funeral. 32. Shapes The Way has no true shape, And therefore none can control it. If a ruler could control the Way All things would follow In harmony with his desire, And sweet rain would fall, Effortlessly slaking every thirst. The Way is shaped by use, But then the shape is lost. Do not hold fast to shapes But let sensation flow into the world As a river courses down to the sea. 33. Virtues Who understands the world is learned; Who understands the self is enlightened. Who conquers the world has strength; Who conquers the self has harmony; Who is determined has purpose. Who is contented has wealth; Who defends his home may long endure; Who surrenders his home may long survive it. 34. Control The Way flows and ebbs, creating and destroying, Implementing all the world, attending to the tiniest details, Claiming nothing in return. It nurtures all things, Though it does not control them; It has no intention, So it seems inconsequential. It is the substance of all things; Though it does not control them; It has no exception, So it seems all-important. The sage would not control the world;  He is in harmony with the world. 35. Peace If you offer music and food Strangers may stop with you; But if you accord with the Way All the people of the world will keep you In safety, health, community, and peace. The Way lacks art and flavour; It can neither be seen  or heard, But its benefit cannot be exhausted.  36. Opposition To reduce someone's influence, first expand it; To reduce someone's force, first increase it; To overthrow someone, first exalt them; To take from someone, first give to them. This is the subtlety by which the weak overcome the strong: Fish should not leave their depths, And swords should not leave their scabbards. 37. Tranquillity The Way takes no action, but leaves nothing undone. When you accept this The world will flourish, In harmony with nature. Nature does not possess desire; Without desire, the heart becomes quiet; In this manner the whole world is made tranquil. Tao Te Ching: An English-Language Interpolation 1. The Way The Way that can be experienced is not true; The world that can be constructed is not real. The Way manifests all that happens and may happen; The world represents all that exists and may exist. To experience without abstraction is to sense the world; To experience with abstraction is to know the world. These two experiences are indistinguishable; Their construction differs but their effect is the same. Beyond the gate of experience flows the Way, Which is ever greater and more subtle than the world. 2. Abstraction When beauty is abstracted Then ugliness has been implied; When good is abstracted Then evil has been implied. So alive and dead are abstracted from nature, Difficult and easy abstracted from progress, Long and short abstracted from contrast, High and low abstracted from depth, Song and speech abstracted from melody, After and before abstracted from sequence. The sage experiences without abstraction, And accomplishes without action; He accepts the ebb and flow of things, Nurtures them, but does not own them, And lives, but does not dwell. 3. Without Action Not praising the worthy prevents contention, Not esteeming the valuable prevents theft, Not displaying the beautiful prevents desire. In this manner the sage governs people: Emptying their minds, Filling their bellies, Weakening their ambitions, And strengthening their bones. If people lack knowledge and desire Then they can not act; If no action is taken Harmony remains. 4. Limitless The Way is a limitless vessel; Used by the self, it is not filled by the world; It cannot be cut, knotted, dimmed or stilled; Its depths are hidden, ubiquitous and eternal; I don't know where it comes from; It comes before nature. 5. Nature Nature is not kind; It treats all things impartially. The Sage is not kind, And treats all people impartially. Nature is like a bellows, Empty, yet never ceasing its supply. The more it moves, the more it yields; So the sage draws upon experience And cannot be exhausted. 6. Experience Experience is a riverbed,  Its source hidden, forever flowing: Its entrance, the root of the world, The Way moves within it: Draw upon it; it will not run dry. 7. Complete Nature is complete because it does not serve itself. The sage places himself after and finds himself before, Ignores his desire and finds himself content. He is complete because he does not serve himself. 8. Water The best of man is like water, Which benefits all things, and does not contend with them, Which flows in places that others disdain, Where it is in harmony with the Way. So the sage: Lives within nature, Thinks within the deep, Gives within impartiality, Speaks within trust, Governs within order, Crafts within ability, Acts within opportunity. He does not contend, and none contend against him. 9. Retire Fill a cup to its brim and it is easily spilled; Temper a sword to its hardest and it is easily broken; Amass the greatest treasure and it is easily stolen; Claim credit and honour and you easily fall; Retire once your purpose is achieved - this is natural. 10. Harmony Embracing the Way, you become embraced; Breathing gently, you become newborn; Clearing your mind, you become clear; Nurturing your children, you become impartial; Opening your heart, you become accepted; Accepting the world, you embrace the Way. Bearing and nurturing, Creating but not owning, Giving without demanding, This is harmony. 11. Tools Thirty spokes meet at a nave; because of the hole we may use the wheel. Clay is moulded into a vessel; Because of the hollow we may use the cup. Walls are built around a hearth; Because of the doors we may use the house. Thus tools come from what exists, But use from what does not. 12. Substance Too much colour blinds the eye, Too much music deafens the ear, Too much taste dulls the palate, Too much play maddens the mind, Too much desire tears the heart. In this manner the sage cares for people: He provides for the belly, not for the senses; He ignores abstraction and holds fast to substance. 13. Self Both praise and blame cause concern, For they bring people hope and fear. The object of hope and fear is the self - For, without self, to whom may fortune and disaster occur? Therefore, Who distinguishes himself from the world may be given the world, But who regards himself as the world may accept the world. 14. Mystery Looked at but cannot be seen - it is beneath form; Listened to but cannot be heard - it is beneath sound; Held but cannot be touched - it is beneath feeling; These depthless things evade definition, And blend into a single mystery. In its rising there is no light, In its falling there is no darkness, A continuous thread beyond description, Lining what does not exist; Its form formless, Its image nothing, Its name silence; Follow it, it has no back, et it, it has no face. Attend the present to deal with the past; Thus you grasp the continuity of the Way, Which is its essence. 15. Enlightenment The enlightened possess understanding So profound they can not be understood. Because they cannot be understood I can only describe their appearance: Cautious as one crossing thin ice, Undecided as one surrounded by danger, Modest as one who is a guest, Unbounded as melting ice, Genuine as unshaped wood, Broad as a valley, Seamless as muddy water. Who stills the water that the mud may settle, Who seeks to stop that he may travel on, Who desires less than what may transpire, Decays, but will not renew. 16. Decay and Renewal Empty the self completely; Embrace perfect peace. The world will rise and move; Watch it return to rest. All the flourishing things Will return to their source. This return is peaceful; It is the flow of nature, An eternal decay and renewal. Accepting this brings enlightenment, Ignoring this brings misery. Who accepts nature's flow becomes all-cherishing; Being all-cherishing he becomes impartial; Being impartial he becomes magnanimous; Being magnanimous he becomes natural; Being natural he becomes one with the Way; Being one with the Way he becomes immortal: Though his body will decay, the Way will not. 17. Rulers The best rulers are scarcely known by their subjects; The next best are loved and praised; The next are feared; The next despised: They have no faith in their people, And their people become unfaithful to them. When the best rulers achieve their purpose Their subjects claim the achievement as their own. 18. Hypocrisy When the Way is forgotten Duty and justice appear; Then knowledge and wisdom are born Along with hypocrisy. When harmonious relationships dissolve Then respect and devotion arise; When a nation falls to chaos Then loyalty and patriotism are born. 19. Simplify If we could discard knowledge and wisdom Then people would profit a hundredfold; If we could discard duty and justice Then harmonious relationships would form; If we could discard artifice and profit Then waste and theft would disappear. Yet such remedies treat only symptoms And so they are inadequate. People need personal remedies: Reveal your naked self and embrace your original nature; Bind your self-interest and control your ambition; Forget your habits and simplify your affairs. 20. Wandering What is the difference between assent and denial? What is the difference between beautiful and ugly? What is the difference between fearsome and afraid? The people are merry as if at a magnificent party Or playing in the park at springtime, But I am tranquil and wandering, Like a newborn before it learns to smile, Alone, with no true home. The people have enough and to spare, Where I have nothing, And my heart is foolish, Muddled and cloudy. The people are bright and certain, Where I am dim and confused; The people are clever and wise, Where I am dull and ignorant; Aimless as a wave drifting over the sea, Attached to nothing. The people are busy with purpose, Where I am ipractical and rough; I do not share the peoples' cares But I am fed at nature's breast. 21. Accept Harmony is only in following the Way. The Way is without form or quality, But expresses all forms and qualities; The Way is hidden and implicate, But expresses all of nature; The Way is unchanging, But expresses all motion. Beneath sensation and memory The Way is the source of all the world. How can I understand the source of the world? By accepting. 22. Home Accept and you become whole, Bend and you straighten, Empty and you fill, Decay and you renew, Want and you acquire, Fulfill and you become confused. The sage accepts the world As the world accepts the Way; He does not display himself, so is clearly seen, Does not justify himself, so is recognized, Does not boast, so is credited, Does not pride himself, so endures, Does not contend, so none contend against him. The ancients said, "Accept and you become whole", Once whole, the world is as your home. 23. Words Nature says only a few words: High wind does not last long, Nor does heavy rain. If nature's words do not last Why should those of man? Who accepts harmony, becomes harmonious. Who accepts loss, becomes lost. For who accepts harmony, the Way harmonizes with him, And who accepts loss, the Way cannot find. 24. Indulgence Straighten yourself and you will not stand steady; Display yourself and you will not be clearly seen; Justify yourself and you will not be respected; Promote yourself and you will not be believed; Pride yourself and you will not endure. These behaviours are wasteful, indulgent, And so they attract disfavour; Harmony avoids them. 25. Beneath Abstraction There is a mystery, Beneath abstraction, Silent, depthless, Alone, unchanging, Ubiquitous and liquid, The mother of nature. It has no name, but I call it "the Way"; It has no limit, but I call it "limitless". Being limitless, it flows away forever; Flowing away forever, it returns to my self: The Way is limitless, So nature is limitless, So the world is limitless, And so I am limitless. For I am abstracted from the world, The world from nature, Nature from the Way, And the Way from what is beneath abstraction. 26. Calm Gravity is the source of lightness, Calm, the master of haste. A lone traveller will journey all day, watching over his belongings; Only safe in his own bed may he lose them in sleep. So the captain of a great vessel should not act lightly or hastily. Acting lightly, he loses sight of the world, Acting hastily, he loses control of himself. The captain can not treat his great ship as a small boat; Rather than glitter like jade He must stand like stone. 27. Perfection The perfect traveller leaves no trail to be followed; The perfect speaker leaves no question to be answered; The perfect accountant leaves no working to be completed; The perfect container leaves no lock to be closed; The perfect knot leaves no end to be ravelled. So the sage nurtures all men And abandons no one. He accepts everything And rejects nothing. He attends to the smallest details. For the strong must guide the weak; The weak are raw material to the strong. If the guide is not respected, Or the material is not cared for, Confusion will result, no matter how clever one is. This is the secret of perfection: When raw wood is carved, it becomes a tool; When a man is employed, he becomes a tool; The perfect carpenter leaves no wood to be carved. 28. Becoming Using the male, being female, Being the entrance of the world, You embrace harmony And become as a newborn. Using strength, being weak, Being the root of the world, You complete harmony And become as unshaped wood. Using the light, being dark, Being the world, You perfect harmony And return to the Way. 29. Ambition Those who wish to change the world According with their desire Cannot succeed. The world is shaped by the Way; It cannot be shaped by the self. Trying to change it, you damage it; Trying to possess it, you lose it. So some will lead, while others follow. Some will be warm, others cold Some will be strong, others weak. Some will get where they are going While others fall by the side of the road. So the sage will be neither extravagant nor violent. 30. Violence Powerful men are well advised not to use violence, For violence has a habit of returning; Thorns and weeds grow wherever an army goes, And lean years follow a great war. A general is well advised To achieve nothing more than his orders: Not to take advantage of his victory. Nor to glory, boast or pride himself; To do what is dictated by necessity, Not by choice. For even the strongest force will weaken with time, And then its violence will return, and kill it. 31. Armies Armies are tools of violence; They cause men to hate and fear. The sage will not join them. His purpose is creation; Their purpose is destruction. Weapons are tools of violence, Not of the sage; He uses them only when there is no choice, And then calmly, and with tact, For he finds no beauty in them. Whoever finds beauty in weapons Delights in the slaughter of men; And who delights in slaughter Cannot content himself with peace. So slaughters must be mourned And conquest celebrated with a funeral. 32. Shapes The Way has no true shape, And therefore none can control it. If a ruler could control the Way All things would follow In harmony with his desire, And sweet rain would fall, Effortlessly slaking every thirst. The Way is shaped by use, But then the shape is lost. Do not hold fast to shapes But let sensation flow into the world As a river courses down to the sea. 33. Virtues Who understands the world is learned; Who understands the self is enlightened. Who conquers the world has strength; Who conquers the self has harmony; Who is determined has purpose. Who is contented has wealth; Who defends his home may long endure; Who surrenders his home may long survive it. 34. Control The Way flows and ebbs, creating and destroying, Implementing all the world, attending to the tiniest details, Claiming nothing in return. It nurtures all things, Though it does not control them; It has no intention, So it seems inconsequential. It is the substance of all things; Though it does not control them; It has no exception, So it seems all-important. The sage would not control the world;  He is in harmony with the world. 35. Peace If you offer music and food Strangers may stop with you; But if you accord with the Way All the people of the world will keep you In safety, health, community, and peace. The Way lacks art and flavour; It can neither be seen  or heard, But its benefit cannot be exhausted.  36. Opposition To reduce someone's influence, first expand it; To reduce someone's force, first increase it; To overthrow someone, first exalt them; To take from someone, first give to them. This is the subtlety by which the weak overcome the strong: Fish should not leave their depths, And swords should not leave their scabbards.
+
+[Test_9.15]
+WSPMethod=67
+WSPURI=http://10.32.194.45/upload/tao.txt
+//WSPURI=http://10.35.2.4/upload/tao.txt
+//WSPHeaders=Accept-Language: English
+
+[Test_9.16]
+WSPMethod=68
+WSPURI=http://10.35.2.4/wap/wstiot/
+WSPHeaders=Accept-Language: English
+
+[Test_9.17]
+WSPMethod=65
+WSPURI=http://10.35.2.4/*
+WSPHeaders=Accept-Language: English
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/testdata/WapSIMTSY.txt	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,271 @@
+[test411]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=55000C9144775622322100F5A77B040402E2E2424547494E3A56434152445C725C6E56455253494F4E3A322E315C725C6E464E3A4A616C5C725C6E4E3A4A616C5C725C6E4F52473A50616E536F6674776172655C725C6E5449544C453A4469726563746F725C725C6E4C4142454C3A49736C696E67746F6E5C725C6E454E443A56434152445C725C6E,447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=440C9144775622322100F5308010118590407B040402E2E2424547494E3A56434152445C725C6E56455253494F4E3A322E315C725C6E464E3A4A616C5C725C6E4E3A4A616C5C725C6E4F52473A50616E536F6674776172655C725C6E5449544C453A4469726563746F725C725C6E4C4142454C3A49736C696E67746F6E5C725C6E454E443A56434152445C725C6E, 447765222312
+SmsStartRxDelay= 4207, 1, 1
+
+[test413]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C914477562232210000307003615225409F0500030402015EAFE97059A4156930184C068B8184C563D2A9B30E83CCA29318946E5E6E6B513A4D3E9DBA980BB679B985C563D2A9B316AD452775F3720F83D4E2F1294D16A7BA66B1484D3A8F9B977B4A0D52AB531DB5E8A406A9496B71F37213A9536A504AD5C960B0188C068B5161B3190C06D36E5E6E22B5E824EA6430580C4683C5A830DA0C06836901, 447765222312        
+SmsRx=440C9144775622322100003070036152754016050003040202362FF7B4DA6C06A5595DB33C9F03, 447765222312   
+SmsRx=040C9144775622322100003070036162504094AFD774B82CD28A34180C2683C940E173DA7D0635CB657ADA7DDEBCDCC4E274284D42A9C9A7532794A7E9EE721E14769341CAFA9C9E7683E86F90BC6C4F97EF2077F95E9ED34170F91BFE9E87D9A076985E96A7C3ECCDCB3D6406A7531D549AB406A9C5CDCB5D741275D6A2B5E8A46E5EEEA293A8B30E83CCA29318946E5EF2CDCB0D, 447765222312
+SmsStartRxDelay= 4207, 1, 3
+
+[test415]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=15000C914477562232210000A78EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203,447765222312,12, 01A0, 0     
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  040C914477562232210000308010219024408EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222312
+SmsStartRxDelay= 4207, 1, 1
+
+[test421]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=55000C9144775622322100F5A77B0404020101424547494E3A56434152445C725C6E56455253494F4E3A322E315C725C6E464E3A4A616C5C725C6E4E3A4A616C5C725C6E4F52473A50616E536F6674776172655C725C6E5449544C453A4469726563746F725C725C6E4C4142454C3A49736C696E67746F6E5C725C6E454E443A56434152445C725C6E,447765222315,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C9144775622322100F5307003513340407B0404020101424547494E3A56434152445C725C6E56455253494F4E3A322E315C725C6E464E3A4A616C5C725C6E4E3A4A616C5C725C6E4F52473A50616E536F6674776172655C725C6E5449544C453A4469726563746F725C725C6E4C4142454C3A49736C696E67746F6E5C725C6E454E443A56434152445C725C6E, 447765222315
+SmsStartRxDelay= 4207, 1, 1
+
+[test423]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C914477562232210000307013017510409F0500030002015EAFE970098BC16230184C068B8184C563D2A9B30E83CCA29318946E5E6E6B513A4D3E9DBA980BB679B985C563D2A9B316AD452775F3720F83D4E2F1294D16A7BA66B1484D3A8F9B977B4A0D52AB531DB5E8A406A9496B71F37213A9536A504AD5C960B0188C068B5161B3190C06D36E5E6E22B5E824EA6430580C4683C5A830DA0C06836901, 447765222312        
+SmsRx=440C9144775622322100003070130175114016050003000202362FF7B4DA6C06A5595DB33C9F03, 447765222312       
+SmsRx=040C9144775622322100003070130175024094AFD774B884C56031180C2683C940E173DA7D0635CB657ADA7DDEBCDCC4E274284D42A9C9A7532794A7E9EE721E14769341CAFA9C9E7683E86F90BC6C4F97EF2077F95E9ED34170F91BFE9E87D9A076985E96A7C3ECCDCB3D6406A7531D549AB406A9C5CDCB5D741275D6A2B5E8A46E5EEEA293A8B30E83CCA29318946E5EF2CDCB0D, 447765222312
+SmsStartRxDelay= 4207, 1, 3
+
+[test425]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C9144775622322100F5307013514502408C09040201010003050301424547494E3A5643414C454E4441525C6E56455253494F4E3A312E305C6E424547494E3A564556454E545C6E43415445474F524945533A4D454554494E475C6E5354415455533A54454E5441544956455C6E445453544152543A3230303130343031543033333030305A5C6E4454454E443A3230303130343031543034333030305A, 447765222312        
+SmsRx=440C9144775622322100F5307013514562408C090402010100030503025C6E53554D4D4152593A4D6573736167696E67204D656574696E675C6E4445534352495054494F4E3A427269746E657920616E64204A757374696E20746F20726576696577206E65776573742070726F706F73616C206D6174657269616C5C6E434C4153533A505249564154455C6E454E443A564556454E545C6E454E443A564341, 447765222312       
+SmsRx=440C9144775622322100F53070135145134014090402010100030503034C454E4441525C725C6E, 447765222312
+SmsStartRxDelay= 4207, 1, 3
+
+[test426]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=55000C9144775622322100F5A77D0605041581158130323441334135393331424442444239393545343034303034344438463531313431363631353631333631313632344432353434353835393835353834443835313835353235353835353834353834443834353835353834353834443839333443353131363234433330444230443330423338303030,447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=440C9144775622322100F5309030710491407D0605041581158130323441334135393331424442444239393545343034303034344438463531313431363631353631333631313632344432353434353835393835353834443835313835353235353835353834353834443834353835353834353834443839333443353131363234433330444230443330423338303030, 447765222312        
+SmsStartRxDelay= 4207, 1, 1
+
+[test427]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx= 440C9144775622322100F5309030810000408C0B050415881588000303030131206E657720656D61696C206D6573736167655C6E2046726F6D3A204B616D72616E204E6F62617269203C4B616D72616E2E4E6F626172694053796D6269616E2E636F6D3E5C6E205375626A6563743A2074657374206F6E6C792C20706C656173652069676E6F72655C6E2073697A653A2034324B425C6E206174743A315C6E, 447765222312        
+SmsRx= 440C9144775622322100F5309030810060408C0B050415881588000303030220546F3A20536F6D656F6E65203C736F6D656F6E65406E6F77686572652E636F6D3E5C6E20446174653A20332053657074656D6265722032303033202B303030305C6E2073656E6465723A4B616D72616E2E4E6F626172694073796D6269616E2E636F6D5C6E207265706C792D746F3A20736F6D656F6E652E656C7365405379, 447765222312       
+SmsRx= 440C9144775622322100F530903081002140490B05041588158800030303036D6269616E2E636F6D5C6E20666C64723A20757365722E736D6172746D652E746869732E666F6C6465722E69732E666F722E6A756E6B2E6D61696C5C6E, 447765222312
+SmsStartRxDelay= 4207, 1, 3
+
+[test428]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx= 440C9144775622322100F5309030815001408C0B0504157F157F000304020157656C636F6D65215C6E20496E616D653A2044656D6F6E5C6E20497569643A207073696F6E385C6E20497077643A207365637265745C6E204974656C3A202B3132333435363738393031323334355C6E204969703A203132332E3132332E3132332E3132335C6E2049646E73313A203132332E3132332E3132332E3132335C6E, 447765222312        
+SmsRx= 440C9144775622322100F530903081505140230B0504157F157F00030402022049646E73323A203132332E3132332E3132332E313234, 447765222312       
+SmsStartRxDelay= 4207, 1, 2
+
+[test429]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsTx=00, 447765222312,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx= 440C9144775622322100F5309050014521408C0B050415821582000305020133303432463435303A30413030343830453A30313030303030303A30303030303030303A30303030303030303A30303030303030303A30303030303031453A30303030303030303A30323030303030303A32313030303030313A30303032303030303A30303231303030303A30313030303230303A30303030323133433A3733, 447765222312        
+SmsRx= 440C9144775622322100F5309050014571403F0B05041582158200030502023339394343323A30373145373032313A32323841303532323A38323038413238383A32313232464133443A3232383230384132, 447765222312       
+SmsStartRxDelay= 4207, 1, 2
+
+[test431]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=
+440C9144775622322100F530600351120340580605040B840B8459060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsStartRxDelay= 0, 0, 1
+
+[test441]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=
+440C9144775622322100F53080103112444056040402010159060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsStartRxDelay= 0, 0, 1
+
+
+[test2]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=55000C914477562232510000A79F0500030002015EAFE97059A4156930184C068B8184C563D2A9B30E83CCA29318946E5E6E6B513A4D3E9DBA980BB679B985C563D2A9B316AD452775F3720F83D4E2F1294D16A7BA66B1484D3A8F9B977B4A0D52AB531DB5E8A406A9496B71F37213A9536A504AD5C960B0188C068B5161B3190C06D36E5E6E22B5E824EA6430580C4683C5A830DA0C06836901, 447765222315,12, 01A0, 0
+SmsTx=55000C914477562232510000A716050003000202362FF7B4DA6C06A5595DB33C9F03, 447765222315,12, 01A0, 0
+SmsTx=15000C914477562232510000A794AFD774B82CD28A34180C2683C940E173DA7D0635CB657ADA7DDEBCDCC4E274284D42A9C9A7532794A7E9EE721E14769341CAFA9C9E7683E86F90BC6C4F97EF2077F95E9ED34170F91BFE9E87D9A076985E96A7C3ECCDCB3D6406A7531D549AB406A9C5CDCB5D741275D6A2B5E8A46E5EEEA293A8B30E83CCA29318946E5EF2CDCB0D, 447765222315,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C914477562232510000306062516261409F0500030F02015EAFE97059A4156930184C068B8184C563D2A9B30E83CCA29318946E5E6E6B513A4D3E9DBA980BB679B985C563D2A9B316AD452775F3720F83D4E2F1294D16A7BA66B1484D3A8F9B977B4A0D52AB531DB5E8A406A9496B71F37213A9536A504AD5C960B0188C068B5161B3190C06D36E5E6E22B5E824EA6430580C4683C5A830DA0C06836901, 447765222315
+SmsRx=440C91447756223251000030606251620240160500030F0202362FF7B4DA6C06A5595DB33C9F03, 447765222315
+SmsRx=040C9144775622325100003060626191124094AFD774B82CD28A34180C2683C940E173DA7D0635CB657ADA7DDEBCDCC4E274284D42A9C9A7532794A7E9EE721E14769341CAFA9C9E7683E86F90BC6C4F97EF2077F95E9ED34170F91BFE9E87D9A076985E96A7C3ECCDCB3D6406A7531D549AB406A9C5CDCB5D741275D6A2B5E8A46E5EEEA293A8B30E83CCA29318946E5EF2CDCB0D, 447765222315
+SmsStartRxDelay= 4207, 1, 3
+
+[test3]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx=15000C914477562232510000A795AFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95B86DBF2B07BF3926F5E6EA76E196E8BDFE474D8BD79C9372FF7537AD42DC36D79D83D7D9BE9F7B0BCBC79C9372F373549651675C3E273F3926F5E6E66505864EA927376DA7DA6BFDD9B977CF372179D449D75189412372FF9E6E506, 447765222315,12, 01A0, 0
+SmsTx=15000C914477562232510000A78EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222315,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=040C9144775622325100003060724135804095AFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95B86DBF2B07BF3926F5E6EA76E196E8BDFE474D8BD79C9372FF7537AD42DC36D79D83D7D9BE9F7B0BCBC79C9372F373549651675C3E273F3926F5E6E66505864EA927376DA7DA6BFDD9B977CF372179D449D75189412372FF9E6E506, 447765222315
+SmsRx=040C914477562232510000306062113084408EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222315
+SmsStartRxDelay= 4207, 1, 2
+
+[test123]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx= 15000C914477562232510000A78EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222315,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  040C914477562232510000306062113084408EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222315
+SmsStartRxDelay= 4207, 1, 1
+
+[test5]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C9144775622325100F530600351120340580605040B840B8459060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsStartRxDelay= 0, 0, 3
+
+[test6]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx= 15000C914477562232510000A78EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222315,12, 01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  040C914477562232510000306062113084408EAFD774B82CCA40C2E231E9D45987412971F3926F5E6E6B513A4D3E9D3A992BB679C9372FB7D1A95386D99B977CF3723B75CA307BF3926F5EEEA7F4A88386DDD3B7997E0FCBCB9B977CF3725393546651474CCBCB63FA5BBE79C9372F3733282C3275C9393BED3ED3DFEECD4BBE79B98B4EA2CE3A0C4A899B977CF37203, 447765222315
+SmsStartRxDelay= 4207, 1, 1
+
+[test7]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=
+440C9144775622325100F530600351120340580605040B840B8459060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsStartRxDelay= 0, 0, 1
+
+[test8]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=  440C9144775622325100F530600351120340580605040B840B8459060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsRx=  440C9144775622325100F530600351120340580605040B840B8459060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsStartRxDelay= 0, 0, 2
+
+[test9]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx=
+440C9144775622325100F530600351120340580605040B840B8459060A03AE81EAAF828DC4B48401056A0045C60D0373796D6269616E2E636F6D00110353492F34393534372F323738000AC3072003061613205310C3072003063013205807010320414C45525420000101, 447765222315
+SmsStartRxDelay= 0, 0, 1
+
+[test10]
+DiallingPauseDuration= 3
+ConnectingPauseDuration= 1
+DisconnectingPauseDuration= 5
+AnswerIncomingPauseDuration= 5
+SmsTxPause= 2
+SmsTx= 15000C914477562232510000A791AFD774B864C284381A48583C269D3AEB3028256E5EF2CDCB6D2D4AA7C9A7532773C5362FF9E6E5363A75CA307BF3926F5E6EA74E19666F5EF2CDCBFD941E75D0B07BFA36D3EF617979F3926F5E6E6A92CA2CEA886979794C7FCB372FF9E6E566068545A62E3967A7DD67FADBBD79C9372F77D149D45987412971F3926F5E6E, 447765222315,12,01A0, 0
+SmsAckNackPause= 1
+SmsRxPeriod= 2
+SmsRx= 040C9144775622325100003070700103634091AFD774B864C284381A48583C269D3AEB3028256E5EF2CDCB6D2D4AA7C9A7532773C5362FF9E6E5363A75CA307BF3926F5E6EA74E19666F5EF2CDCBFD941E75D0B07BFA36D3EF617979F3926F5E6E6A92CA2CEA886979794C7FCB372FF9E6E566068545A62E3967A7DD67FADBBD79C9372F77D149D45987412971F3926F5E6E,447765222315
+SmsStartRxDelay= 4207, 1, 1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/testdata/WapStackSuite.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,404 @@
+[COMMON]
+Bearer=3
+Remote_Host=+447765222312
+Local_Host=+447765222312
+Remote_Port=226
+Local_Port=226
+TimeOut=0
+ExError=0
+ExError2=0
+SimTsy=true
+TsyState=411
+WSPHeaderLength=50
+WSPBodyLength=50
+WDPBufLength=30
+AwaitLengthCancel=false
+MiddleCancel=false
+MultiReadCancel=false
+AwaitLengthTwice=false
+DetailedLogging=true
+Secure=0
+WSPMethod=1
+WSPHeaders=GET:
+WSPBody=EMPTY-001-002-003-004-005-006-007-END
+WSPURI=http://wap.wapgateway.com
+
+
+[Test_2.1]
+Bearer=2
+DelayPortClosure=true
+
+[Test_2.1.1]
+Bearer=2
+ExError=-5498
+
+[Test_2.1.2]
+Bearer=2
+Local_Port=5501
+
+[Test_2.1.3]
+Bearer=2
+Local_Port=5502
+
+[Test_2.2]
+Bearer=3
+
+[Test_2.3]
+Bearer=4
+
+[Test_2.4]
+Bearer=5
+
+[Test_2.5]
+Bearer=1
+
+[Test_2.6]
+Bearer=0
+
+[Test_2.7]
+Bearer=-1
+ExError=-5499
+
+[Test_2.8]
+Bearer=3
+Secure=true
+ExError=-5
+
+[Test_2.9]
+Bearer=0
+ExError=-5499
+
+[Test_2.10]
+Bearer=3
+Reconnect=true
+ExError=-14
+
+// API Request without connect 
+[Test_3]
+ExError=-18
+
+// Send and receive VCARD For Bound WDP (single read)
+[Test_4.1.1]
+Bearer=3
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=411
+WDPBufLength=118
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Send and receive VCARD For Bound WDP(Multi read)
+[Test_4.1.2]
+Bearer=3
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=411
+WDPBufLength=30
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Send and receive VCALENDAR For Bound WDP(single read)
+[Test_4.1.3]
+Bearer=2
+Local_Port=228
+Remote_Port=228
+TsyState=413
+Type=VCALENDAR
+WDPBufLength=512
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Send and receive VCALENDAR For Bound WDP(single read)
+[Test_4.1.4]
+Bearer=2
+Local_Port=228
+Remote_Port=228
+TsyState=413
+Type=VCALENDAR
+WDPBufLength=80
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Send and receive VCARD For Bound WDP (single read)
+[Test_4.1.5]
+Bearer=2
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=415
+WDPBufLength=118
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Send and receive Ring Tone for Bound WDP
+[Test_4.1.5.1]
+Bearer=3
+Local_Port=5505
+Remote_Port= 5505
+Type= RINGTONE
+TsyState=426
+Data=024A3A5931BDBDB995E4040044D8F511416615613611624D2544585985584D85185525585584584D84585584584D8934C511624C30DB0D30B38000
+
+// Send and receive Email notification for Bound WDP
+[Test_4.1.5.2]
+Bearer=3
+Local_Port=5512
+Remote_Port= 5512
+Type= EMAILNOTIFICATION
+TsyState=427
+Data=1 new email message\n From: Kamran Nobari <Kamran.Nobari@Symbian.com>\n Subject: test only, please ignore\n size: 42KB\n att:1\n To: Someone <someone@nowhere.com>\n Date: 3 September 2003 +0000\n sender:Kamran.Nobari@symbian.com\n reply-to: someone.else@Symbian.com\n fldr: user.smartme.this.folder.is.for.junk.mail\n
+
+// Send and receive Internet Access configuration for Bound WDP
+[Test_4.1.5.3]
+Bearer=3
+Local_Port=5503
+Remote_Port= 5503
+Type= IACONFIG
+TsyState=428
+Data= Welcome!\n Iname: Demon\n Iuid: psion8\n Ipwd: secret\n Itel: +123456789012345\n Iip: 123.123.123.123\n Idns1: 123.123.123.123\n Idns2: 123.123.123.124
+
+// Send and receive operator logo for Bound WDP
+[Test_4.1.5.4]
+Bearer=3
+Local_Port=5506
+Remote_Port= 5506
+Type=OprtrLogo
+TsyState=429
+Data=3042F450:0A00480E:01000000:00000000:00000000:00000000:0000001E:00000000:02000000:21000001:00020000:00210000:01000200:0000213C:73399CC2:071E7021:228A0522:8208A288:2122FA3D:228208A2
+
+// Cancel For Bound WDP
+[Test_4.1.6]
+Bearer=3
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=411
+WDPBufLength=30
+AwaitLengthCancel=true
+ExError=-3
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Cancel For Bound WDP
+[Test_4.1.7]
+Bearer=3
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=411
+WDPBufLength=30
+MiddleCancel=true
+ExError=-3
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Cancel For Bound WDP
+[Test_4.1.8]
+Bearer=3
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=411
+WDPBufLength=30
+MultiReadCancel=true
+ExError=-3
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// AwaitDataSize twice
+[Test_4.1.9]
+Bearer=3
+Local_Port=226
+Remote_Port=226
+Type=VCARD
+TsyState=411
+WDPBufLength=30
+AwaitLengthTwice=true
+ExError=-14
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Send and receive VCALENDAR For FullySpec WDP(single read)
+[Test_4.2.1]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=421
+WDPBufLength=118
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Send and receive VCALENDAR For FullySpec WDP(multi read)
+[Test_4.2.2]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=421
+WDPBufLength=30
+Data=BEGIN:VCARD\r\nVERSION:2.1\r\nFN:Jal\r\nN:Jal\r\nORG:PanSoftware\r\nTITLE:Director\r\nLABEL:Islington\r\nEND:VCARD\r\n
+
+// Send and receive VCALENDAR For FullySpec WDP(single read)
+[Test_4.2.3]
+Bearer=2
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=423
+WDPBufLength=512
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Send and receive VCALENDAR For FullySpec WDP(Multi read)
+[Test_4.2.4]
+Bearer=2
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=423
+WDPBufLength=30
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Send and receive VCALENDAR For FullySpec WDP(Multi read)
+[Test_4.2.5]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=425
+WDPBufLength=30
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Cancell receiving VCALENDAR For FullySpec WDP
+[Test_4.2.6]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=425
+WDPBufLength=30
+AwaitLengthCancel=true
+ExError=-3
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Cancell receiving VCALENDAR For FullySpec WDP
+[Test_4.2.7]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=425
+WDPBufLength=30
+MiddleCancel=true
+ExError=-3
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+// Cancell receiving VCALENDAR For FullySpec WDP
+[Test_4.2.8]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=425
+ExError=-3
+WDPBufLength=30
+MultiReadCancel=true
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+[Test_4.2.9]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+Type=VCALENDAR
+TsyState=425
+WDPBufLength=30
+AwaitLengthTwice=true
+ExError=-14
+Data=BEGIN:VCALENDAR\nVERSION:1.0\nBEGIN:VEVENT\nCATEGORIES:MEETING\nSTATUS:TENTATIVE\nDTSTART:20010401T033000Z\nDTEND:20010401T043000Z\nSUMMARY:Messaging Meeting\nDESCRIPTION:Britney and Justin to review newest proposal material\nCLASS:PRIVATE\nEND:VEVENT\nEND:VCALENDAR\r\n
+
+
+//AwaitPush For Bound API
+[Test_4.3.1]
+Bearer=3
+Local_Port=2948
+Remote_Port=2948
+TsyState=431
+
+//AwaitPush For Bound API
+[Test_4.3.2]
+Bearer=3
+Local_Port=2948
+Remote_Port=2948
+TsyState=431
+WSPHeaderLength=512
+WSPBodyLength=512
+
+[Test_4.3.3]
+Bearer=3
+Local_Port=2948
+Remote_Port=2948
+TsyState=431
+MiddleCancel=true
+ExError=-3
+
+[Test_4.3.4]
+Bearer=3
+Local_Port=2948
+Remote_Port=2948
+TsyState=431
+MultiReadCancel=true
+ExError=-3
+
+//AwaitPush For FullySpec API
+[Test_4.4.1]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+TsyState=441
+
+//AwaitPush For FullySpec API
+[Test_4.4.2]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+TsyState=441
+WSPHeaderLength=512
+WSPBodyLength=512
+
+//AwaitPush For FullySpec API
+[Test_4.4.3]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+TsyState=441
+MiddleCancel=true
+ExError=-3
+
+//AwaitPush For FullySpec API
+[Test_4.4.4]
+Bearer=3
+Local_Port=1
+Remote_Port=1
+TsyState=441
+MultiReadCancel=true
+ExError=-3
+
+
+//TimeOut
+[Test_6.1]
+Local_Port=2948
+Remote_Port=2948
+WSPHeaderLength=10
+WSPBodyLength=10
+TimeOut=100000
+ExError=-33
+
+//Wrong Sequence
+[Test_7.1]
+WDPBufLength=10
+WSPHeaderLength=10
+WSPBodyLength=10
+TsyState=411
+ExError=-14
+
+//Invalid parameter
+[Test_8]
+WSPMethod=0x30
+WSPHeaders=GET:
+WSPBody=EMPTY-001-002-003-004-005-006-007-END
+WSPURI=http://wap.wapgateway.com
+ExError=-5448
+ExError2=-6
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/testdata/WapStackSuite.xml	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,859 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies).
+ All rights reserved.
+ This component and the accompanying materials are made available
+ under the terms of "Eclipse Public License v1.0"
+ which accompanies this distribution, and is available
+ at the URL "http://www.eclipse.org/legal/epl-v10.html".
+
+ Initial Contributors:
+ Nokia Corporation - initial contribution.
+
+ Contributors:
+
+ Description:
+ CommDB Settings File
+ All Rights Reserved
+
+-->
+
+
+
+<CommDB:Config xmlns="SymbianOS.Generic.Comms-Infras.CommDB"
+               xmlns:CommDB="SymbianOS.Generic.Comms-Infras.CommDB"
+               xmlns:xlink="http://www.w3.org/1999/xlink"
+               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+               xsi:schemaLocation="SymbianOS.Generic.Comms-Infras.CommDB CommDB.xsd">
+
+<InformationTable>
+</InformationTable>
+
+<NetworkTable>
+    <Network operation="add">
+        <Name>Intranet</Name>
+    </Network>
+</NetworkTable>
+
+<IAPTable>
+    <IAP operation="add">
+        <Name>Pipex CSD IR</Name>
+        <IAPService>DialOutISP.TEST Network </IAPService>
+        <IAPBearer>ModemBearer.GSM Mobile Phone via Serial</IAPBearer>
+        <IAPNetwork>Network.Intranet</IAPNetwork>
+        <IAPNetworkWeighting>0</IAPNetworkWeighting>
+        <LocationRef>Location.Office Direct Dial</LocationRef>
+    </IAP>
+</IAPTable>
+
+<ModemBearerTable>
+    <ModemBearer operation="template">
+        <Name>Default Modem</Name>
+        <Agent>CSD.agt</Agent>
+        <IfName>PPP</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>SIM</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>0</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>0</XonChar>
+        <XoffChar>0</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>AT</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageCentreNumber>+44123456789</MessageCentreNumber>
+        <MessageValidityPeriod>1440</MessageValidityPeriod>
+        <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+        <MinimumSignalLevel>9905</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>180</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+    </ModemBearer>
+    <ModemBearer operation="add">
+        <Name>GSM Mobile Phone via Serial 01</Name>
+        <Agent>CSD.agt</Agent>
+        <IfName>PPP</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>SIM</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>196</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>17</XonChar>
+        <XoffChar>19</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>ATZ</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageCentreNumber>+447785016005</MessageCentreNumber>
+        <MessageValidityPeriod>1440</MessageValidityPeriod>
+        <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+        <MinimumSignalLevel>9905</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>180</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+    </ModemBearer>    
+    <ModemBearer operation="add">
+        <Name>GSM Mobile Phone via Serial</Name>
+        <Agent>CSD.agt</Agent>
+        <IfName>PPP</IfName>
+        <PortName>COMM::0</PortName>
+        <TSYName>SIM</TSYName>
+        <CSYName>ECUART</CSYName>
+        <DataBits>8</DataBits>
+        <StopBits>1</StopBits>
+        <Parity>NONE</Parity>
+        <Rate>115200</Rate>
+        <Handshaking>196</Handshaking>
+        <SpecialRate>0</SpecialRate>
+        <XonChar>17</XonChar>
+        <XoffChar>19</XoffChar>
+        <FaxClassPref>AUTO</FaxClassPref>
+        <SpeakerPref>NEVER</SpeakerPref>
+        <SpeakerVolPref>QUIET</SpeakerVolPref>
+        <ModemInitString>ATZ</ModemInitString>
+        <DataInitString>AT</DataInitString>
+        <FaxInitString>AT</FaxInitString>
+        <DialPauseLength>S8=</DialPauseLength>
+        <SpeakerVolContorlLow>L0</SpeakerVolContorlLow>
+        <SpeakerVolControlMedium>L1</SpeakerVolControlMedium>
+        <SpeakerVolControlHigh>L2</SpeakerVolControlHigh>
+        <SpeakerAlwaysOff>M0</SpeakerAlwaysOff>
+        <SpeakerOnUntilCarrier>M1</SpeakerOnUntilCarrier>
+        <SpeakerAlwaysOn>M2</SpeakerAlwaysOn>
+        <SpeakerOnAfterUntilCarrier>M3</SpeakerOnAfterUntilCarrier>
+        <DialToneWaitModifier>W</DialToneWaitModifier>
+        <CallProgress1>X1</CallProgress1>
+        <CallProgress2>X2</CallProgress2>
+        <CallProgress3>X3</CallProgress3>
+        <CallProgress4>X4</CallProgress4>
+        <EchoOff>E0</EchoOff>
+        <VerboseText>V1</VerboseText>
+        <QuietOff>Q0</QuietOff>
+        <QuietOn>Q1</QuietOn>
+        <DialCommandStateModifier>;</DialCommandStateModifier>
+        <OnLine>O</OnLine>
+        <ResetConfiguration>Z</ResetConfiguration>
+        <ReturnToFactoryDefs>&amp;F</ReturnToFactoryDefs>
+        <DCDOnDuringLink>&amp;C1</DCDOnDuringLink>
+        <DTRHangUp>&amp;D2</DTRHangUp>
+        <DSRAlwaysOn>&amp;S0</DSRAlwaysOn>
+        <RTSCTSHandshake>&amp;K3</RTSCTSHandshake>
+        <XonXoffHandshake>&amp;K4</XonXoffHandshake>
+        <EscapeCharacter>+</EscapeCharacter>
+        <EscapeGuardPeriod>S12</EscapeGuardPeriod>
+        <NoDialTone>NO DIAL TONE</NoDialTone>
+        <Busy>BUSY</Busy>
+        <NoAnswer>NO ANSWER</NoAnswer>
+        <Carrier>CARRIER</Carrier>
+        <Connect>CONNECT</Connect>
+        <CompressionClass5>COMPRESSION:CLASS 5</CompressionClass5>
+        <CompressionV42bis>COMPRESSION:V.42 bis</CompressionV42bis>
+        <CompressionNone>COMPRESSION:NONE</CompressionNone>
+        <ProtocolLAPD>PROTOCOL:LAPD</ProtocolLAPD>
+        <ProtocolALT>PROTOCOL:ALT</ProtocolALT>
+        <ProtocolALTCELLULAR>PROTOCOL:ALT-CELLULAR</ProtocolALTCELLULAR>
+        <ProtocolNone>PROTOCOL:NONE</ProtocolNone>
+        <MessageCentreNumber>+447785016005</MessageCentreNumber>
+        <MessageValidityPeriod>1440</MessageValidityPeriod>
+        <MessageDeliveryReport>FALSE</MessageDeliveryReport>
+        <MinimumSignalLevel>9905</MinimumSignalLevel>
+        <LastSocketActivityTimeout>30</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>180</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>30</LastSocketClosedTimeout>
+    </ModemBearer>
+</ModemBearerTable>
+
+<LANBearerTable>
+    <LANBearer operation="add">
+        <Name>Assabet on-board Ethernet</Name>
+        <Agent>nullagent.agt</Agent>
+        <IfName>ethint</IfName>
+        <LDDName>not used</LDDName>
+        <PDDName>not used</PDDName>
+        <LastSocketActivityTimeout>-1</LastSocketActivityTimeout>
+        <LastSessionClosedTimeout>-1</LastSessionClosedTimeout>
+        <LastSocketClosedTimeout>-1</LastSocketClosedTimeout>
+    </LANBearer>
+</LANBearerTable>
+
+<LANServiceTable>
+    <LANService operation="add">
+        <Name>Ethernet</Name>
+        <IfNetworks>ip,ip6</IfNetworks>
+        <IpNetMask>255.255.255.0</IpNetMask>
+        <IpGateway>194.72.6.1</IpGateway>
+        <IpAddr>192.168.0.100</IpAddr>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <IpNameServer1>194.72.6.51</IpNameServer1>
+        <IpNameServer2>194.72.6.52</IpNameServer2>
+    </LANService>
+</LANServiceTable>
+
+<DialInISPTable>
+    <DialInISP operation="template">
+        <Name>Default Dial In ISP</Name>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <UseEdge>FALSE</UseEdge>
+    </DialInISP>
+    <DialInISP operation="add">
+        <Name>Dial In ISP01</Name>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <UseEdge>FALSE</UseEdge>
+    </DialInISP>
+</DialInISPTable>
+
+<DialOutISPTable>
+    <DialOutISP operation="template">
+        <Name>Default Dial Out ISP</Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <PromptForLogin>TRUE</PromptForLogin>
+        <IfPromptForAuth>TRUE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <CallbackTimeout>0</CallbackTimeout>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+    <DialOutISP operation="add">
+        <Name>TEST0 Network </Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <PromptForLogin>FALSE</PromptForLogin>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <Description>dial in test network </Description>
+        <Type>INTERNETANDWAP</Type>
+        <DefaultTelNum>02075632200</DefaultTelNum>
+        <LoginName>wapusr</LoginName>
+        <LoginPass>train</LoginPass>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>wapusr</IfAuthName>
+        <IfAuthPass>train</IfAuthPass>
+        <AuthRetries>0</AuthRetries>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <CallbackTimeout>0</CallbackTimeout>
+        <IpNameServer1>158.43.128.1</IpNameServer1>
+        <IpNameServer2>158.43.192.1</IpNameServer2>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerName>ASYNCHRONOUS</BearerName>
+        <BearerSpeed>UNSPECIFIED</BearerSpeed>
+        <BearerCE>UNSPECIFIED</BearerCE>
+        <BearerType>CSD</BearerType>
+        <ChannelCoding>UNSPECIFIED</ChannelCoding>
+        <AIUR>UNSPECIFIED</AIUR>
+        <RequestedTimeSlots>0</RequestedTimeSlots>
+        <MaximumTimeSlots>0</MaximumTimeSlots>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>    
+    <DialOutISP operation="add">
+        <Name>TEST Network </Name>
+        <DialResolution>TRUE</DialResolution>
+        <UseLoginScript>FALSE</UseLoginScript>
+        <PromptForLogin>FALSE</PromptForLogin>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <Description>dial in test network </Description>
+        <Type>INTERNETANDWAP</Type>
+        <DefaultTelNum>02075632200</DefaultTelNum>
+        <LoginName>wapusr</LoginName>
+        <LoginPass>train</LoginPass>
+        <DisplayPCT>FALSE</DisplayPCT>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>wapusr</IfAuthName>
+        <IfAuthPass>train</IfAuthPass>
+        <AuthRetries>0</AuthRetries>
+        <IfCallbackEnabled>FALSE</IfCallbackEnabled>
+        <CallbackTimeout>0</CallbackTimeout>
+        <IpNameServer1>158.43.128.1</IpNameServer1>
+        <IpNameServer2>158.43.192.1</IpNameServer2>
+        <EnableIPHeaderComp>FALSE</EnableIPHeaderComp>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <EnableSWComp>FALSE</EnableSWComp>
+        <BearerService>0</BearerService>
+        <BearerName>ASYNCHRONOUS</BearerName>
+        <BearerSpeed>UNSPECIFIED</BearerSpeed>
+        <BearerCE>UNSPECIFIED</BearerCE>
+        <BearerType>CSD</BearerType>
+        <ChannelCoding>UNSPECIFIED</ChannelCoding>
+        <AIUR>UNSPECIFIED</AIUR>
+        <RequestedTimeSlots>0</RequestedTimeSlots>
+        <MaximumTimeSlots>0</MaximumTimeSlots>
+        <BearerProtocol>0</BearerProtocol>
+        <RlpVersion>0</RlpVersion>
+        <IwfToMs>0</IwfToMs>
+        <MsToIwf>0</MsToIwf>
+        <AckTimer>0</AckTimer>
+        <RetransmissionAttempts>0</RetransmissionAttempts>
+        <ResequencePeriod>0</ResequencePeriod>
+        <V42Compression>0</V42Compression>
+        <V42Codewords>0</V42Codewords>
+        <V42MaxLength>0</V42MaxLength>
+        <Asymmetry>0</Asymmetry>
+        <UserInitUpgrade>FALSE</UserInitUpgrade>
+        <UseEdge>FALSE</UseEdge>
+    </DialOutISP>
+</DialOutISPTable>
+
+<AgentLookupTable>
+</AgentLookupTable>
+
+<CDMA2000PacketServiceTable>
+    <CDMA2000PacketService operation="add">
+        <Name>test name cdma2000</Name>
+        <IwfName>Test2000</IwfName>
+        <ServiceOption>HIGHSPEEDCDMA2000DATA</ServiceOption>
+        <PdpType>IPV4</PdpType>
+        <ReqFwdPriority>PRIORITY04</ReqFwdPriority>
+        <ReqRevPriority>PRIORITY04</ReqRevPriority>
+        <ReqFwdBitrate>32KBPS</ReqFwdBitrate>
+        <ReqRevBitrate>32KBPS</ReqRevBitrate>
+        <ReqFwdLoss>LOSS1</ReqFwdLoss>
+        <ReqRevLoss>LOSS1</ReqRevLoss>
+        <ReqFwdMaxdelay>40MS</ReqFwdMaxdelay>
+        <ReqRevMaxdelay>40MS</ReqRevMaxdelay>
+        <MinFwdBitrate>32KBPS</MinFwdBitrate>
+        <MinRevBitrate>32KBPS</MinRevBitrate>
+        <AccptFwdLoss>LOSS2</AccptFwdLoss>
+        <AccptRevLoss>LOSS2</AccptRevLoss>
+        <AccptFwdMaxdelay>120MS</AccptFwdMaxdelay>
+        <AccptRevMaxdelay>120MS</AccptRevMaxdelay>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>pass</IfAuthPass>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <AuthRetries>1</AuthRetries>
+        <IpNetMask>0.255.255.255</IpNetMask>
+        <IpGateway>10.0.0.1</IpGateway>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <EnableLCPExtension>TRUE</EnableLCPExtension>
+        <DisablePlainTextAuth>TRUE</DisablePlainTextAuth>
+        <ApType>2</ApType>
+        <QosWarningTimeout>1000000</QosWarningTimeout>
+        <RlpMode>TRANSPARENT</RlpMode>
+        <CDMAMobileIP>FALSE</CDMAMobileIP>
+        <CDMAMobileIPTimeout>10000000</CDMAMobileIPTimeout>
+    </CDMA2000PacketService>
+</CDMA2000PacketServiceTable>
+
+<DefaultCDMA2000Table>
+</DefaultCDMA2000Table>
+
+<ChargecardTable>
+    <Chargecard operation="add">
+        <Name>Dummy BT Chargecard</Name>
+        <AccountNumber>144,12345678</AccountNumber>
+        <Pin>0000</Pin>
+        <LocalRule>HG</LocalRule>
+        <NatRule>HFG</NatRule>
+        <IntlRule>HEFG</IntlRule>
+    </Chargecard>
+    <Chargecard operation="add">
+        <Name>Dummy Mercury Chargecard</Name>
+        <AccountNumber>0500800800,,12345678</AccountNumber>
+        <Pin>****</Pin>
+        <LocalRule>HG</LocalRule>
+        <NatRule>J,K,0FG</NatRule>
+        <IntlRule>HEFG</IntlRule>
+    </Chargecard>
+</ChargecardTable>
+
+<ConnectionPreferencesTable>
+    <ConnectionPreferences operation="add">
+        <Name>ConnectionPreferencesTable1</Name>
+        <Ranking>1</Ranking>
+        <Direction>OUTGOING</Direction>
+        <DialogPref>DONOTPROMPT</DialogPref>
+        <BearerSet>CSD</BearerSet>
+        <IAPRef>IAP.Pipex CSD IR</IAPRef>
+    </ConnectionPreferences>
+    <ConnectionPreferences operation="add">
+        <Name>ConnectionPreferencesTable2</Name>
+        <Ranking>2</Ranking>
+        <Direction>OUTGOING</Direction>
+        <DialogPref>DONOTPROMPT</DialogPref>
+        <BearerSet>CSD</BearerSet>
+        <IAPRef>IAP.Pipex CSD IR</IAPRef>
+    </ConnectionPreferences>
+</ConnectionPreferencesTable>
+
+<GlobalSettingsTable>
+    <GlobalSettings operation="add">
+        <Name>GlobalSettingsTable1</Name>
+        <WAPAccess>WAPAccessPoint.Default Dial In ISP</WAPAccess>
+        <RedialAttempts>3</RedialAttempts>
+        <SmsBearer>WAPSMSBearer.WAPSMSBearerTable1</SmsBearer>
+        <SmsReceiveMode>2</SmsReceiveMode>
+        <GPRSAttachMode>1</GPRSAttachMode>
+        <AcceptIncomingGprs>1</AcceptIncomingGprs>
+        <ConnectionAttempts>2</ConnectionAttempts>
+        <ModemForDataAndFax>2</ModemForDataAndFax>
+        <ModemForPhoneServicesAndSMS>2</ModemForPhoneServicesAndSMS>
+        <LocationForDataAndFax>Location.Office</LocationForDataAndFax>
+        <LocationForPhoneServicesAndSMS>Location.Office</LocationForPhoneServicesAndSMS>
+        <GPRSClassCBearer>GSM</GPRSClassCBearer>
+        <DefaultNetwork>Network.Intranet</DefaultNetwork>
+        <BearerAvailabilityCheckTSY>mm</BearerAvailabilityCheckTSY>
+    </GlobalSettings>
+</GlobalSettingsTable>
+
+<IncomingGPRSTable>
+    <IncomingGPRS operation="add">
+        <Name>Incoming GPRS Settings PlaceHolder</Name>
+        <APN>Test</APN>
+        <PDPType>IPV4</PDPType>
+        <PDPAddress>0.0.0.0</PDPAddress>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>TRUE</IpDNSAddrFromServer>
+        <ReqPrecedence>1</ReqPrecedence>
+        <ReqDelay>1</ReqDelay>
+        <ReqReliability>1</ReqReliability>
+        <ReqPeakThroughput>1</ReqPeakThroughput>
+        <ReqMeanThroughput>1</ReqMeanThroughput>
+        <MinPrecedence>1</MinPrecedence>
+        <MinDelay>1</MinDelay>
+        <MinReliability>1</MinReliability>
+        <MinPeakThroughput>1</MinPeakThroughput>
+        <MinMeanThroughput>1</MinMeanThroughput>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <IfAuthName>RasUser</IfAuthName>
+        <IfAuthPass>pass</IfAuthPass>
+        <AuthRetries>1</AuthRetries>
+        <IpNameServer1>0.0.0.0</IpNameServer1>
+        <IpNameServer2>0.0.0.0</IpNameServer2>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+    </IncomingGPRS>
+</IncomingGPRSTable>
+
+<OutgoingGPRSTable>
+    <OutgoingGPRS operation="add">
+        <Name>GPRS01</Name>
+        <APN>gprs01APNPlaceHolder</APN>
+        <PDPType>IPV4</PDPType>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <ReqPrecedence>0</ReqPrecedence>
+        <ReqDelay>0</ReqDelay>
+        <ReqReliability>0</ReqReliability>
+        <ReqPeakThroughput>0</ReqPeakThroughput>
+        <ReqMeanThroughput>0</ReqMeanThroughput>
+        <MinPrecedence>0</MinPrecedence>
+        <MinDelay>0</MinDelay>
+        <MinReliability>0</MinReliability>
+        <MinPeakThroughput>0</MinPeakThroughput>
+        <MinMeanThroughput>0</MinMeanThroughput>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <AuthRetries>1</AuthRetries>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+        <GprsAccessPointType>0</GprsAccessPointType>
+        <QosWarningTimeout>0</QosWarningTimeout>
+    </OutgoingGPRS>
+    <OutgoingGPRS operation="add">
+        <Name>GPRS02</Name>
+        <APN>gprs02APNPlaceHolder</APN>
+        <PDPType>IPV4</PDPType>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <ReqPrecedence>0</ReqPrecedence>
+        <ReqDelay>0</ReqDelay>
+        <ReqReliability>0</ReqReliability>
+        <ReqPeakThroughput>0</ReqPeakThroughput>
+        <ReqMeanThroughput>0</ReqMeanThroughput>
+        <MinPrecedence>0</MinPrecedence>
+        <MinDelay>0</MinDelay>
+        <MinReliability>0</MinReliability>
+        <MinPeakThroughput>0</MinPeakThroughput>
+        <MinMeanThroughput>0</MinMeanThroughput>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <AuthRetries>1</AuthRetries>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+        <GprsAccessPointType>0</GprsAccessPointType>
+        <QosWarningTimeout>0</QosWarningTimeout>
+    </OutgoingGPRS>
+    <OutgoingGPRS operation="add">
+        <Name>GPRS03</Name>
+        <APN>gprs03APNPlaceHolder</APN>
+        <PDPType>IPV4</PDPType>
+        <IfPromptForAuth>FALSE</IfPromptForAuth>
+        <IpAddrFromServer>TRUE</IpAddrFromServer>
+        <IpDNSAddrFromServer>FALSE</IpDNSAddrFromServer>
+        <ReqPrecedence>0</ReqPrecedence>
+        <ReqDelay>0</ReqDelay>
+        <ReqReliability>0</ReqReliability>
+        <ReqPeakThroughput>0</ReqPeakThroughput>
+        <ReqMeanThroughput>0</ReqMeanThroughput>
+        <MinPrecedence>0</MinPrecedence>
+        <MinDelay>0</MinDelay>
+        <MinReliability>0</MinReliability>
+        <MinPeakThroughput>0</MinPeakThroughput>
+        <MinMeanThroughput>0</MinMeanThroughput>
+        <DataCompression>FALSE</DataCompression>
+        <HeaderCompression>FALSE</HeaderCompression>
+        <AnonymousAccess>FALSE</AnonymousAccess>
+        <IfNetworks>ip</IfNetworks>
+        <AuthRetries>1</AuthRetries>
+        <EnableLCPExtension>FALSE</EnableLCPExtension>
+        <DisablePlainTextAuth>FALSE</DisablePlainTextAuth>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+        <GprsAccessPointType>0</GprsAccessPointType>
+        <QosWarningTimeout>0</QosWarningTimeout>
+    </OutgoingGPRS>
+</OutgoingGPRSTable>
+
+<DefaultGPRSTable>
+    <DefaultGPRS operation="add">
+        <Name>Dummy Default GPRS Settings</Name>
+        <APN>Access point name</APN>
+        <PDPType>IPV6</PDPType>
+        <PDPAddress>www.wid.com</PDPAddress>
+        <Usage>1</Usage>
+        <Precedence>1</Precedence>
+        <Delay>1</Delay>
+        <Reliability>1</Reliability>
+        <PeakThroughput>1</PeakThroughput>
+        <MeanThroughput>1</MeanThroughput>
+        <MinPrecedence>1</MinPrecedence>
+        <MinDelay>1</MinDelay>
+        <MinReliability>1</MinReliability>
+        <MinPeakThroughput>1</MinPeakThroughput>
+        <MinMeanThroughput>1</MinMeanThroughput>
+        <DataCompression>TRUE</DataCompression>
+        <HeaderCompression>TRUE</HeaderCompression>
+        <GprsUseEdge>FALSE</GprsUseEdge>
+        <AnonymousAccess>TRUE</AnonymousAccess>
+    </DefaultGPRS>
+</DefaultGPRSTable>
+
+<ProxyTable>
+    <Proxy operation="add">
+        <Name>ProxyTable1</Name>
+        <ISPRef>DialOutISP.TEST Network </ISPRef>
+        <UseProxyServer>TRUE</UseProxyServer>
+        <ProtocolName>http</ProtocolName>
+        <ProxyServerName>www.dummyproxy.com</ProxyServerName>
+        <PortNumber>80</PortNumber>
+        <Exceptions>www.dummyproxy.com/exception</Exceptions>
+    </Proxy>
+</ProxyTable>
+
+<LocationTable>
+    <Location operation="template">
+        <Name>Default Location</Name>
+        <Mobile>TRUE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>+</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+    </Location>
+    <Location operation="add">
+        <Name>Office</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>171</AreaCode>
+        <DialOutCode>9,</DialOutCode>
+    </Location>
+        <Location operation="add">
+        <Name>Office temp</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>171</AreaCode>
+    </Location>
+    <Location operation="add">
+        <Name>Office Direct Dial</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>171</AreaCode>
+    </Location>
+    <Location operation="add">
+        <Name>Mobile</Name>
+        <Mobile>TRUE</Mobile>
+        <UsePulseDial>FALSE</UsePulseDial>
+        <WaitForDialTone>FALSE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>+</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+    </Location>
+    <Location operation="add">
+        <Name>Home</Name>
+        <Mobile>FALSE</Mobile>
+        <UsePulseDial>TRUE</UsePulseDial>
+        <WaitForDialTone>TRUE</WaitForDialTone>
+        <PauseAfterDialout>0</PauseAfterDialout>
+        <IntlPrefixCode>00</IntlPrefixCode>
+        <NatPrefixCode>0</NatPrefixCode>
+        <NatCode>44</NatCode>
+        <AreaCode>181</AreaCode>
+    </Location>
+</LocationTable>
+
+<SecureSocketTable>
+    <SecureSocket operation="add">
+        <Name>SecureSocketTable1</Name>
+        <ProtocolName>ssl3.0</ProtocolName>
+        <ProtoLibrary>ssladaptor.dll</ProtoLibrary>
+    </SecureSocket>
+    <SecureSocket operation="add">
+        <Name>SecureSocketTable2</Name>
+        <ProtocolName>tls1.0</ProtocolName>
+        <ProtoLibrary>ssladaptor.dll</ProtoLibrary>
+    </SecureSocket>
+</SecureSocketTable>
+
+<BTDeviceTable>
+</BTDeviceTable>
+
+<BTPersistTable>
+</BTPersistTable>
+
+<BTSecurityTable>
+</BTSecurityTable>
+
+<BTDefaultTable>
+</BTDefaultTable>
+
+<WAPAccessPointTable>
+    <WAPAccessPoint operation="template">
+        <Name>Default Dial In ISP</Name>
+        <CurrentBearer>WAPIPBearer</CurrentBearer>
+    </WAPAccessPoint>
+    <WAPAccessPoint operation="add">
+        <Name>Dummy1 WAP Settings</Name>
+        <CurrentBearer>WAPIPBearer</CurrentBearer>
+        <StartPage>www.wapstart.com</StartPage>
+    </WAPAccessPoint>    
+    <WAPAccessPoint operation="add">
+        <Name>Dummy WAP Settings</Name>
+        <CurrentBearer>WAPIPBearer</CurrentBearer>
+        <StartPage>www.wapstart.com</StartPage>
+    </WAPAccessPoint>
+</WAPAccessPointTable>
+
+<WAPIPBearerTable>
+    <WAPIPBearer operation="template">
+        <Name>WAPIPBearerTable1</Name>
+        <AccessPoint>WAPAccessPoint.-1</AccessPoint>
+        <WSPOption>CONNECTIONLESS</WSPOption>
+        <Security>FALSE</Security>
+        <IAPRef>IAP.-1</IAPRef>
+        <ProxyPortNumber>0</ProxyPortNumber>
+    </WAPIPBearer>
+    <WAPIPBearer operation="add">
+        <Name>WAPIPBearerTable2</Name>
+        <AccessPoint>WAPAccessPoint.Dummy WAP Settings</AccessPoint>
+        <GatewayAddress>www.wapgateway.com</GatewayAddress>
+        <WSPOption>CONNECTIONORIENTED</WSPOption>
+        <Security>FALSE</Security>
+        <IAPRef>IAP.Pipex CSD IR</IAPRef>
+        <ProxyPortNumber>1</ProxyPortNumber>
+    </WAPIPBearer>
+</WAPIPBearerTable>
+
+<WAPSMSBearerTable>
+    <WAPSMSBearer operation="template">
+        <Name>WAPSMSBearerTable1</Name>
+        <AccessPoint>WAPAccessPoint.-1</AccessPoint>
+        <WSPOption>CONNECTIONLESS</WSPOption>
+        <Security>FALSE</Security>
+    </WAPSMSBearer>
+    <WAPSMSBearer operation="add">
+        <Name>WAPSMSBearerTable2</Name>
+        <AccessPoint>WAPAccessPoint.Dummy WAP Settings</AccessPoint>
+        <GatewayAddress>+447785016005</GatewayAddress>
+        <WSPOption>CONNECTIONORIENTED</WSPOption>
+        <Security>FALSE</Security>
+        <ServiceCentreAddress>+442071234567</ServiceCentreAddress>
+    </WAPSMSBearer>
+</WAPSMSBearerTable>
+
+<VirtualBearerTable>
+</VirtualBearerTable>
+
+<VpnServiceTable>
+</VpnServiceTable>
+
+
+</CommDB:Config>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wapstack/wapmessageapi/te_wapstack/testdata/WapStackSuite_Config.ini	Tue Jul 06 15:36:38 2010 +0300
@@ -0,0 +1,1 @@
+RadioBearer= CDMA
\ No newline at end of file
Binary file wapstack/wapmessageapi/te_wapstack/testdata/pushpdu.bin has changed