Revision: 201031 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 10:44:50 +0300
branchRCL_3
changeset 24 13d7c31c74e0
parent 23 4af31167ea77
child 25 b183ec05bd8c
Revision: 201031 Kit: 201033
dcmofw/dcmoclient/bwins/dcmoclientu.def
dcmofw/dcmoclient/eabi/dcmoclientu.def
dcmofw/dcmoclient/src/dcmoclient.cpp
dcmofw/dcmoserver/group/dcmoserver.mmp
dcmofw/dcmoserver/inc/amsmlhelper.h
dcmofw/dcmoserver/inc/dcmoserver.h
dcmofw/dcmoserver/src/AMSmlHelper.cpp
dcmofw/dcmoserver/src/dcmoserver.cpp
dcmofw/dcmoserver/src/dcmosession.cpp
dcmofw/group/bld.inf
dcmofw/inc/dcmoclientserver.h
dcmofw/inc/lawmodebug.h
dcmofw/lawmoclient/bwins/lawmoclientu.def
dcmofw/lawmoclient/eabi/lawmoclientu.def
dcmofw/lawmoclient/group/bld.inf
dcmofw/lawmoclient/group/lawmoclient.mmp
dcmofw/lawmoclient/src/lawmoclient.cpp
dcmofw/rom/dcmofw.iby
dcmofw/rom/dcmofwresources.iby
fotaapplication/fotaserver/FotaServer/group/fotaserver.mmp
fotaapplication/fotaserver/FotaServer/src/fotadownload.cpp
remotemgmt_plat/dcmo_adapter_api/inc/DcmoConst.h
remotemgmt_plat/dcmo_control_api/group/bld.inf
remotemgmt_plat/dcmo_control_api/inc/dcmoClient.h
remotemgmt_plat/dcmo_control_api/inc/lawmoclient.h
remotemgmt_plat/device_management_parameter_api/group/bld.inf
remotemgmt_plat/device_management_parameter_api/inc/DevManInternalCRKeys.h
remotemgmt_plat/device_management_parameter_api/inc/lawmoadaptercrkeys.h
remotemgmt_plat/group/bld.inf
remotemgmt_plat/lawmo_plugin_api/group/bld.inf
remotemgmt_plat/lawmo_plugin_api/inc/lawmocallbackinterface.h
remotemgmt_plat/lawmo_plugin_api/inc/lawmointerface.h
remotemgmt_plat/lawmo_plugin_api/inc/lawmointerface.inl
remotemgmt_plat/scp_server_api/inc/SCPClient.h
remotemgmt_plat/syncml_client_api/inc/SyncMLErr.h
remotemgmt_plat/terminal_security_device_lock_api/inc/TerminalControl3rdPartyAPI.h
syncmlfw/common/sosserver/inc/nsmlsosthread.h
syncmlfw/common/sosserver/src/nsmlsosthread.cpp
syncmlfw/common/syncagent/bld/DEF/bwinscwu.def
syncmlfw/common/syncagent/bld/DEF/eabiu.def
syncmlfw/common/syncagent/inc/NSmlStatusContainer.h
syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp
syncmlfw/conf/datasync.confml
syncmlfw/conf/datasync_2000CF7E.crml
syncmlfw/conf/devman.confml
syncmlfw/conf/devman_101F9A0A.crml
syncmlfw/dm/adapters/inc/nsmldmimpluids.h
syncmlfw/dm/settings/src/DMProfileContentHandler.cpp
syncmlfw/dm/settings/src/NSmlDMResourceProfiles.cpp
syncmlfw/dm/syncagent/src/nsmldmcmds.cpp
syncmlfw/dm/treemodule/src/nsmldmddf.cpp
syncmlfw/ds/syncagent/src/nsmldsagent.cpp
syncmlfw/ds/syncagent/src/nsmldscmds.cpp
syncmlfw/syncmlnotifier/src/SyncMLDlgNotifier.cpp
syncmlfw/syncmlnotifier/src/SyncMLTimedInputTextQuery.cpp
terminalsecurity/SCP/SCPClient/data/SCPNotifier.rss
terminalsecurity/SCP/SCPClient/group/SCPClient.mmp
terminalsecurity/SCP/SCPClient/inc/SCPQueryDialog.h
terminalsecurity/SCP/SCPClient/loc/SCPNotifier.loc
terminalsecurity/SCP/SCPClient/src/SCPClient.cpp
terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp
terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp
terminalsecurity/SCP/SCPDatabase/src/SCPParamDBController.cpp
terminalsecurity/SCP/SCPServer/inc/SCPConfiguration.h
terminalsecurity/SCP/SCPServer/inc/SCPServer.h
terminalsecurity/SCP/SCPServer/src/SCPConfiguration.cpp
terminalsecurity/SCP/SCPServer/src/SCPServer.cpp
terminalsecurity/SCP/SCPServer/src/SCPSession.cpp
terminalsecurity/SCP/SCPTimestampPlugin/src/SCPTimestampPlugin.cpp
terminalsecurity/SCP/inc/SCPLockCode.h
terminalsecurity/client/BWINS/TerminalControlu.def
terminalsecurity/client/eabi/TerminalControlu.def
terminalsecurity/client/src/TerminalControlClient.cpp
terminalsecurity/conf/Keys_SCPLockCode.confml
terminalsecurity/conf/Keys_SCPLockCode_2002677B.crml
terminalsecurity/inc/TerminalControlClientServer.h
terminalsecurity/server/inc/TerminalControlServer.h
terminalsecurity/server/src/TerminalControlServer.cpp
terminalsecurity/server/src/TerminalControlSession.cpp
--- a/dcmofw/dcmoclient/bwins/dcmoclientu.def	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoclient/bwins/dcmoclientu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -1,3 +1,11 @@
 EXPORTS
 	?NewL@RDCMOClient@@SAPAV1@XZ @ 1 NONAME ; class RDCMOClient * RDCMOClient::NewL(void)
+	?SearchByGroupValue@RDCMOClient@@UAEXAAVTDes16@@0@Z @ 2 NONAME ; void RDCMOClient::SearchByGroupValue(class TDes16 &, class TDes16 &)
+	?GetDCMOStrAttributeValue@RDCMOClient@@UAE?AW4TDCMOStatus@@AAVTDes16@@W4TDCMONode@@0@Z @ 3 NONAME ; enum TDCMOStatus RDCMOClient::GetDCMOStrAttributeValue(class TDes16 &, enum TDCMONode, class TDes16 &)
+	?SetDCMOIntAttributeValue@RDCMOClient@@UAE?AW4TDCMOStatus@@AAVTDes16@@W4TDCMONode@@H@Z @ 4 NONAME ; enum TDCMOStatus RDCMOClient::SetDCMOIntAttributeValue(class TDes16 &, enum TDCMONode, int)
+	?OpenL@RDCMOClient@@UAEHXZ @ 5 NONAME ; int RDCMOClient::OpenL(void)
+	?GetDCMOIntAttributeValue@RDCMOClient@@UAE?AW4TDCMOStatus@@AAVTDes16@@W4TDCMONode@@AAH@Z @ 6 NONAME ; enum TDCMOStatus RDCMOClient::GetDCMOIntAttributeValue(class TDes16 &, enum TDCMONode, int &)
+	??1RDCMOClient@@UAE@XZ @ 7 NONAME ; RDCMOClient::~RDCMOClient(void)
+	?Close@RDCMOClient@@UAEXXZ @ 8 NONAME ; void RDCMOClient::Close(void)
+	?SetDCMOStrAttributeValue@RDCMOClient@@UAE?AW4TDCMOStatus@@AAVTDes16@@W4TDCMONode@@0@Z @ 9 NONAME ; enum TDCMOStatus RDCMOClient::SetDCMOStrAttributeValue(class TDes16 &, enum TDCMONode, class TDes16 &)
 
--- a/dcmofw/dcmoclient/eabi/dcmoclientu.def	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoclient/eabi/dcmoclientu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -2,4 +2,14 @@
 	_ZN11RDCMOClient4NewLEv @ 1 NONAME
 	_ZTI11RDCMOClient @ 2 NONAME ; #<TI>#
 	_ZTV11RDCMOClient @ 3 NONAME ; #<VT>#
+	_ZN11RDCMOClient18SearchByGroupValueER6TDes16S1_ @ 4 NONAME
+	_ZN11RDCMOClient24GetDCMOIntAttributeValueER6TDes169TDCMONodeRi @ 5 NONAME
+	_ZN11RDCMOClient24GetDCMOStrAttributeValueER6TDes169TDCMONodeS1_ @ 6 NONAME
+	_ZN11RDCMOClient24SetDCMOIntAttributeValueER6TDes169TDCMONodei @ 7 NONAME
+	_ZN11RDCMOClient24SetDCMOStrAttributeValueER6TDes169TDCMONodeS1_ @ 8 NONAME
+	_ZN11RDCMOClient5CloseEv @ 9 NONAME
+	_ZN11RDCMOClient5OpenLEv @ 10 NONAME
+	_ZN11RDCMOClientD0Ev @ 11 NONAME
+	_ZN11RDCMOClientD1Ev @ 12 NONAME
+	_ZN11RDCMOClientD2Ev @ 13 NONAME
 
--- a/dcmofw/dcmoclient/src/dcmoclient.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoclient/src/dcmoclient.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -87,7 +87,7 @@
 // Destructor.
 // -----------------------------------------------------------------------------
 //
-RDCMOClient::~RDCMOClient()
+EXPORT_C RDCMOClient::~RDCMOClient()
 {
     Close();
 }	
@@ -95,7 +95,7 @@
 // ---------------------------------------------------------------------------
 // RDCMOClient::OpenL()
 // ---------------------------------------------------------------------------
-TInt RDCMOClient::OpenL()
+EXPORT_C TInt RDCMOClient::OpenL()
 	{	
 	RDEBUG("RDCMOClient::OpenL()- Begin");
 	TInt res = KErrNone;	
@@ -115,7 +115,7 @@
 // ---------------------------------------------------------------------------
 // RDCMOClient::Close()
 // ---------------------------------------------------------------------------
-void RDCMOClient::Close()
+EXPORT_C void RDCMOClient::Close()
 	{
 	RDEBUG(" RDCMOClient::Close");
 	RSessionBase::Close();  //basecall
@@ -125,7 +125,7 @@
 // ----------------------------------------------------------------------------
 // RDCMOClient::GetDCMOIntAttributeValue()
 // ----------------------------------------------------------------------------	
-TDCMOStatus RDCMOClient::GetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt& aValue)
+EXPORT_C TDCMOStatus RDCMOClient::GetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt& aValue)
 	{		
     RDEBUG(" RDCMOClient::GetDCMOIntAttributeValue--Begin");
 	TPckg<TDCMONode> p(aId);
@@ -142,7 +142,7 @@
 // ----------------------------------------------------------------------------
 // RDCMOClient::GetDCMOStrAttributeValue()
 // ----------------------------------------------------------------------------	
-TDCMOStatus RDCMOClient::GetDCMOStrAttributeValue(TDes& aCategory, TDCMONode aId, TDes& aStrValue)
+EXPORT_C TDCMOStatus RDCMOClient::GetDCMOStrAttributeValue(TDes& aCategory, TDCMONode aId, TDes& aStrValue)
 	{		
 	RDEBUG(" RDCMOClient::GetDCMOStrAttributeValue--Begin");
 	TPckg<TDCMONode> p(aId);
@@ -158,7 +158,7 @@
 // ----------------------------------------------------------------------------
 // RDCMOClient::SetDCMOIntAttributeValue()
 // ----------------------------------------------------------------------------	
-TDCMOStatus RDCMOClient::SetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt aValue)
+EXPORT_C TDCMOStatus RDCMOClient::SetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt aValue)
 	{		
 	RDEBUG(" RDCMOClient::SetDCMOIntAttributeValue--Begin");
 	TPckg<TDCMONode> p(aId);
@@ -175,7 +175,7 @@
 // ----------------------------------------------------------------------------
 // RDCMOClient::SetDCMOStrAttributeValue()
 // ----------------------------------------------------------------------------	
-TDCMOStatus RDCMOClient::SetDCMOStrAttributeValue(TDes& aCategory, TDCMONode aId, TDes& aStrValue)
+EXPORT_C TDCMOStatus RDCMOClient::SetDCMOStrAttributeValue(TDes& aCategory, TDCMONode aId, TDes& aStrValue)
 	{		
 	RDEBUG(" RDCMOClient::SetDCMOStrAttributeValue--Begin");
 	TPckg<TDCMONode> p(aId);
@@ -191,7 +191,7 @@
 // ----------------------------------------------------------------------------
 // RDCMOClient::SearchByGroupValue()
 // ----------------------------------------------------------------------------	
-void RDCMOClient::SearchByGroupValue(TDes& aGroup, TDes& aAdapterList)
+EXPORT_C void RDCMOClient::SearchByGroupValue(TDes& aGroup, TDes& aAdapterList)
 	{		
 	RDEBUG(" RDCMOClient::SearchByGroupValue--Begin");
 	TInt err = SendReceive( EDcmoSearchAdapter, TIpcArgs(&aGroup, &aAdapterList));
--- a/dcmofw/dcmoserver/group/dcmoserver.mmp	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoserver/group/dcmoserver.mmp	Thu Aug 19 10:44:50 2010 +0300
@@ -18,7 +18,7 @@
 #include <platform_paths.hrh>
 
 
-CAPABILITY			CAP_SERVER DiskAdmin AllFiles
+CAPABILITY			CAP_SERVER TrustedUI NetworkControl DiskAdmin AllFiles
 
 TARGET        	dcmoserver.exe
 TARGETTYPE    	exe
@@ -31,6 +31,7 @@
 SOURCE       	 	dcmosession.cpp
 SOURCE       	 	dcmonotifieraob.cpp
 SOURCE					dcmogenericcontrol.cpp
+SOURCE				AMSmlHelper.cpp
 
 MW_LAYER_SYSTEMINCLUDE
 SYSTEMINCLUDE 	/epoc32/include/ecom
@@ -48,5 +49,19 @@
 LIBRARY       centralrepository.lib
 LIBRARY				aknnotify.lib eiksrv.lib
 LIBRARY    		flogger.lib
-
+LIBRARY 		TerminalControl.lib
+LIBRARY				nsmlprivateapi.lib
+LIBRARY     		commdb.lib
+LIBRARY				apengine.lib	esock.lib 
+#ifdef __TARM_SYMBIAN_CONVERGENCY
+ LIBRARY				dmtreeclient.lib
+ LIBRARY				SmlClient.lib
+#else
+ LIBRARY			nsmldmtreedbhandler.lib
+ LIBRARY  			syncmlclientapi.lib
+ LIBRARY 			nsmldmmodule.lib
+ LIBRARY 			nsmldmtreedbclient.lib connmon.lib
+ LIBRARY     		nsmltransporthandler.lib
+LIBRARY     		nsmltransport.lib cone.lib javaregistryclient.lib avkon.lib eikcore.lib  apparc.lib
+#endif // __TARM_SYMBIAN_CONVERGENCY
 SMPSAFE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/dcmoserver/inc/amsmlhelper.h	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,55 @@
+/*
+ * Copyright (c) 2000 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies 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 applicationmanagement components
+ *
+ */
+
+#ifndef __ABMSMLHELPER_H__
+#define __ABMSMLHELPER_H__
+
+#include <SyncMLDef.h>
+#include <SyncMLTransportProperties.h>
+#include <SyncMLClient.h>
+#include <SyncMLClientDM.h>
+
+class SmlHelper
+        {
+public:
+
+        // NOTE: this enum must match with property array described in 
+        // SyncML_Sync_Agent_Client_API_Specification.doc.
+        enum TNSmlSyncTransportProperties
+            {
+            EPropertyIntenetAccessPoint = 0,
+            EPropertyHttpUsed = 5,
+            EPropertyHttpUserName = 6,
+            EPropertyHttpPassword = 7
+            };
+
+        /**
+         * Fetch the default IAP used by the currently active DM profile
+         * @param aDefaultIAP on successfull return contains the default IAP number
+         */
+
+        static void GetDefaultIAPFromDMProfileL(TInt& aDefaultIAP);
+
+        static void GetConnectionPropertyNameL(RSyncMLSession& aSyncSession,
+                TDes8& aText, TInt aPropertyPos);
+
+        static TInt StrToInt(const TDesC& aText, TInt& aNum);
+        };
+	
+#endif
+
+//  End of File
--- a/dcmofw/dcmoserver/inc/dcmoserver.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoserver/inc/dcmoserver.h	Thu Aug 19 10:44:50 2010 +0300
@@ -24,20 +24,21 @@
 #include "dcmoclientserver.h"
 #include "dcmoconst.h"
 #include "dcmonotifieraob.h"
-
+#include <lawmocallbackinterface.h>
 // CONSTANTS
 const TUid KCRUidDCMOServer={0x2001FE47};
 const TInt KDCMOKeyMaxNumber = 16;
 // FORWARD DECLARATIONS
 // CLASS DECLARATION
-
+class CLAWMOPluginInterface;
 /**
 *  CDCMOServer
 *  Description.
 */
 
 
-class CDCMOServer : public CServer2
+class CDCMOServer : public CServer2,
+                    public MLawmoPluginWipeObserver
 	{
 	friend class CDCMOSession;
 	friend class CDCMONotifierAob;
@@ -85,6 +86,11 @@
 	 * @return None
 	 */
 	void DropSession();
+public:
+	
+	// Callback from MLawmoPluginWipeObserver
+	void HandleWipeCompleted(TInt status);
+	//void SendGenericAlert();
 	
 private:
 	/**
@@ -166,7 +172,17 @@
 	 * @return 
 	 */
 	void SetStarter(TBool aValue);	
+	
+    TLawMoStatus WipeItem(TInt aValue=0);
+	
+    TLawMoStatus WipeAllItem();
 
+	TLawMoStatus GetListItemL(TDesC& item, TDes& strValue);
+
+	TLawMoStatus GetToBeWipedL(TDesC& item, TDes& wipeValue);
+
+	TLawMoStatus SetToBeWipedL(TDesC& item, TInt wipeValue);
+	
 private:
 	
 	/**
@@ -174,7 +190,7 @@
 	 * @param aCategory
 	 * @return the uid
 	 */
-	TUid GetAdapterUidL(const TDesC& aCategory);
+	TUid GetAdapterUidL(const TDesC& aCategory, TBool aIsLawmo = EFalse);
 	
 	/**
 	 * Finds whether the plug-in adapter is a generic category
@@ -183,11 +199,19 @@
 	 */
 		TInt GetLocalCategoryL(const TDesC& aCategory);	
 	
+	void GetLawmoPluginUidsL();
+	
+	void StartDMNetworkMonitorL(TDesC& aServerId, TInt iapid=0);
 private:
 	RArray<dcmoInfoList> idcmoArray;
 	static TInt iSessionCount;
 	TBool iStarter;	
 	CDCMONotifierAob* iNotifier;
+	RArray<TUid> ilawmoPluginUidToBeWiped;
+	RArray<CLAWMOPluginInterface*> ilawmoPlugins;
+	TInt iwipeStatus;
+    TInt iCount;
+    TInt iSessionIap;
 	};
 	
 #endif //__DCMO_SERVER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/dcmoserver/src/AMSmlHelper.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,212 @@
+/*
+ * Copyright (c) 2000 Nokia Corporation and/or its subsidiary(-ies). 
+ * All rights reserved.
+ * This component and the accompanying materials are made available
+ * under the terms of "Eclipse Public License v1.0"
+ * which accompanies 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 applicationmanagement components
+ *
+ */
+
+#include "amsmlhelper.h"
+#include <SyncMLClientDM.h>
+#include <rconnmon.h> 
+#include <es_sock.h>
+#include <es_enum_internal.h>
+#include <es_sock_partner.h>
+#include <es_enum.h>
+#include "lawmodebug.h"
+
+const TUid KUidNSmlMediumTypeInternet =
+    {
+    0x101F99F0
+    };
+const TUid KSosServerUid =
+    {
+    0x101F99FB
+    };
+
+const TInt KBufSize32 = 32;
+
+void SmlHelper::GetDefaultIAPFromDMProfileL(TInt& aDefaultIAP)
+    {
+    RLDEBUG("ApplicationManagementServer::GetDefaultIAPFromDMProfileL() - start");
+
+    // first try to obtain the current profile id
+    RSyncMLSession ses;
+    ses.OpenL();
+    RLDEBUG("	1/8");
+    CleanupClosePushL(ses);
+
+    TSmlJobId jid;
+    TSmlUsageType jtype;
+    ses.CurrentJobL(jid, jtype);
+    RLDEBUG("	2/8");
+    RSyncMLDevManJob job;
+    job.OpenL(ses, jid);
+    RLDEBUG("	3/8");
+    CleanupClosePushL(job);
+    // get profile id
+    TSmlProfileId pid(job.Profile() );
+    CleanupStack::PopAndDestroy( &job);
+
+    TBuf8<KBufSize32> key;
+    TBuf<KBufSize32> value;
+    TInt num = KErrNotFound;
+
+    // get connection property name first
+    GetConnectionPropertyNameL(ses, key, EPropertyIntenetAccessPoint);
+    RLDEBUG("	4/8");
+    // we need to open sync profile in ordere to open the RSyncMLConnection
+    RSyncMLDevManProfile syncProfile;
+    syncProfile.OpenL(ses, pid);
+    RLDEBUG("	5/8");
+    CleanupClosePushL(syncProfile);
+
+    TSmlTransportId transport;
+    RArray<TSmlTransportId> connections;
+    _LIT8( KNSmlIAPId, "NSmlIapId" );
+
+    // now open the syncML connection
+    RSyncMLConnection syncConnection;
+    syncProfile.ListConnectionsL(connections);
+
+    transport = connections[0];
+    syncConnection.OpenL(syncProfile, transport);
+    RLDEBUG("	6/8");
+    CleanupClosePushL(syncConnection);
+
+    const TDesC8& source(syncConnection.GetPropertyL(KNSmlIAPId) );
+    RLDEBUG("	7/8");
+    value.Copy(source.Left(value.MaxLength() ) );
+    User::LeaveIfError(StrToInt(value, num) );
+    RLDEBUG("	8/8");
+
+    aDefaultIAP = num;
+
+    // If there is no default Access point in DM profile then use
+    // currently used access point by DM session
+
+    if (aDefaultIAP == -1)
+        {
+        RLDEBUG("adefault iap -1");
+        TInt sockIapid = -1;
+
+        RSocketServ serv;
+        CleanupClosePushL(serv);
+        User::LeaveIfError(serv.Connect() );
+
+        RConnection conn;
+        CleanupClosePushL(conn);
+        User::LeaveIfError(conn.Open(serv) );
+        RLDEBUG("RConnection opened");
+        
+        TUint count( 0);
+        User::LeaveIfError(conn.EnumerateConnections(count) );
+        RLDEBUG_2("RConnection count %d",count);
+        // enumerate connections
+        for (TUint idx=1; idx<=count; ++idx)
+            {
+            TConnectionInfo connectionInfo;
+            TConnectionInfoBuf connInfo(connectionInfo);
+            RLDEBUG("RConnection loop");
+            TInt err = conn.GetConnectionInfo(idx, connInfo); // iapid
+            RLDEBUG("RConnection get conn info");
+            if (err != KErrNone)
+                {
+                CleanupStack::PopAndDestroy( 2); // conn, serv
+                User::Leave(err);
+                }
+            // enumerate connectionclients
+            TConnectionEnumArg conArg;
+            conArg.iIndex = idx;
+            TConnEnumArgBuf conArgBuf(conArg);
+            RLDEBUG("RConnection control");
+            err=conn.Control(KCOLConnection, KCoEnumerateConnectionClients,
+                    conArgBuf);
+            if (err != KErrNone)
+                {
+                CleanupStack::PopAndDestroy( 2); // conn, serv
+                User::Leave(err);
+                }
+            TInt cliCount = conArgBuf().iCount;
+            RLDEBUG("RConnection second loop");
+            for (TUint j=1; j<=cliCount; ++j)
+                {
+                TConnectionGetClientInfoArg conCliInfo;
+                conCliInfo.iIndex = j;
+                TConnGetClientInfoArgBuf conCliInfoBuf(conCliInfo);
+                RLDEBUG("RConnection another control");
+                err=conn.Control(KCOLConnection, KCoGetConnectionClientInfo,
+                        conCliInfoBuf);
+
+                if (err != KErrNone)
+                    {
+                    CleanupStack::PopAndDestroy( 2); // conn, serv
+                    User::Leave(err);
+                    }
+                TConnectionClientInfo conCliInf = conCliInfoBuf().iClientInfo;
+                TUid uid = conCliInf.iUid;
+                RLDEBUG_2("RConnection check uid %d", uid.iUid);
+                if (uid == KSosServerUid)
+                    {
+                    sockIapid = connInfo().iIapId;
+                    RLDEBUG("RConnection uid matched");
+                    }
+
+                }
+            }
+        CleanupStack::PopAndDestroy( 2); // conn, serv		
+
+        aDefaultIAP = sockIapid;
+        RLDEBUG("RConnection out");
+        }
+    // get profile's server id
+    //aServerId = syncProfile.ServerId().AllocL();
+    RLDEBUG("RConnection total out");
+
+    CleanupStack::PopAndDestroy( &syncConnection);
+    CleanupStack::PopAndDestroy( &syncProfile);
+
+    CleanupStack::PopAndDestroy( &ses);
+    connections.Close();
+    RLDEBUG("ApplicationManagementServer::GetDefaultIAPFromDMProfileL() - end");
+    }
+
+void SmlHelper::GetConnectionPropertyNameL(RSyncMLSession& aSyncSession,
+        TDes8& aText, TInt aPropertyPos)
+    {
+    RLDEBUG("ApplicationManagementServer::GetConnectionPropertyNameL() - start");
+
+    // at the moment RSyncMLTransport is only needed
+    // for internet connection settings
+    RSyncMLTransport transport;
+    CleanupClosePushL(transport);
+    transport.OpenL(aSyncSession, KUidNSmlMediumTypeInternet.iUid);
+
+    const CSyncMLTransportPropertiesArray& arr = transport.Properties();
+    RLDEBUG("GetConnectionPropertyNameL interior");
+    __ASSERT_DEBUG( arr.Count()> aPropertyPos, User::Panic(_L("invalid count"), KErrGeneral) );
+
+    const TSyncMLTransportPropertyInfo& info = arr.At(aPropertyPos);
+    aText = info.iName;
+    CleanupStack::PopAndDestroy( &transport);
+
+    RLDEBUG("ApplicationManagementServer::GetConnectionPropertyNameL() - end");
+    }
+
+TInt SmlHelper::StrToInt(const TDesC& aText, TInt& aNum)
+    {
+    TLex lex(aText);
+    TInt err = lex.Val(aNum);
+    return err;
+    }
+
+// End of File
--- a/dcmofw/dcmoserver/src/dcmoserver.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoserver/src/dcmoserver.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -32,9 +32,18 @@
 #include "dcmosession.h"
 #include "dcmogenericcontrol.h"
 #include "dcmodebug.h"
+#include "lawmodebug.h"
+#include "amsmlhelper.h"
+#include <lawmoadaptercrkeys.h>
+#include <DevManInternalCRKeys.h>
 
+#include    <e32property.h>
+#include    <PSVariables.h>   // Property values
+#include    <lawmointerface.h>
 _LIT( KdcmoResourceFileName, "z:dcmo.rsc" );	
 const TInt KBufferSize = 256;
+const TInt KWipeSuccess = 1201;
+const TInt KWipeFailure = 1405;
 
 TInt CDCMOServer::iSessionCount = 0;
 // Standard server startup code
@@ -103,6 +112,9 @@
 void CDCMOServer::ConstructL()
 	{
 	RDEBUG("CDCMOServer::ConstructL- begin");
+	iwipeStatus = 0;
+	iSessionIap = KErrNotFound;
+	iCount = -1;
 	StartL(KDCMOServerName);	
 	RDEBUG("CDCMOServer::ConstructL- end");
 	}
@@ -124,7 +136,7 @@
 {	
 	RDEBUG("CDCMOServer::~CDCMOServer- begin");
   TInt count = idcmoArray.Count();  
-  RDEBUG_2("CDCMOServer::~CDCMOServer; %d", count );
+	RDEBUG_2("~~CDCMOServer::~CDCMOServer; %d", count );
 	if(count)
 	{	
 		for(TInt i=0; i< count; i++)
@@ -133,15 +145,25 @@
 		delete iNotifier;
 		iNotifier = NULL;	
 	}
-	else
+	
+    RLDEBUG("CDCMOServer::wipe done delete pluginuid()");
+    TInt pluginObjectCount = ilawmoPlugins.Count();           
+    while(pluginObjectCount>0)
 	{
-		//Kill the server
-		if( iSessionCount == 0)
-			CActiveScheduler::Stop();	
+        RLDEBUG("plugin to be deleted");
+        delete ilawmoPlugins[pluginObjectCount-1];
+        RLDEBUG("plugin deleted");
+        pluginObjectCount--;
 	}
+    RLDEBUG("CDCMOServer::close all RArrays()");
+    ilawmoPluginUidToBeWiped.Close();
 	
+    RLDEBUG("CDCMOServer::closeD all RArrays()");
+    ilawmoPlugins.Close();
+		
+    RDEBUG("CDCMOServer::call FinalClose");	
 	REComSession::FinalClose();
-	RDEBUG("CDCMOServer::~CDCMOServer- end");
+	RDEBUG("~~~CDCMOServer::~CDCMOServer- end");
 }
 
 // -----------------------------------------------------------------------------
@@ -161,12 +183,20 @@
 		if( idcmoArray.Count() && ( iSessionCount == 0 ))
 		{
 			// A session is being destroyed		
+            RDEBUG("CDCMOServer::DropSession- dofinalise ?");
 			TRAPD( err, DoFinalizeL());		
+			iCount = 0;
 			if ( !err )
 			{
 				RDEBUG_2("CDCMOServer::DropSession err =  %d", err );
 			}						
 		}		
+		if((iSessionCount == 0)&&(iCount== -1))
+		    {
+            RDEBUG("DropSession kill server, only when no session and no wipe pending");
+            CActiveScheduler::Stop();
+            RDEBUG("DropSession kill server");
+		}		
 		RDEBUG("CDCMOServer::DropSession- end");
 	}
 
@@ -207,21 +237,28 @@
 // CDCMOServer::GetAdapterUidL
 // Gets the plug-in adapter implementation uid if it present.
 // ----------------------------------------------------------------------------------------
-TUid CDCMOServer::GetAdapterUidL(const TDesC& aCategory)
+TUid CDCMOServer::GetAdapterUidL(const TDesC& aCategory, TBool aIsLawmo)
 {
 	RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): begin");
-	
+    RLDEBUG("CDCMOServer::GetAdapterUidL(): begin");
 	TUid retUid = {0x0};
-	
+	TEComResolverParams resolverParams;
 	RImplInfoPtrArray infoArray;
 	// Note that a special cleanup function is required to reset and destroy
 	// all items in the array, and then close it.
 	TCleanupItem cleanup(CleanupEComArray, &infoArray);
 	CleanupStack::PushL(cleanup);
+	if(aIsLawmo)
+	    {
+	    REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray);
+	    RLDEBUG("CDCMOServer::GetAdapterUidL(): listImpl");
+	    }
+	else
 	REComSession::ListImplementationsL(KDCMOInterfaceUid, infoArray);
 
 	// Loop through each info for each implementation			
 	TBuf8<KBufferSize> buf;            
+    RLDEBUG("CDCMOServer::GetAdapterUidL(): for loop");
 	for (TInt i=0; i< infoArray.Count(); i++)
 	{
 		buf = infoArray[i]->OpaqueData();
@@ -230,12 +267,13 @@
 		if(category.Find(infoArray[i]->OpaqueData())!= KErrNotFound)
 		{
 			retUid = infoArray[i]->ImplementationUid();
+                    RLDEBUG("CDCMOServer::GetAdapterUidL(): matched");
 			break;
 		}
 		buf.Zero();
 	}
 	CleanupStack::PopAndDestroy(); //cleanup
-	
+    RLDEBUG("CDCMOServer::GetAdapterUidL():end");
 	RDEBUG("CDCMOServer::GetDCMOAdapterUidL(): end");
 	return retUid;
 }
@@ -609,6 +647,170 @@
 }
 
 // ----------------------------------------------------------------------------------------
+// CDCMOServer::GetPluginUids
+// Gets the plug-in adapter implementation uid if it present.
+// ----------------------------------------------------------------------------------------
+void CDCMOServer::GetLawmoPluginUidsL()
+{
+    RDEBUG("CDCMOServer::GetPluginUids(): begin");
+    ilawmoPluginUidToBeWiped.Reset();
+    RImplInfoPtrArray infoArray;
+    TEComResolverParams resolverParams;
+    // Note that a special cleanup function is required to reset and destroy
+    // all items in the array, and then close it.
+    TCleanupItem cleanup(CleanupEComArray, &infoArray);
+    CleanupStack::PushL(cleanup);
+    REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray);
+    RLDEBUG("CDCMOServer::GetPluginUids(): listImpl");
+    // Loop through each info for each implementation           
+    for (TInt i=0; i< infoArray.Count(); i++)
+    {
+    ilawmoPluginUidToBeWiped.Append(infoArray[i]->ImplementationUid());
+    RLDEBUG("CDCMOServer::GetPluginUids(): for loop");
+    }
+    CleanupStack::PopAndDestroy(); //cleanup
+    RLDEBUG("CDCMOServer::GetPluginUids():end");
+    return;
+}
+
+TLawMoStatus CDCMOServer::WipeAllItem()
+    {
+    //Update ilawmopluginUid, so that all Node items are wiped.
+    //WipeItem doesn only on Uid's in the RArray.
+    TRAPD(error,GetLawmoPluginUidsL());
+    if(error == KErrNone)
+    return WipeItem();
+    else
+        return ELawMoWipeNotPerformed;
+    }
+
+TLawMoStatus CDCMOServer::WipeItem(TInt aValue)
+    {
+    RLDEBUG("CDCMOServer::WipeItem(): begin");
+    TLawMoStatus lawmostat(ELawMoAccepted);
+    iCount = 0;
+    if(ilawmoPluginUidToBeWiped.Count() > 0)
+        {
+		RLDEBUG_2("CDCMOServer::WipeItem got uid(): %d",ilawmoPluginUidToBeWiped[iCount]);
+        CLAWMOPluginInterface* obj;
+		RLDEBUG("CDCMOServer::WipeItem(): NewL");
+        TRAPD(err,obj = CLAWMOPluginInterface::NewL(ilawmoPluginUidToBeWiped[iCount], this));
+        if(err == KErrNone)
+            {
+            RLDEBUG("CDCMOServer::WipeItem(): obj created");
+            RLDEBUG_2("CDCMOServer::WipeItem plugin count: %d",ilawmoPlugins.Count());
+            TRAP(err,obj->WipeL());
+        RLDEBUG_2("CDCMOServer::WipeItem(): wipe called %d",err);
+        ilawmoPlugins.Append(obj);
+        // Get the IAP being used in the current session
+        TRAP( err, SmlHelper::GetDefaultIAPFromDMProfileL( iSessionIap ) );
+        RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): get iap %d",iSessionIap);
+            }
+        if(err!=KErrNone)
+        HandleWipeCompleted(KErrGeneral);
+        }
+    else
+        {
+        lawmostat = ELawMoWipeNotPerformed;
+        }
+    
+    RLDEBUG("CDCMOServer::WipeItem(): End");
+    return lawmostat;
+    }
+
+TLawMoStatus CDCMOServer::GetListItemL(TDesC& item, TDes& strValue)
+{
+    RLDEBUG("CDCMOServer::GetListItem(): begin");
+    TEComResolverParams resolverParams;
+	TLawMoStatus lawmostat(ELawMoSuccess);
+    TBuf<KBufferSize> itemName;
+    RImplInfoPtrArray infoArray;
+    TCleanupItem cleanup(CleanupEComArray, &infoArray);
+    CleanupStack::PushL(cleanup);
+    REComSession::ListImplementationsL(KLAWMOPluginInterfaceUid, resolverParams, KRomOnlyResolverUid, infoArray);
+    RLDEBUG("CDCMOServer::GetListItem(): listImpl");
+
+    for (TInt i=0; i< infoArray.Count(); i++)
+        {   
+        RLDEBUG("CDCMOServer::GetListItem(): for loop");
+        TBuf<KBufferSize> temp;
+        temp.Copy(infoArray[i]->OpaqueData());
+        RLDEBUG_2("CDCMOServer::GetListItem opaque data to compare is %s", temp.PtrZ());
+        if(item == temp)
+            {
+                itemName.Copy(infoArray[i]->DisplayName());
+                RLDEBUG("CDCMOServer::GetListItem(): matched");
+                break;
+            }
+        }
+    CleanupStack::PopAndDestroy(); //cleanup
+    RLDEBUG_2("CDCMOServer::GetListItem display name is %s", itemName.PtrZ());
+    strValue.Zero();
+    strValue.Append(itemName);
+    RLDEBUG("CDCMOServer::GetListItem(): End");
+    return lawmostat;
+}
+
+
+TLawMoStatus CDCMOServer::GetToBeWipedL(TDesC& item, TDes& wipeValue)
+{
+    RLDEBUG("CDCMOServer::GetToBeWiped(): begin");
+    TLawMoStatus lawmostat(ELawMoSuccess);
+    TInt wipeVal(0);
+    TUid impluid = GetAdapterUidL(item, ETrue);
+    RLDEBUG_2("CDCMOServer::GetToBeWiped for uid(): %d", impluid);
+    TInt afind = ilawmoPluginUidToBeWiped.Find(impluid);
+    if(afind!=KErrNotFound)
+        {
+        wipeVal = 1;
+        RLDEBUG("CDCMOServer::GetToBeWiped(): uid in Rarray");
+        }
+    wipeValue.Zero();
+    wipeValue.Num(wipeVal);
+    RLDEBUG("CDCMOServer::GetToBeWiped(): End");
+    return lawmostat;
+}
+
+TLawMoStatus CDCMOServer::SetToBeWipedL(TDesC& item, TInt wipeValue)
+{
+    RLDEBUG("CDCMOServer::SetToBeWiped(): begin");
+    TLawMoStatus lawmostat(ELawMoSuccess);
+    TUid impluid = GetAdapterUidL(item, ETrue);
+    RLDEBUG_2("CDCMOServer::SetToBeWiped for uid(): %d", impluid);
+    TInt afind = ilawmoPluginUidToBeWiped.Find(impluid);
+    // Add Node's corresponding plugin uid to list so that it can be wiped
+    if(impluid.iUid)
+        {
+        if(wipeValue)
+            {
+            RLDEBUG("CDCMOServer::SetToBeWiped(): wipeVal true");
+            if(afind==KErrNotFound)
+                ilawmoPluginUidToBeWiped.Append(impluid);
+            else
+                RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped already set");               
+            }
+        else
+            {
+            RLDEBUG("CDCMOServer::SetToBeWiped(): wipeVal false");        
+            if(afind!=KErrNotFound)
+                {
+                ilawmoPluginUidToBeWiped.Remove(afind);
+                RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped unset");
+                }
+            else
+                RLDEBUG("CDCMOServer::SetToBeWiped() tobewiped notset atall");                
+            }
+        }
+    else
+        {
+        RLDEBUG("CDCMOServer::SetToBeWiped(): no such plugin found");
+        lawmostat = ELawMoFail;
+        }
+    RLDEBUG("CDCMOServer::SetToBeWiped(): End");
+    return lawmostat;
+}
+
+// ----------------------------------------------------------------------------------------
 // CDCMOServer::SetStarter
 // Sets the iStarter value
 // ----------------------------------------------------------------------------------------
@@ -618,3 +820,138 @@
 	iStarter = aValue;
 	RDEBUG("CDCMOServer::SetStarter(): end");
 }
+
+void CDCMOServer::HandleWipeCompleted(TInt status)
+{
+    RLDEBUG("CDCMOServer::HandleWipeCompleted(): begin");
+    // whether wipe is performed or failed
+    iwipeStatus = (iwipeStatus && status);
+    RLDEBUG_2("CDCMOServer::HandleWipeCompleted wipestate: %d",iwipeStatus);
+    iCount++;
+    if(ilawmoPluginUidToBeWiped.Count()>iCount)
+        {
+        RLDEBUG("CDCMOServer::HandleWipeCompleted(): create obj");
+        CLAWMOPluginInterface* obj;
+        TRAPD(err, obj = CLAWMOPluginInterface::NewL(ilawmoPluginUidToBeWiped[iCount], this));
+        if(err == KErrNone)
+             {
+             RLDEBUG("CDCMOServer::HandleWipeCompleted(): obj created");
+             RLDEBUG_2("CDCMOServer::HandleWipeCompleted plugin count: %d",ilawmoPlugins.Count());
+            TRAP(err,obj->WipeL());
+        RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): wipe called %d",err);
+        ilawmoPlugins.Append(obj);
+            }
+        if(err!=KErrNone)
+            HandleWipeCompleted(KErrGeneral);
+        }
+    else
+        {
+        // start DM session using the Monitor for generic alert
+        RLDEBUG("CDCMOServer::HandleWipeCompleted(): done");
+        TInt err;
+        TBuf<KBufferSize> srvrid; 
+        CRepository* crep;
+        TRAP(err, crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
+                         CleanupStack::Pop(crep));
+        RLDEBUG("CDCMOServer::HandleWipeCompleted(): get srvrid");
+        if(err == KErrNone)
+            err = crep->Get( KLAWMOfactoryDmServerID, srvrid );
+        RDEBUG_2("CDCMOServer::GetCurrentServerId() %d",err);
+        RLDEBUG_2("CDCMOServer::HandleWipeCompleted(): srvrid %s",srvrid.PtrZ());
+        if (err == KErrNone)
+            {
+            RLDEBUG("CDCMOServer::startNwMonitor()");
+            TRAP(err,StartDMNetworkMonitorL(srvrid, iSessionIap));
+            }
+        
+        if(crep)
+			{
+            delete crep; //crep
+			crep = NULL;
+			}
+        
+        // Only when session is started successfully, Set wipestatus
+        if(err==KErrNone)
+            {
+            RLDEBUG("CDCMOServer::HandleWipeCompleted(): writing wipestatus to cenrep");
+            CRepository* repository;
+            TRAP(err, repository = CRepository::NewLC ( KCRUidLawmoAdapter );
+                      CleanupStack::Pop(crep));
+            
+            if(iwipeStatus==KErrNone)
+            iwipeStatus = KWipeSuccess;
+            else
+            iwipeStatus = KWipeFailure;
+            
+            repository->Set(KLawmoWipeStatus,iwipeStatus);
+            RLDEBUG_2("CDCMOServer::HandleWipeCompleted wipestate: %d",iwipeStatus);
+            if (repository)
+				{
+	            delete repository;
+				repository = NULL;
+				}
+            }
+        
+        RLDEBUG_2("printing ilawmoPluginUidToBeWiped %d", ilawmoPluginUidToBeWiped.Count());
+        RLDEBUG_2("printing ilawmoPlugins %d", ilawmoPlugins.Count());
+        RLDEBUG_2("printing ilawmoPlugins %d", iCount);
+        iCount = -1; // To indicate all wipe is done
+        if( iSessionCount == 0)
+           {
+            CActiveScheduler::Stop();
+            RLDEBUG("CDCMOServer::HandleWipeCompleted(): kill server");
+            }        
+        }    
+    
+    RLDEBUG("CDCMOServer::HandleWipeCompleted(): end");
+}
+
+// ------------------------------------------------------------------------------------------------
+// CDCMOServer::StartDMNetworkMonitorL()
+// ------------------------------------------------------------------------------------------------
+void CDCMOServer::StartDMNetworkMonitorL(TDesC& aServerId, TInt iapid)
+{
+    TInt retryenabled = 1;
+    _LIT( KNetMon,"\\dmnetworkmon.exe" );
+    RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): start");
+    TBuf8<KBufferSize> serverid;
+    serverid.Copy(aServerId);
+    // Enable DM Network Monitoring for retry of Generic alert in case of N/W loss
+    
+    CRepository *repository= CRepository::NewLC ( KCRUidDeviceManagementInternalKeys );
+    repository->Set(KDevManEnableDMNetworkMon, retryenabled);
+    repository->Set(KDevManServerIdKey, serverid);
+    repository->Set(KDevManIapIdKey, iapid);
+    RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): set rep keys");
+    CleanupStack::PopAndDestroy();
+    
+    // create NetMon EXE
+    RProcess rp;
+    TInt err = rp.Create(KNetMon,KNullDesC);
+    RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():create rprocess");
+    User::LeaveIfError(err);
+    TRequestStatus stat;
+    rp.Rendezvous(stat);
+    RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():rendezvous");
+        
+    if (stat!=KRequestPending)
+        {
+        RLDEBUG("CDCMOServer::StartDMNetworkMonitorL():abort srvr");
+        rp.Kill(0);     // abort startup
+        }
+    else
+        {
+        RLDEBUG("CDCMOServer::StartDMNetworkMonitorL(): start server");
+        rp.Resume();    // logon OK - start the server
+        }
+    User::WaitForRequest(stat);     // wait for start or death
+    TInt r= rp.ExitType();
+    TInt reqstat  = stat.Int();
+    //TExitType a;
+    RLDEBUG_2("CDCMOServer::StartDMNetworkMonitorL() exittype %d",r);
+    RLDEBUG_2("CDCMOServer::StartDMNetworkMonitorL() reqstatus %d",reqstat);
+
+    rp.Close();
+}
+
+
--- a/dcmofw/dcmoserver/src/dcmosession.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/dcmoserver/src/dcmosession.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -20,7 +20,7 @@
 #include "dcmosession.h"
 #include "dcmoclientserver.h"
 #include "dcmodebug.h"
-
+#include "lawmodebug.h"
 
 // ----------------------------------------------------------------------------------------
 // CDCMOSession::CDCMOSession
@@ -68,8 +68,10 @@
 	RDEBUG_2("CDCMOSession::DispatchMessageL; %d", aMessage.Function() );
   TInt value; 
   TDCMOStatus statusValue;
+  TLawMoStatus lstatusValue;
   TDCMONode nodeValue;
   TPckg<TDCMOStatus> status(statusValue);
+  TPckg<TLawMoStatus> lstatus(lstatusValue);
   TPckg<TDCMONode> node(nodeValue);
   TPckg<TInt> intvalue(value);
   
@@ -152,6 +154,88 @@
 						RDEBUG("CDCMOSession::DispatchMessageL - EDcmoSearchAdapter status " );
 	    	}
 	    	break;	
+	    case EWipe:
+	        {
+            //HBufC*     item  = HBufC::NewLC(KDCMOMaxStringSize);
+            //TPtr       itemPtr  = category->Des(); 
+            //aMessage.Read (0, itemPtr); 
+	        //aMessage.Complete(KErrNone);
+	        //RDEBUG("CDCMOSession::EWipe force complete the request");
+	        lstatusValue = Server().WipeItem(); 
+            aMessage.Write (0, lstatus);
+            //CleanupStack::PopAndDestroy();
+            RLDEBUG_2("CDCMOSession::DispatchMessageL EWipe %d", lstatusValue );
+	        }
+	        break;
+	        
+	    case EWipeAll:
+	        {
+	        //TInt aForce(1);
+	        lstatusValue = Server().WipeAllItem(); 
+	        aMessage.Write (0, lstatus);
+            RLDEBUG_2("CDCMOSession::DispatchMessageL EWipeAll %d", lstatusValue );
+	        }
+	        break;
+	        
+	    case EListItemName_Get:
+	        {
+	        HBufC*     buf1  = HBufC::NewLC(KDCMOMaxStringSize);
+	        TPtr       bufPtr1  = buf1->Des();
+	        HBufC*     item  = HBufC::NewLC(KDCMOMaxStringSize);
+	        TPtr       itemPtr  = item->Des(); 
+	        aMessage.Read (0, itemPtr); 
+	        lstatusValue = Server().GetListItemL(itemPtr, bufPtr1); 
+	        aMessage.Write (1, bufPtr1);
+	        aMessage.Write (2, lstatus);
+	        CleanupStack::PopAndDestroy(2);
+	        RLDEBUG_2("CDCMOSession::DispatchMessageL EListItemName_Get %d", lstatusValue );
+	        }
+	        break;
+	        
+	    case EToBeWiped_Get:
+	        {
+	        HBufC*     item  = HBufC::NewLC(KDCMOMaxStringSize);
+            TPtr       itemPtr  = item->Des();
+            HBufC*     buf1  = HBufC::NewLC(KDCMOMaxStringSize);
+            TPtr       bufPtr1  = buf1->Des();
+            aMessage.Read (0, itemPtr);
+            lstatusValue = Server().GetToBeWipedL(itemPtr, bufPtr1);
+            aMessage.Write (1, bufPtr1);
+            aMessage.Write (2, lstatus);
+            CleanupStack::PopAndDestroy(2);
+            RLDEBUG_2("CDCMOSession::DispatchMessageL EToBeWiped_Get %d", lstatusValue );
+	        }
+	        break;
+	            
+	      case EToBeWiped_Set:
+            {
+            //TLex lex;
+            //TInt val;
+            //TBuf<255> wipeValue;
+            HBufC*     item  = HBufC::NewLC(KDCMOMaxStringSize);
+            TPtr       itemPtr  = item->Des();
+            aMessage.Read (0, itemPtr);
+            TInt val = aMessage.Int1();
+            //aMessage.Read (1, wipeValue); 
+            RLDEBUG_2("Tobewiped category %s",itemPtr.PtrZ());
+            //lex.Assign( wipeValue );
+            //TInt err = lex.Val( val );
+            RLDEBUG_2("Tobewiped value,int %d", val );
+            //if(err==KErrNone)
+            //    {
+            //    RLDEBUG("SetToBeWiped call" );
+                lstatusValue = Server().SetToBeWipedL(itemPtr, val);
+            //    }
+            //else
+            //    {
+            //    RLDEBUG("SetToBeWiped not" );
+            //    lstatusValue = ELawMoFail;
+            //    }
+            aMessage.Write (2, lstatus);
+            CleanupStack::PopAndDestroy();  
+            RLDEBUG_2("CDCMOSession::DispatchMessageL EToBeWiped_Set %d", lstatusValue );
+            }
+            break;
 	    default :
 	    		RDEBUG("CDCMOSession::DispatchMessageL- Case Not Found" );
 	    }	  
--- a/dcmofw/group/bld.inf	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/group/bld.inf	Thu Aug 19 10:44:50 2010 +0300
@@ -24,3 +24,4 @@
 #include "../dcmoclient/group/bld.inf"
 #include "../dcmoserver/group/bld.inf"
 #include "../dcmocustcmd/group/bld.inf"
+#include "../lawmoclient/group/bld.inf"
\ No newline at end of file
--- a/dcmofw/inc/dcmoclientserver.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/inc/dcmoclientserver.h	Thu Aug 19 10:44:50 2010 +0300
@@ -39,4 +39,15 @@
 	EDcmoSearchAdapter
 	};
 
+enum TLawmoControlMessages
+    {
+    ECreateSubSession = 10,
+    ECloseSubSession,
+    EListItemName_Get,
+    EToBeWiped_Get, 
+    EToBeWiped_Set,
+    EWipe,
+    EWipeAll,
+    ENotUsed
+    };
 #endif// __DCMOCLIENTSERVER_H__
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/inc/lawmodebug.h	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,56 @@
+/*
+* Copyright (c) 2000 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 terminalsecurity components
+*
+*/
+
+
+#ifndef _LAW_DEBUG_HEADER_
+#define _LAW_DEBUG_HEADER_
+
+#include <f32file.h>
+#include <flogger.h>
+// CONSTANTS
+_LIT( KLawLogFolderName, "law" );
+_LIT( KLawLogFileName, "law.log" );
+// MACROS
+#ifdef _DEBUG
+#define _LAW_FILE_DEBUG
+#endif
+
+#ifdef _LAW_FILE_DEBUG
+		#define RLDEBUG(X)					RFileLogger::Write( KLawLogFolderName, KLawLogFileName, EFileLoggingModeAppend, _L(X) )
+		#define RLDEBUG_2(X,Y)			RFileLogger::WriteFormat( KLawLogFolderName, KLawLogFileName, EFileLoggingModeAppend, _L(X),Y )	
+		#define RLDEBUG_3(X,Y,Z)	  RFileLogger::WriteFormat( KLawLogFolderName, KLawLogFileName, EFileLoggingModeAppend, _L(X),Y,Z )	
+#else
+
+	#if defined (_DEBUG)
+		#define RLDEBUG(X)								RDebug::Print(_L(X))
+		#define RLDEBUG_2(X,Y)						RDebug::Print(_L(X),Y)
+		#define RLDEBUG_3(X,Y,Z)					RDebug::Print(_L(X),Y,Z)
+	#else
+		#define RLDEBUG(X)								
+		#define RLDEBUG_2(X,Y)						
+		#define RLDEBUG_3(X,Y,Z)	
+	#endif // _DEBUG
+	
+#endif // _LAW_FILE_DEBUG
+
+
+
+
+#endif // _LAW_DEBUG_HEADER_
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/lawmoclient/bwins/lawmoclientu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,9 @@
+EXPORTS
+	?SetToBeWipedValue@RLawmoClient@@QAEHAAVTDes16@@H@Z @ 1 NONAME ; int RLawmoClient::SetToBeWipedValue(class TDes16 &, int)
+	?GetListItemName@RLawmoClient@@QAEHAAVTDes16@@0@Z @ 2 NONAME ; int RLawmoClient::GetListItemName(class TDes16 &, class TDes16 &)
+	?GetToBeWipedValue@RLawmoClient@@QAEHAAVTDes16@@AAH@Z @ 3 NONAME ; int RLawmoClient::GetToBeWipedValue(class TDes16 &, int &)
+	?DeviceWipe@RLawmoClient@@QAE?AW4TLawMoStatus@@XZ @ 4 NONAME ; enum TLawMoStatus RLawmoClient::DeviceWipe(void)
+	?Connect@RLawmoClient@@QAEHXZ @ 5 NONAME ; int RLawmoClient::Connect(void)
+	?DeviceWipeAll@RLawmoClient@@QAE?AW4TLawMoStatus@@XZ @ 6 NONAME ; enum TLawMoStatus RLawmoClient::DeviceWipeAll(void)
+	?Close@RLawmoClient@@QAEXXZ @ 7 NONAME ; void RLawmoClient::Close(void)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/lawmoclient/eabi/lawmoclientu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,8 @@
+EXPORTS
+	_ZN12RLawmoClient10DeviceWipeEv @ 1 NONAME
+	_ZN12RLawmoClient13DeviceWipeAllEv @ 2 NONAME
+	_ZN12RLawmoClient15GetListItemNameER6TDes16S1_ @ 3 NONAME
+	_ZN12RLawmoClient17GetToBeWipedValueER6TDes16Ri @ 4 NONAME
+	_ZN12RLawmoClient17SetToBeWipedValueER6TDes16i @ 5 NONAME
+	_ZN12RLawmoClient5CloseEv @ 6 NONAME
+	_ZN12RLawmoClient7ConnectEv @ 7 NONAME
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/lawmoclient/group/bld.inf	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,20 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  This file provides building information for DCMO Client.
+*
+*/
+
+
+PRJ_MMPFILES
+lawmoclient.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/lawmoclient/group/lawmoclient.mmp	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,39 @@
+/*
+* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  DCMO Client for DCMO framework
+*
+*/
+
+#include <platform_paths.hrh>
+#include "defaultcaps.hrh"
+
+CAPABILITY      CAP_CLIENT_DLL
+TARGET          lawmoclient.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x2002EA20
+VENDORID        VID_DEFAULT
+
+SOURCEPATH      ../src
+SOURCE          lawmoclient.cpp
+
+MW_LAYER_SYSTEMINCLUDE
+USERINCLUDE     .
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc   
+
+LIBRARY         euser.lib
+LIBRARY         featmgr.lib
+LIBRARY       	flogger.lib
+
+SMPSAFE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dcmofw/lawmoclient/src/lawmoclient.cpp	Thu Aug 19 10:44:50 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:  LAWMO Client implementation
+*
+*/
+
+#include <e32svr.h>
+#include <featmgr.h>
+#include "dcmoclientserver.h"
+#include "lawmoclient.h"
+#include "lawmodebug.h"
+// Standard server startup code
+// 
+static TInt StartServer()
+	{
+	RLDEBUG("from lawmoclient ->starting dcmo server...");
+	
+	// EPOC and EKA 2 is easy, we just create a new server process. Simultaneous
+	// launching of two such processes should be detected when the second one
+	// attempts to create the server object, failing with KErrAlreadyExists.
+	RProcess server;
+	TInt r=server.Create(KDCMOServerName,KNullDesC);
+
+	if (r!=KErrNone)
+		{
+		RLDEBUG_2("lawmoclient -> server start failed %d",r);
+		return r;
+		}
+	TRequestStatus stat;
+	server.Rendezvous(stat);
+	if (stat!=KRequestPending)
+		server.Kill(0);		// abort startup
+	else
+		server.Resume();	// logon OK - start the server
+	RLDEBUG("lawmoclient -> dcmoserver Started");
+	User::WaitForRequest(stat);		// wait for start or death
+	// we can't use the 'exit reason' if the server panicked as this
+	// is the panic 'reason' and may be '0' which cannot be distinguished
+	// from KErrNone
+	r=(server.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
+	server.Close();
+	return r;
+	}
+
+
+// This is the standard retry pattern for server connection
+EXPORT_C TInt RLawmoClient::Connect()
+    {
+    RLDEBUG("RLawmoClient: connect...");
+    TInt retry=2;
+    for (;;)
+        {
+        TInt r=CreateSession(KDCMOServerName,TVersion(0,0,0),1);
+        if (r!=KErrNotFound && r!=KErrServerTerminated)
+            return r;
+        if (--retry==0)
+            return r;
+        RLDEBUG("RLawmoClient: to start server...");
+        r=StartServer();
+        if (r!=KErrNone && r!=KErrAlreadyExists)
+            return r;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// RLawmoClient::Close()
+// ---------------------------------------------------------------------------
+EXPORT_C void RLawmoClient::Close()
+	{
+	RLDEBUG(" RLawmoClient::Close");
+	RSessionBase::Close();  //basecall
+	   RLDEBUG(" RLawmoClient::close done");
+	}
+
+// ----------------------------------------------------------------------------------------
+// RLawmoClient::DeviceWipeL
+// ----------------------------------------------------------------------------------------
+EXPORT_C TLawMoStatus RLawmoClient::DeviceWipe()
+    {
+    RLDEBUG("RLawmoClient::DeviceWipe Begin");
+    TLawMoStatus status(ELawMoAccepted);
+    TPckg<TLawMoStatus> statusValue(status);
+    TInt err = SendReceive(EWipe,TIpcArgs(&statusValue));
+    //TInt err = SendReceive(EWipe);
+    if(err != KErrNone)
+        status = ELawMoWipeNotPerformed;
+    RLDEBUG("RLawmoClient::DeviceWipe End");
+    return status;
+    }
+
+// ----------------------------------------------------------------------------------------
+// RLawmoClient::DeviceWipeAll
+// ----------------------------------------------------------------------------------------
+EXPORT_C TLawMoStatus RLawmoClient::DeviceWipeAll( )
+    {
+    RLDEBUG("RLawmoClient::DeviceWipeAll Begin");
+    TLawMoStatus status(ELawMoSuccess);
+    TPckg<TLawMoStatus> statusValue(status);
+    TInt err = SendReceive( EWipeAll,TIpcArgs(&statusValue) );
+    if(err != KErrNone)//if sendreceive itself failed
+        status = ELawMoWipeFailed;
+    RLDEBUG("RLawmoClient::DeviceWipeAll End");
+    return status;
+    }
+
+// ----------------------------------------------------------------------------------------
+// RLawmoClient::SetPasscodeMaxAttempts
+// ----------------------------------------------------------------------------------------
+EXPORT_C TInt RLawmoClient::GetListItemName( TDes& aItemName, TDes& aNodeValue )
+    {
+    RLDEBUG("RLawmoClient::GetListItemName Begin");    
+    
+    TIpcArgs args1;
+    TLawMoStatus status(ELawMoOk);
+    
+    args1.Set( 0, &aItemName );
+    args1.Set( 1, &aNodeValue );
+    args1.Set( 2, status);
+    TInt err = SendReceive( EListItemName_Get, args1 );
+    if(err != KErrNone)
+        status = ELawMoInvalid;   
+    RLDEBUG("RLawmoClient::GetListItemName End");    
+    return status;
+    }
+
+EXPORT_C TInt RLawmoClient::GetToBeWipedValue( TDes& aItemName, TBool& aWipeVal )
+    {
+    RLDEBUG("RLawmoClient::GetToBeWipedValue Begin");    
+    
+    TIpcArgs args1;
+    TBuf<255> wipeValue;
+    TLex lex;
+    
+    TLawMoStatus status(ELawMoOk);
+    
+    args1.Set( 0, &aItemName );
+    args1.Set( 1, &wipeValue );
+    args1.Set( 2, status);
+    
+    TInt err = SendReceive( EToBeWiped_Get, args1 );
+    
+    if( err == KErrNone )
+        {
+        lex.Assign( wipeValue );
+        err = lex.Val( aWipeVal );
+        }
+    if(err != KErrNone)
+        status = ELawMoInvalid;
+    
+    RLDEBUG("RLawmoClient::GetToBeWipedValue End");    
+    return status;
+    }
+
+EXPORT_C TInt RLawmoClient::SetToBeWipedValue( TDes& aItemName, TInt aWipeVal )
+    {
+    RLDEBUG("RLawmoClient::SetToBeWipedValue Begin");        
+    TIpcArgs args1;    
+    TLawMoStatus status(ELawMoOk);
+    
+    args1.Set( 0, &aItemName );
+    args1.Set( 1, aWipeVal );
+    args1.Set( 2, status);
+    
+    TInt err = SendReceive( EToBeWiped_Set, args1 );
+    
+    if(err != KErrNone)
+        status = ELawMoInvalid;
+    
+    RLDEBUG("RLawmoClient::SetToBeWipedValue End");    
+    return status;
+    }
+// ----------------------------------------------------------------------------------------
+// RLawmoClient::SetPasscodeMaxAttempts
+// ----------------------------------------------------------------------------------------
+/*EXPORT_C TInt RLawmoClient::GetLawMoState( TDes& aState )
+    {
+    RLDEBUG("RLawmoClient::GetLawMoState Begin");
+    
+    TLawMoStatus status(ELawMoSuccess);
+    TIpcArgs args1;    
+    args1.Set( 0, &aState );
+    args1.Set( 1, status);
+    TInt err = SendReceive( EState, args1 );
+      
+    if(err != KErrNone)
+        status = ELawMoFail;
+    
+    RLDEBUG("RLawmoClient::GetLawMoState End");
+    return status;
+    }*/
--- a/dcmofw/rom/dcmofw.iby	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/rom/dcmofw.iby	Thu Aug 19 10:44:50 2010 +0300
@@ -20,13 +20,17 @@
 #define _DCMOFW_IBY_
 
 file=ABI_DIR\BUILD_DIR\dcmoclient.dll		SHARED_LIB_DIR\dcmoclient.dll
+#ifdef FF_OMA_LAWMO
+file=ABI_DIR\BUILD_DIR\lawmoclient.dll		SHARED_LIB_DIR\lawmoclient.dll
+#endif
 
-#ifdef FF_RUNTIME_DEVICE_CAPABILITY_CONFIGURATION
+#if defined(FF_RUNTIME_DEVICE_CAPABILITY_CONFIGURATION) || defined(FF_OMA_LAWMO)
 data=DATAZ_\RESOURCE_FILES_DIR\dcmo.rsc	RESOURCE_FILES_DIR\dcmo.rsc
 file=ABI_DIR\BUILD_DIR\dcmoserver.exe		PROGRAMS_DIR\dcmoserver.exe
 
 data=\epoc32\data\Z\private\10202BE9\2001FE47.txt       private\10202BE9\2001FE47.txt
 data=\epoc32\data\Z\private\10202BE9\2000253D.txt       private\10202BE9\2000253D.txt
 #endif
+
 #endif
 
--- a/dcmofw/rom/dcmofwresources.iby	Thu Jul 15 19:36:11 2010 +0300
+++ b/dcmofw/rom/dcmofwresources.iby	Thu Aug 19 10:44:50 2010 +0300
@@ -20,8 +20,9 @@
 #define _DCMOFWRESOURCES_IBY_
 
 
-#ifdef FF_RUNTIME_DEVICE_CAPABILITY_CONFIGURATION
+#if defined(FF_RUNTIME_DEVICE_CAPABILITY_CONFIGURATION) || defined(FF_OMA_LAWMO)
 data=DATAZ_\RESOURCE_FILES_DIR\dcmo.rsc	RESOURCE_FILES_DIR\dcmo.rsc
 #endif
+
 #endif
 
--- a/fotaapplication/fotaserver/FotaServer/group/fotaserver.mmp	Thu Jul 15 19:36:11 2010 +0300
+++ b/fotaapplication/fotaserver/FotaServer/group/fotaserver.mmp	Thu Aug 19 10:44:50 2010 +0300
@@ -116,6 +116,7 @@
 LIBRARY		featmgr.lib
 LIBRARY		fmsclient.lib	//FMS Client
 LIBRARY     	cmmanager.lib 	//Connection Manager
+LIBRARY		inetprotutil.lib
 
 LIBRARY		aknnotify.lib
 // #ifdef _FOTA_DEBUG
--- a/fotaapplication/fotaserver/FotaServer/src/fotadownload.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/fotaapplication/fotaserver/FotaServer/src/fotadownload.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -47,6 +47,7 @@
 #include "fotaserverPrivatePSKeys.h"
 #include "FotaNetworkRegStatus.h"
 #include <startupdomainpskeys.h>	//globalrfsstates
+#include <uri8.h>
 #define __LEAVE_IF_ERROR(x) if(KErrNone!=x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
 #define __LEAVE(x) {FLOG(_L("LEAVE in %s: %d"), __FILE__, __LINE__); User::Leave(x); }
 
@@ -294,7 +295,7 @@
 
 	if ( iUrl ) {delete iUrl; iUrl=NULL;}
 	iUrl = aPkgURL.Alloc();
-	iUpdateAfterDownload = aUpdateAfterDownload;
+	
 	iRestartCounter = aRestartDownload;
 
 	iDLState        = aParams;
@@ -314,6 +315,44 @@
 	// 2. Get Iap Id to use for download. This would be set in iDLState.iIapId.
 	SetIapToUseL(aParams, aIapid);
 
+
+	if ( iDLState.iIapId > KErrNotFound )
+		{
+		iFotaServer->iDatabase->OpenDBL();
+		iFotaServer->iDatabase->SetStateL(iDLState,KNullDesC8, EFDBIapId );
+		iFotaServer->iDatabase->CloseAndCommitDB();
+		}
+		
+	/*
+	TBuf8<100> test;
+	//_LIT8( KNSmlDMFotaNode,"http://2IND02230.noe.nokia.com8080/myspace/ddv1.dd" );
+	_LIT8( KNSmlDMFotaNode,"http://fdsqa.nokia.com/fdp/interface?fid=A0A19HMCUHWRU" );
+	test.Copy(KNSmlDMFotaNode);
+	
+	
+    TUriParser8 parser;
+
+    if (!parser.Parse(test) && !parser.IsSchemeValid()) */ 
+		
+	TUriParser8 parser;
+	
+	
+
+    if((parser.Parse(aPkgURL) == KErrNone) && !parser.IsSchemeValid() )
+	
+	{
+        FLOG(_L("URL is malformed.. finalizing download"));
+        iDLState.iResult = RFotaEngineSession::EResMalformedOrBadURL;
+        iDLState.iState  = RFotaEngineSession::EDownloadFailed;
+        iFotaServer->iDatabase->OpenDBL();
+        iFotaServer->iDatabase->SetStateL(iDLState, KNullDesC8, EFDBState | EFDBResult);
+        iFotaServer->iDatabase->CloseAndCommitDB();
+        iFotaServer->FinalizeDownloadL(iDLState);
+        LaunchNotifierL(ESyncMLFwUpdErrorNote, KErrGeneralNoResume, EFalse );
+        return;
+	}
+	iUpdateAfterDownload = aUpdateAfterDownload;
+
 	// 3. Determine whether download should be visible or not
 	// Autoaccepted profile?
 
--- a/remotemgmt_plat/dcmo_adapter_api/inc/DcmoConst.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/dcmo_adapter_api/inc/DcmoConst.h	Thu Aug 19 10:44:50 2010 +0300
@@ -51,4 +51,22 @@
 EDcmoUnknown
 };
 
+
+enum TLawMoStatus
+{
+    ELawMoSuccess,
+    ELawMoOk,
+    ELawMoFail,
+    ELawMoFullyLockFailed,
+    ELawMoPartialLockFailed,
+    ELawMoUnlockFailed,
+    ELawMoWipeSuccess,
+    ELawMoWipeFailed,
+    ELawMoWipeNotPerformed,
+    ELawMoUserCancelled,
+	ELawMoAccepted,
+	ELawMoInvalid,
+    ELawMoUnknown
+};
+
 #endif// __DCMOCONST_H__
--- a/remotemgmt_plat/dcmo_control_api/group/bld.inf	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/dcmo_control_api/group/bld.inf	Thu Aug 19 10:44:50 2010 +0300
@@ -25,4 +25,5 @@
 PRJ_EXPORTS
 
 ../inc/dcmoClientBase.h	     	MW_LAYER_PLATFORM_EXPORT_PATH(dcmoclientbase.h)
-../inc/dcmoClient.h	     			MW_LAYER_PLATFORM_EXPORT_PATH(dcmoclient.h)
+../inc/dcmoClient.h	     	MW_LAYER_PLATFORM_EXPORT_PATH(dcmoclient.h)
+../inc/lawmoclient.h		MW_LAYER_PLATFORM_EXPORT_PATH(lawmoclient.h)
\ No newline at end of file
--- a/remotemgmt_plat/dcmo_control_api/inc/dcmoClient.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/dcmo_control_api/inc/dcmoClient.h	Thu Aug 19 10:44:50 2010 +0300
@@ -37,20 +37,20 @@
 		 * @param None
 		 * @return KErrNone Symbian error code
 		 */
-		TInt OpenL();
+		IMPORT_C TInt OpenL();
 		
 		/**
 		 * Close server connection
 		 * @param None
 		 * @return None
 		 */
-		void Close();
+		IMPORT_C void Close();
 		
 		/**
      * ~RDCMOClient.
      * Virtual Destructor.
      */
-    virtual ~RDCMOClient();
+    IMPORT_C virtual ~RDCMOClient();
     
 		/**
 		 * Get the interger type value
@@ -60,7 +60,7 @@
 		 * @param aValue
 		 * @return TDCMOStatus 
 		 */
-		 TDCMOStatus GetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt& aValue);
+		 IMPORT_C TDCMOStatus GetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt& aValue);
 		 
 		 /**
 		 * Get the string type value
@@ -70,7 +70,7 @@
 		 * @param aStrValue
 		 * @return TDCMOStatus
 		 */
-		 TDCMOStatus GetDCMOStrAttributeValue (TDes& aCategory, TDCMONode aId, TDes& aStrValue);
+		 IMPORT_C TDCMOStatus GetDCMOStrAttributeValue (TDes& aCategory, TDCMONode aId, TDes& aStrValue);
 		 
 		 /**
 		 * Set the interger type value
@@ -80,7 +80,7 @@
 		 * @param aValue
 		 * @return TDCMOStatus
 		 */
-		 TDCMOStatus SetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt aValue);
+		 IMPORT_C TDCMOStatus SetDCMOIntAttributeValue(TDes& aCategory, TDCMONode aId, TInt aValue);
 		 		 
 		 /**
 		 * Set the string type value
@@ -90,7 +90,7 @@
 		 * @param aStrValue
 		 * @return TDCMOStatus
 		 */
-		 TDCMOStatus SetDCMOStrAttributeValue(TDes& aCategory, TDCMONode aId, TDes& aStrValue);
+		 IMPORT_C TDCMOStatus SetDCMOStrAttributeValue(TDes& aCategory, TDCMONode aId, TDes& aStrValue);
 		 
 		 /**
 		 * Get All type value
@@ -100,7 +100,7 @@
 		 * @param aStrValue
 		 * @return TDCMOStatus
 		 */
-		 void SearchByGroupValue(TDes& aGroup, TDes& aAdapterList);
+		 IMPORT_C void SearchByGroupValue(TDes& aGroup, TDes& aAdapterList);
 			
 		
 	private:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/dcmo_control_api/inc/lawmoclient.h	Thu Aug 19 10:44:50 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:  header file for lawmo Client
+*
+*/
+
+#ifndef __LAWMOCLIENT_H__
+#define __LAWMOCLIENT_H__
+
+
+#include <e32base.h>
+#include <f32file.h>
+#include <dcmoconst.h>
+
+// needed for creating server thread.
+
+class RLawmoClient : public RSessionBase
+    {
+public:
+
+	/**
+	 * connects to DCMOServer
+	 * @param None
+	 * @return KErrNone Symbian error code
+	 */	
+	IMPORT_C TInt Connect();  
+	/**
+	 * Close server connection
+	 * @param None
+	 * @return None
+	 */
+	IMPORT_C void Close();
+	/**
+	* Wipe the contents of the Device
+	* @param None
+	* @return None
+	*/
+	IMPORT_C TLawMoStatus DeviceWipe();
+
+	/**
+	* Wipe All the contents in the Device
+	* @param None
+	* @return None
+	*/
+	IMPORT_C TLawMoStatus DeviceWipeAll( );
+
+	/**
+	/*Fetches the ListItemName of the lawmo node
+	* @param ItemName - Node on which this fetch is initiated
+	* @param NodeValue- List Item name value
+	* @return Symbian error code
+	*/
+	IMPORT_C TInt GetListItemName( TDes& aItemName, TDes& aNodeValue);
+
+	/**
+	/*Fetches the tobewiped of the lawmo node
+	* @param ItemName - Node on which this fetch is initiated
+	* @param NodeValue- List Item name value
+	* @return Symbian error code
+	*/
+	IMPORT_C TInt GetToBeWipedValue( TDes& aItemName, TBool& aWipeVal);
+
+	/**
+	/*Sets the wipe value for the lawmo node	
+	* @param ItemName - Node on which this operation is initiated
+	* @param NodeValue- wipe value
+	* @return Symbian error code
+	*/	
+	IMPORT_C TInt SetToBeWipedValue( TDes& aItemName, TInt aWipeVal );
+
+private:
+
+    };
+
+#endif // __LAWMOCLIENT_H__
--- a/remotemgmt_plat/device_management_parameter_api/group/bld.inf	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/device_management_parameter_api/group/bld.inf	Thu Aug 19 10:44:50 2010 +0300
@@ -25,3 +25,4 @@
 PRJ_EXPORTS
 
 ../inc/DevManInternalCRKeys.h     MW_LAYER_PLATFORM_EXPORT_PATH(DevManInternalCRKeys.h)
+../inc/lawmoadaptercrkeys.h	  MW_LAYER_PLATFORM_EXPORT_PATH(lawmoadaptercrkeys.h)
\ No newline at end of file
--- a/remotemgmt_plat/device_management_parameter_api/inc/DevManInternalCRKeys.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/device_management_parameter_api/inc/DevManInternalCRKeys.h	Thu Aug 19 10:44:50 2010 +0300
@@ -166,6 +166,15 @@
 */
 const TUint32 KNSmlDMSCOMOTargetRef = 0x00000012;
 
+const TUint32 KLAWMOPhoneLock = 0x00000013;
+
+const TUint32 KLAWMOfactoryDmProfileID = 0x00000014;
+
+const TUint32 KMaxFactoryDMProfileId = 0x00000015;
+
+const TUint32 KLAWMOfactoryDmServerName = 0x00000016;
+
+const TUint32 KLAWMOfactoryDmServerID = 0x00000017;
 
 #endif // SYNCML_DEVMAN_INTERNAL_CR_KEYS_H
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/device_management_parameter_api/inc/lawmoadaptercrkeys.h	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,38 @@
+/*
+*  Name        : LawmoadapterCRKeys.h
+*  Part of     : Lawmoadapter
+*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 dm adapters
+* 	This is part of omadmextensions.
+*
+*/
+
+#ifndef LAWMOADAPTERCRKEYS_H
+#define LAWMOADAPTERCRKEYS_H
+
+// CONSTANTS
+
+// key uid
+const TUid KCRUidLawmoAdapter = {0x2002EA22};
+
+// State of Lawmo Adapter
+const TUint32 KLawmoRootNode = 0x00000001;
+const TUint32 KLawmoCorrelator = 0x00000002;
+const TUint32 KLawmoWipeStatus = 0x00000003;
+const TUint32 KLawmoSourceURI = 0x00000004;
+
+#endif // LawmoADAPTERCRKEYS_H
+            
+// End of File
--- a/remotemgmt_plat/group/bld.inf	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/group/bld.inf	Thu Aug 19 10:44:50 2010 +0300
@@ -58,3 +58,4 @@
 #include "../dm_native_notifier_api/group/bld.inf"
 #include "../syncml_ds_customization_api/group/bld.inf"
 #include "../syncml_ds_error_reporting_api/group/bld.inf"
+#include "../lawmo_plugin_api/group/bld.inf"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/lawmo_plugin_api/group/bld.inf	Thu Aug 19 10:44:50 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:  File that exports the files belonging to 
+:                LAWMO Plugin API
+*
+*/
+
+
+#include <platform_paths.hrh>
+
+PRJ_PLATFORMS
+DEFAULT
+
+PRJ_EXPORTS
+
+../inc/lawmointerface.h										MW_LAYER_PLATFORM_EXPORT_PATH(lawmointerface.h)
+../inc/lawmointerface.inl									MW_LAYER_PLATFORM_EXPORT_PATH(lawmointerface.inl)
+../inc/lawmocallbackinterface.h									MW_LAYER_PLATFORM_EXPORT_PATH(lawmocallbackinterface.h)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/lawmo_plugin_api/inc/lawmocallbackinterface.h	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  LAWMO CallBack Interface definition
+*
+*/
+
+#ifndef _MLAWMOCALLBACKINTERFACE_H__
+#define _MLAWMOCALLBACKINTERFACE_H__
+
+#include <e32base.h>
+
+class MLawmoPluginWipeObserver
+	{
+public:
+
+	/**
+	 * Called to notify the observer that the wipe call has been completed
+	 * by the Plugin at hand.
+	 * @param aSession session
+	 * @param aError   <code>KErrNone</code>, if opening the session succeeded;
+	 *                 or one of the system-wide error codes, if opening the 
+	 *                 session failed
+	 */
+	virtual void HandleWipeCompleted(TInt status)= 0;
+
+    };
+
+#endif  // _MLAWMOCALLBACKINTERFACE_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/lawmo_plugin_api/inc/lawmointerface.h	Thu Aug 19 10:44:50 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:  LAWMO Plugin Interface definition
+*
+*/
+
+#ifndef _MLAWMOPLUGININTERFACE_H__
+#define _MLAWMOPLUGININTERFACE_H__
+
+#include <e32base.h>
+#include <ecom/ecom.h>
+#include <lawmocallbackinterface.h>
+
+// UID of this interface
+const TUid KLAWMOPluginInterfaceUid = {0x2002EA1F}; 
+
+/**
+	An LAWMO abstract class being representative of the
+	concrete class which the client wishes to use.
+
+	It acts as a base, for a real class to provide all the 
+	functionality that a client requires.  
+	It supplies instantiation & destruction by using
+	the ECom framework, and functional services
+	by using the methods of the actual class.
+ */
+
+
+class MLAWMOPluginInterface
+	{
+public:
+	
+	virtual void WipeL() = 0;  
+	};
+ 
+class CLAWMOPluginInterface : public CBase, public MLAWMOPluginInterface
+	{
+public:
+	// Instantiates an object of this type	
+	/**
+   * Create instance of CLAWMOPluginInterface
+   * @param aUid , implementation Uid
+   * @return Instance of CLAWMOPluginInterface
+   */
+	static CLAWMOPluginInterface* NewL(TUid aUid, MLawmoPluginWipeObserver* aObserver);
+	/**
+   * C++ Destructor
+   */
+	virtual ~CLAWMOPluginInterface();
+	
+private:
+	// Unique instance identifier key
+	TUid iDtor_ID_Key;
+
+	};
+
+#include "LAWMOInterface.inl"
+
+#endif  // _MLAWMOPLUGININTERFACE_H__
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/remotemgmt_plat/lawmo_plugin_api/inc/lawmointerface.inl	Thu Aug 19 10:44:50 2010 +0300
@@ -0,0 +1,40 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  LAWMO Interface 
+*
+*/
+
+/**
+ * C++ Destructor
+ */
+inline CLAWMOPluginInterface::~CLAWMOPluginInterface()
+	{
+	// Destroy any instance variables and then
+	// inform the framework that this specific 
+	// instance of the interface has been destroyed.
+	REComSession::DestroyedImplementation(iDtor_ID_Key);
+	}
+	
+/**
+ * Create instance of CLAWMOPluginInterface
+ * @param aUid , implementation Uid
+ * @return Instance of CLAWMOPluginInterface
+ */
+inline CLAWMOPluginInterface* CLAWMOPluginInterface::NewL(TUid aUid, MLawmoPluginWipeObserver* aObserver)
+	{		
+		TAny* ptr = REComSession::CreateImplementationL( aUid, _FOFF(CLAWMOPluginInterface, iDtor_ID_Key), aObserver);
+    CLAWMOPluginInterface* self = reinterpret_cast<CLAWMOPluginInterface*>( ptr );
+    return self;
+	}
+//
\ No newline at end of file
--- a/remotemgmt_plat/scp_server_api/inc/SCPClient.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/scp_server_api/inc/SCPClient.h	Thu Aug 19 10:44:50 2010 +0300
@@ -269,6 +269,7 @@
         * Fetch the limit-values for code length
         */          
         void FetchLimits( TInt& aMin, TInt& aMax );
+		void InformAutolockTask();
         TBool isFlagEnabled;        
     };
 
--- a/remotemgmt_plat/syncml_client_api/inc/SyncMLErr.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/syncml_client_api/inc/SyncMLErr.h	Thu Aug 19 10:44:50 2010 +0300
@@ -121,6 +121,11 @@
 
     const TInt KErrGeneral                              = KErrSyncEngineErrorBase - 94;
 
+    /* Implementation of CMCC PIM v3 begins*/
+    /** Server is full - CMCC PIM v3 specific*/
+    const TInt KErrServerFull                           = KErrSyncEngineErrorBase - 95;
+    /* Implementation of CMCC PIM v3 ends*/
+    
 	/** Base value for push message parser-related errors. */
 	const TInt KErrPushMessageParserErrorBase					= -8451;		// 8451 - 8480
 	/** Push message is too short. */
--- a/remotemgmt_plat/terminal_security_device_lock_api/inc/TerminalControl3rdPartyAPI.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/remotemgmt_plat/terminal_security_device_lock_api/inc/TerminalControl3rdPartyAPI.h	Thu Aug 19 10:44:50 2010 +0300
@@ -148,6 +148,22 @@
 
 		IMPORT_C TInt GetDeviceLockParameter(TInt aType, TDes8& aData);
 
+		/**
+		ResetDeviceLockParameters
+
+		The function resets the Terminal Security parameters that were set by the calling application
+		(by earlier calls to SetDeviceLockParameter())
+
+		NOTE:
+		 > 	The function resets only those parameters that the calling function had set. Parameters
+			not set by the calling application are not affected.
+
+		 >	Calls to this function will not reset value of EPasscode. Device Lock Code will not be reset
+
+		@param none
+		@return KErrNone Symbian error code
+		*/
+		IMPORT_C TInt ResetDeviceLockParameters();
 	};
 
 #endif //__TERMINALCONTROL3RDPARTYAPI_H__
\ No newline at end of file
--- a/syncmlfw/common/sosserver/inc/nsmlsosthread.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/common/sosserver/inc/nsmlsosthread.h	Thu Aug 19 10:44:50 2010 +0300
@@ -128,6 +128,8 @@
     	CNSmlDMAgent* iDMAgent;		
 		CNSmlDSAgent* iDSAgent;	
 		CNSmlCancelTimeOut* iCancelTimeout;
+		// Fix for cancel not happening when cancel key is pressed 
+		TBool iSyncCancelled;
 	};
 
 
--- a/syncmlfw/common/sosserver/src/nsmlsosthread.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/common/sosserver/src/nsmlsosthread.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -147,7 +147,9 @@
 		FeatureManager::InitializeLibL();
 	iThreadParams.iThreadEngine = this;
 	iContentArray = new(ELeave) CArrayFixFlat<TNSmlContentSpecificSyncType>(1);
-	
+	// Fix for cancel not happening when cancel key is
+	// pressed .
+	iSyncCancelled = EFalse;
 	if ( iThreadParams.iCSArray )
 		{
 		for (TInt i = 0; i < iThreadParams.iCSArray->Count(); i++)
@@ -337,11 +339,63 @@
 	TInt status( KErrNone );			
 	if ( iThreadParams.iCurrentJob.UsageType() == ESmlDevMan )
 		{
+		CRepository* centrep = NULL;
+		TRAPD( err, centrep = CRepository::NewL(KCRUidDeviceManagementInternalKeys));  
+		TInt phoneLock(0);
+		TInt factoryProfileID(0);
+		if (err==KErrNone ) 
+		{
+			TInt err = centrep->Get( KLAWMOPhoneLock , phoneLock );
+			err = centrep->Get( KLAWMOfactoryDmProfileID , factoryProfileID );
+			delete centrep;
+			centrep = NULL;
+		}
+		if(phoneLock != 30)
+		{
+			_DBG_FILE("CNSmlThreadEngine phonelock != 30");
+			if(factoryProfileID>0)   
+			{   
+
+				TInt profileId = iThreadParams.iCurrentJob.ProfileId();    
+	
+				if(profileId!= factoryProfileID) 
+					{
+					   _DBG_FILE("CNSmlThreadEngine profid doesnt match with factory");
+					   TRequestStatus* stat = &iStatus;
+					   User::RequestComplete( stat, KErrNone );
+					   return;
+					}   
+			
+			}
+			else
+				{
+				    _DBG_FILE("CNSmlThreadEngine factoryprofileid<0");
+				    TRequestStatus* stat = &iStatus;
+					User::RequestComplete( stat, KErrNone );
+					return;	
+				}
+		}
+		_DBG_FILE("CNSmlThreadEngine startDMSessionL");
 		TRAP( status, StartDMSessionL() );
 		}
 	else
 		{
-		TRAP( status, StartDSSessionL() );	
+		// Scenario 1:
+		// Fix for cancel not happening when cancel key is
+		// pressed .
+        if(!iSyncCancelled)
+            {
+            TRAP( status, StartDSSessionL() );	
+            }
+        else
+            {
+			// Sync is cancelled from the UI before the
+			// the job session has started.
+			// Fix for cancel not happening when cancel key is
+			// pressed .
+            status = KErrCancel;
+            iSyncCancelled = EFalse;
+            }
 		}
 	
 	if ( status != KErrNone )
@@ -359,6 +413,11 @@
 //
 void CNSmlThreadEngine::CancelJob()
 	{
+	// Fix for cancel not happening when cancel key is
+	// pressed .
+    // job has been created but it is not running and from ui
+    // Cancel has been called
+    iSyncCancelled = ETrue;
 	if ( iCancelTimeout )
 	    {
 		iCancelTimeout->SetJobCancelled( iThreadParams.iCurrentJob.UsageType() );
@@ -409,7 +468,15 @@
 	
 	// Select correct sync method and start sync
 	TNSmlSyncInitiation syncInit = (TNSmlSyncInitiation)iThreadParams.iSyncInit;
-	
+	// Scenario 2:
+	// Fix for cancel not happening when cancel key is
+	// pressed .
+	if(iSyncCancelled)
+	    {
+	    iSyncCancelled = EFalse;
+        User::Leave( KErrCancel );
+	    }
+
     switch ( iThreadParams.iCurrentJob.JobType() )
         {
         case EDSJobProfile:
--- a/syncmlfw/common/syncagent/bld/DEF/bwinscwu.def	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/common/syncagent/bld/DEF/bwinscwu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -1,194 +1,196 @@
 EXPORTS
-	??0CNSmlAgentBase@@QAE@XZ @ 1 NONAME ; CNSmlAgentBase::CNSmlAgentBase(void)
-	??0CNSmlCmdsBase@@QAE@XZ @ 2 NONAME ; CNSmlCmdsBase::CNSmlCmdsBase(void)
-	??0TNSmlError@@QAE@XZ @ 3 NONAME ; TNSmlError::TNSmlError(void)
-	??1CNSmlAgentBase@@UAE@XZ @ 4 NONAME ; CNSmlAgentBase::~CNSmlAgentBase(void)
-	??1CNSmlCmdsBase@@UAE@XZ @ 5 NONAME ; CNSmlCmdsBase::~CNSmlCmdsBase(void)
-	??1TNSmlError@@UAE@XZ @ 6 NONAME ; TNSmlError::~TNSmlError(void)
-	??4CNSmlURI@@QAEAAV0@ABV0@@Z @ 7 NONAME ; class CNSmlURI & CNSmlURI::operator=(class CNSmlURI const &)
-	?AddItemDataL@CNSmlStatusContainer@@QAEXHPBUsml_pcdata_s@@@Z @ 8 NONAME ; void CNSmlStatusContainer::AddItemDataL(int, struct sml_pcdata_s const *)
-	?AddItemL@CNSmlResultsContainer@@QAEXHABVCBufBase@@ABVTDesC8@@1@Z @ 9 NONAME ; void CNSmlResultsContainer::AddItemL(int, class CBufBase const &, class TDesC8 const &, class TDesC8 const &)
-	?AddSourceRefL@CNSmlStatusContainer@@QAEXHPBUsml_source_s@@@Z @ 10 NONAME ; void CNSmlStatusContainer::AddSourceRefL(int, struct sml_source_s const *)
-	?AddTargetRefL@CNSmlStatusContainer@@QAEXHPBUsml_target_s@@@Z @ 11 NONAME ; void CNSmlStatusContainer::AddTargetRefL(int, struct sml_target_s const *)
-	?AlertCode@CNSmlCmdsBase@@QBE?AVTPtr8@@PAUsml_alert_s@@@Z @ 12 NONAME ; class TPtr8 CNSmlCmdsBase::AlertCode(struct sml_alert_s *) const
-	?AnyResults@CNSmlResultsContainer@@QBEHXZ @ 13 NONAME ; int CNSmlResultsContainer::AnyResults(void) const
-	?AppIndex@CNSmlResponseController@@QBEHH@Z @ 14 NONAME ; int CNSmlResponseController::AppIndex(int) const
-	?AuthenticationRequirementL@CNSmlAgentBase@@IAEHABVCNSmlResponseController@@H@Z @ 15 NONAME ; int CNSmlAgentBase::AuthenticationRequirementL(class CNSmlResponseController const &, int)
-	?Begin@CNSmlResultsContainer@@QAEXXZ @ 16 NONAME ; void CNSmlResultsContainer::Begin(void)
-	?Begin@CNSmlStatusContainer@@QAEXXZ @ 17 NONAME ; void CNSmlStatusContainer::Begin(void)
-	?BeginningStateL@CNSmlAgentBase@@IAEXXZ @ 18 NONAME ; void CNSmlAgentBase::BeginningStateL(void)
-	?BufferAreaForParsingL@CNSmlCmdsBase@@QAE?AVTPtr8@@XZ @ 19 NONAME ; class TPtr8 CNSmlCmdsBase::BufferAreaForParsingL(void)
-	?BusyStatus@CNSmlCmdsBase@@QBEHXZ @ 20 NONAME ; int CNSmlCmdsBase::BusyStatus(void) const
-	?CallbackCalled@CNSmlAgentBase@@QBEHXZ @ 21 NONAME ; int CNSmlAgentBase::CallbackCalled(void) const
-	?ChalType@CNSmlResponseController@@QBE?AVTPtrC8@@H@Z @ 22 NONAME ; class TPtrC8 CNSmlResponseController::ChalType(int) const
-	?Challenged@CNSmlAuth@@QBEHXZ @ 23 NONAME ; int CNSmlAuth::Challenged(void) const
-	?CheckStatusCodesAreReceivedL@CNSmlAgentBase@@IAEHH@Z @ 24 NONAME ; int CNSmlAgentBase::CheckStatusCodesAreReceivedL(int)
-	?ClientAlertNextMakingMapStateL@CNSmlAgentBase@@MAEXXZ @ 25 NONAME ; void CNSmlAgentBase::ClientAlertNextMakingMapStateL(void)
-	?ClientAlertNextStateL@CNSmlAgentBase@@IAEXXZ @ 26 NONAME ; void CNSmlAgentBase::ClientAlertNextStateL(void)
-	?ClientInitialisationStateL@CNSmlAgentBase@@IAEXXZ @ 27 NONAME ; void CNSmlAgentBase::ClientInitialisationStateL(void)
-	?CloseIDMappingTableL@CNSmlCmdsBase@@UAEXXZ @ 28 NONAME ; void CNSmlCmdsBase::CloseIDMappingTableL(void)
-	?Cmd@CNSmlResponseController@@QBEAAVTDesC8@@H@Z @ 29 NONAME ; class TDesC8 & CNSmlResponseController::Cmd(int) const
-	?ConstructL@CNSmlAgentBase@@IAEXXZ @ 30 NONAME ; void CNSmlAgentBase::ConstructL(void)
-	?ConstructL@CNSmlCmdsBase@@IAEXPAVCNSmlAgentBase@@ABVTDesC8@@1HABVHBufC16@@PAVCNSmlURI@@H@Z @ 31 NONAME ; void CNSmlCmdsBase::ConstructL(class CNSmlAgentBase *, class TDesC8 const &, class TDesC8 const &, int, class HBufC16 const &, class CNSmlURI *, int)
-	?CreateAndInitResponseItemL@CNSmlCmdsBase@@IAEHABVTDesC8@@@Z @ 32 NONAME ; int CNSmlCmdsBase::CreateAndInitResponseItemL(class TDesC8 const &)
-	?CreateNewResultsL@CNSmlResultsContainer@@QAEHABVTDesC8@@0PBUsml_target_s@@PBUsml_source_s@@@Z @ 33 NONAME ; int CNSmlResultsContainer::CreateNewResultsL(class TDesC8 const &, class TDesC8 const &, struct sml_target_s const *, struct sml_source_s const *)
-	?CreateNewStatusElementL@CNSmlStatusContainer@@QAEHXZ @ 34 NONAME ; int CNSmlStatusContainer::CreateNewStatusElementL(void)
-	?CurrentEntryID@CNSmlResultsContainer@@QBEHXZ @ 35 NONAME ; int CNSmlResultsContainer::CurrentEntryID(void) const
-	?DataBaseWithoutRelativePrefix@CNSmlURI@@QAE?AVTPtrC16@@XZ @ 36 NONAME ; class TPtrC16 CNSmlURI::DataBaseWithoutRelativePrefix(void)
-	?DataUpdateStatusMakingMapStateL@CNSmlAgentBase@@MAEXXZ @ 37 NONAME ; void CNSmlAgentBase::DataUpdateStatusMakingMapStateL(void)
-	?DataUpdateStatusMakingResultsStateL@CNSmlAgentBase@@MAEXXZ @ 38 NONAME ; void CNSmlAgentBase::DataUpdateStatusMakingResultsStateL(void)
-	?DataUpdateStatusStartingMessageStateBaseL@CNSmlAgentBase@@IAEXXZ @ 39 NONAME ; void CNSmlAgentBase::DataUpdateStatusStartingMessageStateBaseL(void)
-	?DataUpdateStatusStateL@CNSmlAgentBase@@IAEXXZ @ 40 NONAME ; void CNSmlAgentBase::DataUpdateStatusStateL(void)
-	?Database@CNSmlURI@@QAE?AVTPtrC16@@XZ @ 41 NONAME ; class TPtrC16 CNSmlURI::Database(void)
-	?DatabaseMatchesL@CNSmlURI@@QAEHABVTDesC16@@@Z @ 42 NONAME ; int CNSmlURI::DatabaseMatchesL(class TDesC16 const &)
-	?DeleteIDMappingTableL@CNSmlCmdsBase@@UAEHABVTDesC16@@0@Z @ 43 NONAME ; int CNSmlCmdsBase::DeleteIDMappingTableL(class TDesC16 const &, class TDesC16 const &)
-	?DisconnectFromOtherServers@CNSmlCmdsBase@@UAEXXZ @ 44 NONAME ; void CNSmlCmdsBase::DisconnectFromOtherServers(void)
-	?DoAnchorsL@CNSmlCmdsBase@@IBEXAAUsml_metinf_metinf_s@@PBVTDesC8@@1@Z @ 45 NONAME ; void CNSmlCmdsBase::DoAnchorsL(struct sml_metinf_metinf_s &, class TDesC8 const *, class TDesC8 const *) const
-	?DoCancel@CNSmlAgentBase@@UAEXXZ @ 46 NONAME ; void CNSmlAgentBase::DoCancel(void)
-	?DoCmdIdL@CNSmlCmdsBase@@IAEXAAPAUsml_pcdata_s@@@Z @ 47 NONAME ; void CNSmlCmdsBase::DoCmdIdL(struct sml_pcdata_s * &)
-	?DoGenericAlertL@CNSmlCmdsBase@@UAEXABVTDesC8@@00H0@Z @ 48 NONAME ; void CNSmlCmdsBase::DoGenericAlertL(class TDesC8 const &, class TDesC8 const &, class TDesC8 const &, int, class TDesC8 const &)
-	?DoGenericUserAlertL@CNSmlCmdsBase@@UAEHH@Z @ 49 NONAME ; int CNSmlCmdsBase::DoGenericUserAlertL(int)
-	?DoMaxObjSizeL@CNSmlCmdsBase@@IBEXAAUsml_metinf_metinf_s@@H@Z @ 50 NONAME ; void CNSmlCmdsBase::DoMaxObjSizeL(struct sml_metinf_metinf_s &, int) const
-	?DoMetInfLC@CNSmlCmdsBase@@QBEXAAPAUsml_metinf_metinf_s@@@Z @ 51 NONAME ; void CNSmlCmdsBase::DoMetInfLC(struct sml_metinf_metinf_s * &) const
-	?DoMetaL@CNSmlCmdsBase@@QBEXAAPAUsml_pcdata_s@@PBUsml_metinf_metinf_s@@@Z @ 52 NONAME ; void CNSmlCmdsBase::DoMetaL(struct sml_pcdata_s * &, struct sml_metinf_metinf_s const *) const
-	?DoOutsideCancel@CNSmlAgentBase@@UAEXXZ @ 53 NONAME ; void CNSmlAgentBase::DoOutsideCancel(void)
-	?DoSourceL@CNSmlCmdsBase@@QBEXAAPAUsml_source_s@@ABVTDesC16@@1@Z @ 54 NONAME ; void CNSmlCmdsBase::DoSourceL(struct sml_source_s * &, class TDesC16 const &, class TDesC16 const &) const
-	?DoSourceL@CNSmlCmdsBase@@QBEXAAPAUsml_source_s@@ABVTDesC16@@@Z @ 55 NONAME ; void CNSmlCmdsBase::DoSourceL(struct sml_source_s * &, class TDesC16 const &) const
-	?DoSourceL@CNSmlCmdsBase@@QBEXAAPAUsml_source_s@@ABVTDesC8@@@Z @ 56 NONAME ; void CNSmlCmdsBase::DoSourceL(struct sml_source_s * &, class TDesC8 const &) const
-	?DoStatusL@CNSmlCmdsBase@@QAE?AW4TReturnValue@1@PAUsml_status_s@@@Z @ 57 NONAME ; enum CNSmlCmdsBase::TReturnValue CNSmlCmdsBase::DoStatusL(struct sml_status_s *)
-	?DoSyncHdrL@CNSmlCmdsBase@@UAEXXZ @ 58 NONAME ; void CNSmlCmdsBase::DoSyncHdrL(void)
-	?DoTargetL@CNSmlCmdsBase@@QBEXAAPAUsml_target_s@@ABVTDesC16@@1@Z @ 59 NONAME ; void CNSmlCmdsBase::DoTargetL(struct sml_target_s * &, class TDesC16 const &, class TDesC16 const &) const
-	?DoTargetL@CNSmlCmdsBase@@QBEXAAPAUsml_target_s@@ABVTDesC16@@@Z @ 60 NONAME ; void CNSmlCmdsBase::DoTargetL(struct sml_target_s * &, class TDesC16 const &) const
-	?EndOfServerMessageL@CNSmlCmdsBase@@UBEXXZ @ 61 NONAME ; void CNSmlCmdsBase::EndOfServerMessageL(void) const
-	?EntryID@CNSmlResponseController@@QBEHHH@Z @ 62 NONAME ; int CNSmlResponseController::EntryID(int, int) const
-	?ErrorCodeConversion@TNSmlError@@MAEXXZ @ 63 NONAME ; void TNSmlError::ErrorCodeConversion(void)
-	?FetchIDMappingTableL@CNSmlCmdsBase@@UAEXH@Z @ 64 NONAME ; void CNSmlCmdsBase::FetchIDMappingTableL(int)
-	?FreeBaseResources@CNSmlAgentBase@@IAEXXZ @ 65 NONAME ; void CNSmlAgentBase::FreeBaseResources(void)
-	?HBufC16InUnicodeL@NSmlUnicodeConverter@@SAHABVTDesC8@@AAPAVHBufC16@@@Z @ 66 NONAME ; int NSmlUnicodeConverter::HBufC16InUnicodeL(class TDesC8 const &, class HBufC16 * &)
-	?HBufC16InUnicodeLC@NSmlUnicodeConverter@@SAHABVTDesC8@@AAPAVHBufC16@@@Z @ 67 NONAME ; int NSmlUnicodeConverter::HBufC16InUnicodeLC(class TDesC8 const &, class HBufC16 * &)
-	?HBufC8InUTF8LC@NSmlUnicodeConverter@@SAHABVTDesC16@@AAPAVHBufC8@@@Z @ 68 NONAME ; int NSmlUnicodeConverter::HBufC8InUTF8LC(class TDesC16 const &, class HBufC8 * &)
-	?HostName@CNSmlURI@@QAE?AVTPtrC16@@XZ @ 69 NONAME ; class TPtrC16 CNSmlURI::HostName(void)
-	?HostNameInUTF8AllocLC@CNSmlURI@@QAEPAVHBufC8@@XZ @ 70 NONAME ; class HBufC8 * CNSmlURI::HostNameInUTF8AllocLC(void)
-	?HostNameWithPortL@CNSmlURI@@QAE?AVTPtrC16@@H@Z @ 71 NONAME ; class TPtrC16 CNSmlURI::HostNameWithPortL(int)
-	?InitAskingDeviceInfoStateL@CNSmlAgentBase@@MAEXXZ @ 72 NONAME ; void CNSmlAgentBase::InitAskingDeviceInfoStateL(void)
-	?InitStartingMessageStateBaseL@CNSmlAgentBase@@IAEXXZ @ 73 NONAME ; void CNSmlAgentBase::InitStartingMessageStateBaseL(void)
-	?IsEqualL@CNSmlURI@@QAEHABV1@H@Z @ 74 NONAME ; int CNSmlURI::IsEqualL(class CNSmlURI const &, int)
-	?IsFlagSet@CNSmlCmdsBase@@IBEHABI0@Z @ 75 NONAME ; int CNSmlCmdsBase::IsFlagSet(unsigned int const &, unsigned int const &) const
-	?LUID@CNSmlResponseController@@QBE?AVTPtrC8@@H@Z @ 76 NONAME ; class TPtrC8 CNSmlResponseController::LUID(int) const
-	?LastEntryID@CNSmlStatusContainer@@QBEHXZ @ 77 NONAME ; int CNSmlStatusContainer::LastEntryID(void) const
-	?MarkGenAlertsSentL@CNSmlCmdsBase@@UAEXABVTDesC8@@@Z @ 78 NONAME ; void CNSmlCmdsBase::MarkGenAlertsSentL(class TDesC8 const &)
-	?MarkGenAlertsSentL@CNSmlCmdsBase@@UAEXXZ @ 79 NONAME ; void CNSmlCmdsBase::MarkGenAlertsSentL(void)
-	?MetaFormatInUtf8LC@CNSmlCmdsBase@@IBEPAVHBufC8@@PBUsml_pcdata_s@@@Z @ 80 NONAME ; class HBufC8 * CNSmlCmdsBase::MetaFormatInUtf8LC(struct sml_pcdata_s const *) const
-	?MetaTypeInUtf8LC@CNSmlCmdsBase@@IBEPAVHBufC8@@PBUsml_pcdata_s@@@Z @ 81 NONAME ; class HBufC8 * CNSmlCmdsBase::MetaTypeInUtf8LC(struct sml_pcdata_s const *) const
-	?MetaTypeLC@CNSmlCmdsBase@@IBEPAVHBufC16@@PBUsml_pcdata_s@@@Z @ 82 NONAME ; class HBufC16 * CNSmlCmdsBase::MetaTypeLC(struct sml_pcdata_s const *) const
-	?MoreData@CNSmlResponseController@@QBEHH@Z @ 83 NONAME ; int CNSmlResponseController::MoreData(int) const
-	?MoreDataL@CNSmlCmdsBase@@IAE?AW4TNSmlSyncMLStatusCode@TNSmlError@@PBVHBufC8@@PBUsml_item_s@@PBUsml_pcdata_s@@AAPAVCBufBase@@@Z @ 84 NONAME ; enum TNSmlError::TNSmlSyncMLStatusCode CNSmlCmdsBase::MoreDataL(class HBufC8 const *, struct sml_item_s const *, struct sml_pcdata_s const *, class CBufBase * &)
-	?NewL@CNSmlAuth@@SAPAV1@XZ @ 85 NONAME ; class CNSmlAuth * CNSmlAuth::NewL(void)
-	?NewL@CNSmlPhoneInfo@@SAPAV1@XZ @ 86 NONAME ; class CNSmlPhoneInfo * CNSmlPhoneInfo::NewL(void)
-	?NewL@CNSmlURI@@SAPAV1@ABVTDesC16@@H@Z @ 87 NONAME ; class CNSmlURI * CNSmlURI::NewL(class TDesC16 const &, int)
-	?NewL@CNSmlURI@@SAPAV1@ABVTDesC8@@H@Z @ 88 NONAME ; class CNSmlURI * CNSmlURI::NewL(class TDesC8 const &, int)
-	?NewL@CNSmlURI@@SAPAV1@XZ @ 89 NONAME ; class CNSmlURI * CNSmlURI::NewL(void)
-	?NewLC@CNSmlPhoneInfo@@SAPAV1@XZ @ 90 NONAME ; class CNSmlPhoneInfo * CNSmlPhoneInfo::NewLC(void)
-	?NewLC@CNSmlURI@@SAPAV1@ABVTDesC16@@H@Z @ 91 NONAME ; class CNSmlURI * CNSmlURI::NewLC(class TDesC16 const &, int)
-	?NewLC@CNSmlURI@@SAPAV1@ABVTDesC8@@H@Z @ 92 NONAME ; class CNSmlURI * CNSmlURI::NewLC(class TDesC8 const &, int)
-	?NewLC@CNSmlURI@@SAPAV1@XZ @ 93 NONAME ; class CNSmlURI * CNSmlURI::NewLC(void)
-	?NextResultsElement@CNSmlResultsContainer@@QAEHAAPAUsml_results_s@@@Z @ 94 NONAME ; int CNSmlResultsContainer::NextResultsElement(struct sml_results_s * &)
-	?NextStatusElement@CNSmlStatusContainer@@QAEHAAPAUsml_status_s@@H@Z @ 95 NONAME ; int CNSmlStatusContainer::NextStatusElement(struct sml_status_s * &, int)
-	?PCDATAToUnicodeLC@CNSmlCmdsBase@@QBEXABUsml_pcdata_s@@AAPAVHBufC16@@@Z @ 96 NONAME ; void CNSmlCmdsBase::PCDATAToUnicodeLC(struct sml_pcdata_s const &, class HBufC16 * &) const
-	?PcdataNewL@CNSmlCmdsBase@@QBEXAAPAUsml_pcdata_s@@ABVTDesC8@@@Z @ 97 NONAME ; void CNSmlCmdsBase::PcdataNewL(struct sml_pcdata_s * &, class TDesC8 const &) const
-	?PhoneDataL@CNSmlPhoneInfo@@QBEXW4TPhoneIdType@1@AAVTDes16@@@Z @ 98 NONAME ; void CNSmlPhoneInfo::PhoneDataL(enum CNSmlPhoneInfo::TPhoneIdType, class TDes16 &) const
-	?ProcessCopyCmdL@CNSmlCmdsBase@@UAEXPAUsml_generic_s@@@Z @ 99 NONAME ; void CNSmlCmdsBase::ProcessCopyCmdL(struct sml_generic_s *)
-	?ProcessExecCmdL@CNSmlCmdsBase@@UAEXPAUsml_exec_s@@@Z @ 100 NONAME ; void CNSmlCmdsBase::ProcessExecCmdL(struct sml_exec_s *)
-	?ProcessMapCmdL@CNSmlCmdsBase@@UAEXPAUsml_map_s@@@Z @ 101 NONAME ; void CNSmlCmdsBase::ProcessMapCmdL(struct sml_map_s *)
-	?ProcessReceivedDataL@CNSmlCmdsBase@@QAEHXZ @ 102 NONAME ; int CNSmlCmdsBase::ProcessReceivedDataL(void)
-	?ProcessSearchCmdL@CNSmlCmdsBase@@UAEXPAUsml_search_s@@@Z @ 103 NONAME ; void CNSmlCmdsBase::ProcessSearchCmdL(struct sml_search_s *)
-	?ProcessStatusCmdL@CNSmlCmdsBase@@UAEXPAUsml_status_s@@@Z @ 104 NONAME ; void CNSmlCmdsBase::ProcessStatusCmdL(struct sml_status_s *)
-	?ProcessSyncHdrL@CNSmlCmdsBase@@UAEXPAUsml_sync_hdr_s@@@Z @ 105 NONAME ; void CNSmlCmdsBase::ProcessSyncHdrL(struct sml_sync_hdr_s *)
-	?ProfileId@CNSmlAgentBase@@QBEHXZ @ 106 NONAME ; int CNSmlAgentBase::ProfileId(void) const
-	?ReceivingStateL@CNSmlAgentBase@@IAEXXZ @ 107 NONAME ; void CNSmlAgentBase::ReceivingStateL(void)
-	?RemoveWritten@CNSmlResultsContainer@@QAEXH@Z @ 108 NONAME ; void CNSmlResultsContainer::RemoveWritten(int)
-	?ResetGenericUserAlertL@CNSmlCmdsBase@@UAEXXZ @ 109 NONAME ; void CNSmlCmdsBase::ResetGenericUserAlertL(void)
-	?ResetL@CNSmlResponseController@@QAEXXZ @ 110 NONAME ; void CNSmlResponseController::ResetL(void)
-	?ResetLargeObjectBuffer@CNSmlCmdsBase@@QAEXXZ @ 111 NONAME ; void CNSmlCmdsBase::ResetLargeObjectBuffer(void)
-	?RespURI@CNSmlCmdsBase@@QBEPAVCNSmlURI@@XZ @ 112 NONAME ; class CNSmlURI * CNSmlCmdsBase::RespURI(void) const
-	?ResponseController@CNSmlCmdsBase@@QBEPAVCNSmlResponseController@@XZ @ 113 NONAME ; class CNSmlResponseController * CNSmlCmdsBase::ResponseController(void) const
-	?ResponseDetail@CNSmlResponseController@@QBE?AW4TResponseDetail@1@H@Z @ 114 NONAME ; enum CNSmlResponseController::TResponseDetail CNSmlResponseController::ResponseDetail(int) const
-	?ResultAlertStateL@CNSmlAgentBase@@IAEXXZ @ 115 NONAME ; void CNSmlAgentBase::ResultAlertStateL(void)
-	?ResultsContainer@CNSmlCmdsBase@@QBEPAVCNSmlResultsContainer@@XZ @ 116 NONAME ; class CNSmlResultsContainer * CNSmlCmdsBase::ResultsContainer(void) const
-	?RunL@CNSmlAgentBase@@UAEXXZ @ 117 NONAME ; void CNSmlAgentBase::RunL(void)
-	?SaveIfNonceL@CNSmlAgentBase@@IBEXABVCNSmlResponseController@@H@Z @ 118 NONAME ; void CNSmlAgentBase::SaveIfNonceL(class CNSmlResponseController const &, int) const
-	?SendingStateL@CNSmlAgentBase@@IAEXXZ @ 119 NONAME ; void CNSmlAgentBase::SendingStateL(void)
-	?ServerAlertNextAlertCmdStateL@CNSmlAgentBase@@IAEXPAUsml_alert_s@@@Z @ 120 NONAME ; void CNSmlAgentBase::ServerAlertNextAlertCmdStateL(struct sml_alert_s *)
-	?ServerAlertNextEndMessageStateL@CNSmlAgentBase@@IAEXH@Z @ 121 NONAME ; void CNSmlAgentBase::ServerAlertNextEndMessageStateL(int)
-	?ServerAlertNextStartMessageStateL@CNSmlAgentBase@@IAEXPAUsml_sync_hdr_s@@@Z @ 122 NONAME ; void CNSmlAgentBase::ServerAlertNextStartMessageStateL(struct sml_sync_hdr_s *)
-	?ServerAlertNextStateL@CNSmlAgentBase@@IAEXXZ @ 123 NONAME ; void CNSmlAgentBase::ServerAlertNextStateL(void)
-	?ServerAlertNextStatusCmdStateL@CNSmlAgentBase@@IAEXPAUsml_status_s@@@Z @ 124 NONAME ; void CNSmlAgentBase::ServerAlertNextStatusCmdStateL(struct sml_status_s *)
-	?ServerAuth@CNSmlCmdsBase@@QBEPAVCNSmlAuth@@XZ @ 125 NONAME ; class CNSmlAuth * CNSmlCmdsBase::ServerAuth(void) const
-	?ServerMaxObjSize@CNSmlCmdsBase@@IBEHPBUsml_pcdata_s@@@Z @ 126 NONAME ; int CNSmlCmdsBase::ServerMaxObjSize(struct sml_pcdata_s const *) const
-	?ServerModAlertCmdStateL@CNSmlAgentBase@@IAEXPAUsml_alert_s@@@Z @ 127 NONAME ; void CNSmlAgentBase::ServerModAlertCmdStateL(struct sml_alert_s *)
-	?ServerModEndMessageStateL@CNSmlAgentBase@@IAEXH@Z @ 128 NONAME ; void CNSmlAgentBase::ServerModEndMessageStateL(int)
-	?ServerModStartMessageStateL@CNSmlAgentBase@@IAEXPAUsml_sync_hdr_s@@@Z @ 129 NONAME ; void CNSmlAgentBase::ServerModStartMessageStateL(struct sml_sync_hdr_s *)
-	?ServerModStatusCmdStateL@CNSmlAgentBase@@IAEXPAUsml_status_s@@@Z @ 130 NONAME ; void CNSmlAgentBase::ServerModStatusCmdStateL(struct sml_status_s *)
-	?ServerNonceAllocL@CNSmlAgentBase@@UBEPAVHBufC16@@XZ @ 131 NONAME ; class HBufC16 * CNSmlAgentBase::ServerNonceAllocL(void) const
-	?ServerObjectSize@CNSmlCmdsBase@@IBEHPBUsml_pcdata_s@@@Z @ 132 NONAME ; int CNSmlCmdsBase::ServerObjectSize(struct sml_pcdata_s const *) const
-	?ServerPassword@CNSmlAgentBase@@MBE?AVTPtrC16@@XZ @ 133 NONAME ; class TPtrC16 CNSmlAgentBase::ServerPassword(void) const
-	?ServerUserName@CNSmlAgentBase@@MBE?AVTPtrC16@@XZ @ 134 NONAME ; class TPtrC16 CNSmlAgentBase::ServerUserName(void) const
-	?SetAppIndex@CNSmlResponseController@@QAEXHH@Z @ 135 NONAME ; void CNSmlResponseController::SetAppIndex(int, int)
-	?SetAtomicOrSequenceId@CNSmlStatusContainer@@QAEXHH@Z @ 136 NONAME ; void CNSmlStatusContainer::SetAtomicOrSequenceId(int, int)
-	?SetAuthRequiredL@CNSmlAuth@@QAEXXZ @ 137 NONAME ; void CNSmlAuth::SetAuthRequiredL(void)
-	?SetCmdIDL@CNSmlResultsContainer@@QAEXHPBUsml_pcdata_s@@@Z @ 138 NONAME ; void CNSmlResultsContainer::SetCmdIDL(int, struct sml_pcdata_s const *)
-	?SetCmdL@CNSmlStatusContainer@@QAEXHABVTDesC8@@@Z @ 139 NONAME ; void CNSmlStatusContainer::SetCmdL(int, class TDesC8 const &)
-	?SetCmdRefL@CNSmlStatusContainer@@QAEXHPBUsml_pcdata_s@@@Z @ 140 NONAME ; void CNSmlStatusContainer::SetCmdRefL(int, struct sml_pcdata_s const *)
-	?SetCredentialL@CNSmlAuth@@QAEXABVTDesC8@@@Z @ 141 NONAME ; void CNSmlAuth::SetCredentialL(class TDesC8 const &)
-	?SetDatabaseL@CNSmlURI@@QAEXABVTDesC16@@H@Z @ 142 NONAME ; void CNSmlURI::SetDatabaseL(class TDesC16 const &, int)
-	?SetDatabaseL@CNSmlURI@@QAEXABVTDesC8@@H@Z @ 143 NONAME ; void CNSmlURI::SetDatabaseL(class TDesC8 const &, int)
-	?SetEndOfDataAlertRequest@CNSmlAgentBase@@QAEXXZ @ 144 NONAME ; void CNSmlAgentBase::SetEndOfDataAlertRequest(void)
-	?SetErrorCode@TNSmlError@@QAEXH@Z @ 145 NONAME ; void TNSmlError::SetErrorCode(int)
-	?SetHostNameL@CNSmlURI@@QAEXABVTDesC16@@H@Z @ 146 NONAME ; void CNSmlURI::SetHostNameL(class TDesC16 const &, int)
-	?SetHostNameL@CNSmlURI@@QAEXABVTDesC8@@H@Z @ 147 NONAME ; void CNSmlURI::SetHostNameL(class TDesC8 const &, int)
-	?SetLUIDL@CNSmlResponseController@@QAEXHABVTDesC8@@@Z @ 148 NONAME ; void CNSmlResponseController::SetLUIDL(int, class TDesC8 const &)
-	?SetMaximumWorkspaceSize@CNSmlCmdsBase@@QAEXH@Z @ 149 NONAME ; void CNSmlCmdsBase::SetMaximumWorkspaceSize(int)
-	?SetMoreData@CNSmlResponseController@@QAEXH@Z @ 150 NONAME ; void CNSmlResponseController::SetMoreData(int)
-	?SetNoResponse@CNSmlStatusContainer@@QAEXHH@Z @ 151 NONAME ; void CNSmlStatusContainer::SetNoResponse(int, int)
-	?SetOffCallbackCalled@CNSmlAgentBase@@QAEXXZ @ 152 NONAME ; void CNSmlAgentBase::SetOffCallbackCalled(void)
-	?SetPerformedInAtomic@CNSmlStatusContainer@@QAEXH@Z @ 153 NONAME ; void CNSmlStatusContainer::SetPerformedInAtomic(int)
-	?SetPort@CNSmlURI@@QAEXH@Z @ 154 NONAME ; void CNSmlURI::SetPort(int)
-	?SetResponseDetail@CNSmlResponseController@@QAEXHW4TResponseDetail@1@@Z @ 155 NONAME ; void CNSmlResponseController::SetResponseDetail(int, enum CNSmlResponseController::TResponseDetail)
-	?SetServerNonceL@CNSmlAgentBase@@UBEXABVTDesC16@@@Z @ 156 NONAME ; void CNSmlAgentBase::SetServerNonceL(class TDesC16 const &) const
-	?SetStatusCodeL@CNSmlStatusContainer@@QAEXHHH@Z @ 157 NONAME ; void CNSmlStatusContainer::SetStatusCodeL(int, int, int)
-	?SetStatusCodeToAtomicOrSequenceCmdL@CNSmlStatusContainer@@QAEXHHABVTDesC8@@@Z @ 158 NONAME ; void CNSmlStatusContainer::SetStatusCodeToAtomicOrSequenceCmdL(int, int, class TDesC8 const &)
-	?SetStatusCodesInAtomicL@CNSmlStatusContainer@@QAEXHHH@Z @ 159 NONAME ; void CNSmlStatusContainer::SetStatusCodesInAtomicL(int, int, int)
-	?SetStatusID@CNSmlResultsContainer@@QAEXHH@Z @ 160 NONAME ; void CNSmlResultsContainer::SetStatusID(int, int)
-	?SetSyncAgent@CNSmlAuth@@QAEXPAVCNSmlAgentBase@@@Z @ 161 NONAME ; void CNSmlAuth::SetSyncAgent(class CNSmlAgentBase *)
-	?SourceIsUnderItem@CNSmlCmdsBase@@IBEHPBUsml_item_list_s@@@Z @ 162 NONAME ; int CNSmlCmdsBase::SourceIsUnderItem(struct sml_item_list_s const *) const
-	?StatusCode@CNSmlResponseController@@QBEHH@Z @ 163 NONAME ; int CNSmlResponseController::StatusCode(int) const
-	?StatusContainer@CNSmlCmdsBase@@QBEPAVCNSmlStatusContainer@@XZ @ 164 NONAME ; class CNSmlStatusContainer * CNSmlCmdsBase::StatusContainer(void) const
-	?StatusDataToCommandL@CNSmlCmdsBase@@IAEHABVTDesC8@@PBUsml_pcdata_s@@IPBUsml_item_s@@W4TNSmlSyncMLStatusCode@TNSmlError@@PBV2@@Z @ 165 NONAME ; int CNSmlCmdsBase::StatusDataToCommandL(class TDesC8 const &, struct sml_pcdata_s const *, unsigned int, struct sml_item_s const *, enum TNSmlError::TNSmlSyncMLStatusCode, class TDesC8 const *)
-	?StatusDataToGenericCommandL@CNSmlCmdsBase@@IAEHABVTDesC8@@PBUsml_generic_s@@PBUsml_item_s@@W4TNSmlSyncMLStatusCode@TNSmlError@@PBV2@@Z @ 166 NONAME ; int CNSmlCmdsBase::StatusDataToGenericCommandL(class TDesC8 const &, struct sml_generic_s const *, struct sml_item_s const *, enum TNSmlError::TNSmlSyncMLStatusCode, class TDesC8 const *)
-	?StatusDataToGetCommandL@CNSmlCmdsBase@@IAEHPBUsml_get_put_s@@PBUsml_item_s@@W4TNSmlSyncMLStatusCode@TNSmlError@@PBVTDesC8@@@Z @ 167 NONAME ; int CNSmlCmdsBase::StatusDataToGetCommandL(struct sml_get_put_s const *, struct sml_item_s const *, enum TNSmlError::TNSmlSyncMLStatusCode, class TDesC8 const *)
-	?StatusID@CNSmlResultsContainer@@QBEHH@Z @ 168 NONAME ; int CNSmlResultsContainer::StatusID(int) const
-	?StatusReference@CNSmlAgentBase@@QAEAAVTRequestStatus@@XZ @ 169 NONAME ; class TRequestStatus & CNSmlAgentBase::StatusReference(void)
-	?StatusToUnsupportedCommandL@CNSmlCmdsBase@@QAEXHABVTDesC8@@PBUsml_pcdata_s@@I@Z @ 170 NONAME ; void CNSmlCmdsBase::StatusToUnsupportedCommandL(int, class TDesC8 const &, struct sml_pcdata_s const *, unsigned int)
-	?SubtractConsumedFromPcData@CNSmlCmdsBase@@IAEXAAPAUsml_item_s@@H@Z @ 171 NONAME ; void CNSmlCmdsBase::SubtractConsumedFromPcData(struct sml_item_s * &, int)
-	?SwVersionL@CNSmlPhoneInfo@@QAE?AVTPtrC8@@XZ @ 172 NONAME ; class TPtrC8 CNSmlPhoneInfo::SwVersionL(void)
-	?SyncLog@CNSmlAgentBase@@QAEPAVCSyncMLHistoryJob@@XZ @ 173 NONAME ; class CSyncMLHistoryJob * CNSmlAgentBase::SyncLog(void)
-	?SyncLogErrorCode@TNSmlError@@QAEHXZ @ 174 NONAME ; int TNSmlError::SyncLogErrorCode(void)
-	?SyncLogMessageCode@TNSmlError@@UAEHXZ @ 175 NONAME ; int TNSmlError::SyncLogMessageCode(void)
-	?SyncMLDatabaseAllocLC@CNSmlURI@@QAEPAVHBufC16@@XZ @ 176 NONAME ; class HBufC16 * CNSmlURI::SyncMLDatabaseAllocLC(void)
-	?TargetIsUnderItem@CNSmlCmdsBase@@IBEHPBUsml_item_list_s@@@Z @ 177 NONAME ; int CNSmlCmdsBase::TargetIsUnderItem(struct sml_item_list_s const *) const
-	?TrimRightSpaceAndNull@CNSmlCmdsBase@@IBEXAAVTDes8@@@Z @ 178 NONAME ; void CNSmlCmdsBase::TrimRightSpaceAndNull(class TDes8 &) const
-	?WaitingLargeObjectChunk@CNSmlCmdsBase@@QBEHXZ @ 179 NONAME ; int CNSmlCmdsBase::WaitingLargeObjectChunk(void) const
-	?WriteMappingInfoToDbL@CNSmlCmdsBase@@UBEHXZ @ 180 NONAME ; int CNSmlCmdsBase::WriteMappingInfoToDbL(void) const
-	?smlAddCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 181 NONAME ; int CNSmlAgentBase::smlAddCmdFuncL(struct sml_generic_s *)
-	?smlCopyCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 182 NONAME ; int CNSmlAgentBase::smlCopyCmdFuncL(struct sml_generic_s *)
-	?smlDeleteCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 183 NONAME ; int CNSmlAgentBase::smlDeleteCmdFuncL(struct sml_generic_s *)
-	?smlExecCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_exec_s@@@Z @ 184 NONAME ; int CNSmlAgentBase::smlExecCmdFuncL(struct sml_exec_s *)
-	?smlMapCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_map_s@@@Z @ 185 NONAME ; int CNSmlAgentBase::smlMapCmdFuncL(struct sml_map_s *)
-	?smlMoveCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 186 NONAME ; int CNSmlAgentBase::smlMoveCmdFuncL(struct sml_generic_s *)
-	?smlReplaceCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 187 NONAME ; int CNSmlAgentBase::smlReplaceCmdFuncL(struct sml_generic_s *)
-	?smlSearchCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_search_s@@@Z @ 188 NONAME ; int CNSmlAgentBase::smlSearchCmdFuncL(struct sml_search_s *)
-	?LaunchAutoRestartL@CNSmlAgentBase@@UAEXH@Z @ 189 NONAME ; void CNSmlAgentBase::LaunchAutoRestartL(int)
-	?CheckAPBearerTypeL@CNSmlAgentBase@@QAE?AW4TApBearerType@@K@Z @ 190 NONAME ; enum TApBearerType CNSmlAgentBase::CheckAPBearerTypeL(unsigned long)
-	?DoGenericAlertL@CNSmlCmdsBase@@UAEXABVTDesC8@@ABV?$RArray@UCNSmlDMAlertItem@@@@@Z @ 191 NONAME ; void CNSmlCmdsBase::DoGenericAlertL(class TDesC8 const &, class RArray<struct CNSmlDMAlertItem> const &)
-	?DoTargetL@CNSmlCmdsBase@@QBEXAAPAUsml_target_s@@ABVTDesC8@@@Z @ 192 NONAME ; void CNSmlCmdsBase::DoTargetL(struct sml_target_s * &, class TDesC8 const &) const
+	?TrimRightSpaceAndNull@CNSmlCmdsBase@@IBEXAAVTDes8@@@Z @ 1 NONAME ; void CNSmlCmdsBase::TrimRightSpaceAndNull(class TDes8 &) const
+	?DoMetInfLC@CNSmlCmdsBase@@QBEXAAPAUsml_metinf_metinf_s@@@Z @ 2 NONAME ; void CNSmlCmdsBase::DoMetInfLC(struct sml_metinf_metinf_s * &) const
+	?NewL@CNSmlURI@@SAPAV1@ABVTDesC8@@H@Z @ 3 NONAME ; class CNSmlURI * CNSmlURI::NewL(class TDesC8 const &, int)
+	?BufferAreaForParsingL@CNSmlCmdsBase@@QAE?AVTPtr8@@XZ @ 4 NONAME ; class TPtr8 CNSmlCmdsBase::BufferAreaForParsingL(void)
+	?NewLC@CNSmlURI@@SAPAV1@ABVTDesC16@@H@Z @ 5 NONAME ; class CNSmlURI * CNSmlURI::NewLC(class TDesC16 const &, int)
+	?SetLUIDL@CNSmlResponseController@@QAEXHABVTDesC8@@@Z @ 6 NONAME ; void CNSmlResponseController::SetLUIDL(int, class TDesC8 const &)
+	?DoOutsideCancel@CNSmlAgentBase@@UAEXXZ @ 7 NONAME ; void CNSmlAgentBase::DoOutsideCancel(void)
+	?SetCmdL@CNSmlStatusContainer@@QAEXHABVTDesC8@@@Z @ 8 NONAME ; void CNSmlStatusContainer::SetCmdL(int, class TDesC8 const &)
+	?MetaTypeLC@CNSmlCmdsBase@@IBEPAVHBufC16@@PBUsml_pcdata_s@@@Z @ 9 NONAME ; class HBufC16 * CNSmlCmdsBase::MetaTypeLC(struct sml_pcdata_s const *) const
+	?smlReplaceCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 10 NONAME ; int CNSmlAgentBase::smlReplaceCmdFuncL(struct sml_generic_s *)
+	?BusyStatus@CNSmlCmdsBase@@QBEHXZ @ 11 NONAME ; int CNSmlCmdsBase::BusyStatus(void) const
+	?HostNameWithPortL@CNSmlURI@@QAE?AVTPtrC16@@H@Z @ 12 NONAME ; class TPtrC16 CNSmlURI::HostNameWithPortL(int)
+	?AlertCode@CNSmlCmdsBase@@QBE?AVTPtr8@@PAUsml_alert_s@@@Z @ 13 NONAME ; class TPtr8 CNSmlCmdsBase::AlertCode(struct sml_alert_s *) const
+	?CheckStatusCodesAreReceivedL@CNSmlAgentBase@@IAEHH@Z @ 14 NONAME ; int CNSmlAgentBase::CheckStatusCodesAreReceivedL(int)
+	?AddItemDataL@CNSmlStatusContainer@@QAEXHPBUsml_pcdata_s@@@Z @ 15 NONAME ; void CNSmlStatusContainer::AddItemDataL(int, struct sml_pcdata_s const *)
+	?RunL@CNSmlAgentBase@@UAEXXZ @ 16 NONAME ; void CNSmlAgentBase::RunL(void)
+	?smlAddCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 17 NONAME ; int CNSmlAgentBase::smlAddCmdFuncL(struct sml_generic_s *)
+	?AddItemL@CNSmlResultsContainer@@QAEXHABVCBufBase@@ABVTDesC8@@1@Z @ 18 NONAME ; void CNSmlResultsContainer::AddItemL(int, class CBufBase const &, class TDesC8 const &, class TDesC8 const &)
+	?MarkGenAlertsSentL@CNSmlCmdsBase@@UAEXXZ @ 19 NONAME ; void CNSmlCmdsBase::MarkGenAlertsSentL(void)
+	?DoSourceL@CNSmlCmdsBase@@QBEXAAPAUsml_source_s@@ABVTDesC16@@1@Z @ 20 NONAME ; void CNSmlCmdsBase::DoSourceL(struct sml_source_s * &, class TDesC16 const &, class TDesC16 const &) const
+	?ConstructL@CNSmlAgentBase@@IAEXXZ @ 21 NONAME ; void CNSmlAgentBase::ConstructL(void)
+	?AddTargetRefL@CNSmlStatusContainer@@QAEXHPBUsml_target_s@@@Z @ 22 NONAME ; void CNSmlStatusContainer::AddTargetRefL(int, struct sml_target_s const *)
+	?ClientInitialisationStateL@CNSmlAgentBase@@IAEXXZ @ 23 NONAME ; void CNSmlAgentBase::ClientInitialisationStateL(void)
+	?LaunchAutoRestartL@CNSmlAgentBase@@UAEXH@Z @ 24 NONAME ; void CNSmlAgentBase::LaunchAutoRestartL(int)
+	?CheckAPBearerTypeL@CNSmlAgentBase@@QAE?AW4TApBearerType@@K@Z @ 25 NONAME ; enum TApBearerType CNSmlAgentBase::CheckAPBearerTypeL(unsigned long)
+	?SetCmdRefL@CNSmlStatusContainer@@QAEXHPBUsml_pcdata_s@@@Z @ 26 NONAME ; void CNSmlStatusContainer::SetCmdRefL(int, struct sml_pcdata_s const *)
+	?ServerPassword@CNSmlAgentBase@@MBE?AVTPtrC16@@XZ @ 27 NONAME ; class TPtrC16 CNSmlAgentBase::ServerPassword(void) const
+	?SetStatusCodesInAtomicL@CNSmlStatusContainer@@QAEXHHH@Z @ 28 NONAME ; void CNSmlStatusContainer::SetStatusCodesInAtomicL(int, int, int)
+	?CreateAndInitResponseItemL@CNSmlCmdsBase@@IAEHABVTDesC8@@@Z @ 29 NONAME ; int CNSmlCmdsBase::CreateAndInitResponseItemL(class TDesC8 const &)
+	?MoreDataL@CNSmlCmdsBase@@IAE?AW4TNSmlSyncMLStatusCode@TNSmlError@@PBVHBufC8@@PBUsml_item_s@@PBUsml_pcdata_s@@AAPAVCBufBase@@@Z @ 30 NONAME ; enum TNSmlError::TNSmlSyncMLStatusCode CNSmlCmdsBase::MoreDataL(class HBufC8 const *, struct sml_item_s const *, struct sml_pcdata_s const *, class CBufBase * &)
+	?ServerModStatusCmdStateL@CNSmlAgentBase@@IAEXPAUsml_status_s@@@Z @ 31 NONAME ; void CNSmlAgentBase::ServerModStatusCmdStateL(struct sml_status_s *)
+	?StatusToUnsupportedCommandL@CNSmlCmdsBase@@QAEXHABVTDesC8@@PBUsml_pcdata_s@@I@Z @ 32 NONAME ; void CNSmlCmdsBase::StatusToUnsupportedCommandL(int, class TDesC8 const &, struct sml_pcdata_s const *, unsigned int)
+	?DoStatusL@CNSmlCmdsBase@@QAE?AW4TReturnValue@1@PAUsml_status_s@@@Z @ 33 NONAME ; enum CNSmlCmdsBase::TReturnValue CNSmlCmdsBase::DoStatusL(struct sml_status_s *)
+	?PCDATAToUnicodeLC@CNSmlCmdsBase@@QBEXABUsml_pcdata_s@@AAPAVHBufC16@@@Z @ 34 NONAME ; void CNSmlCmdsBase::PCDATAToUnicodeLC(struct sml_pcdata_s const &, class HBufC16 * &) const
+	??1CNSmlAgentBase@@UAE@XZ @ 35 NONAME ; CNSmlAgentBase::~CNSmlAgentBase(void)
+	??0TNSmlError@@QAE@XZ @ 36 NONAME ; TNSmlError::TNSmlError(void)
+	?SetNoResponse@CNSmlStatusContainer@@QAEXHH@Z @ 37 NONAME ; void CNSmlStatusContainer::SetNoResponse(int, int)
+	?AnyResults@CNSmlResultsContainer@@QBEHXZ @ 38 NONAME ; int CNSmlResultsContainer::AnyResults(void) const
+	?WriteMappingInfoToDbL@CNSmlCmdsBase@@UBEHXZ @ 39 NONAME ; int CNSmlCmdsBase::WriteMappingInfoToDbL(void) const
+	?StatusContainer@CNSmlCmdsBase@@QBEPAVCNSmlStatusContainer@@XZ @ 40 NONAME ; class CNSmlStatusContainer * CNSmlCmdsBase::StatusContainer(void) const
+	?smlMoveCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 41 NONAME ; int CNSmlAgentBase::smlMoveCmdFuncL(struct sml_generic_s *)
+	?ServerModAlertCmdStateL@CNSmlAgentBase@@IAEXPAUsml_alert_s@@@Z @ 42 NONAME ; void CNSmlAgentBase::ServerModAlertCmdStateL(struct sml_alert_s *)
+	?SetOffCallbackCalled@CNSmlAgentBase@@QAEXXZ @ 43 NONAME ; void CNSmlAgentBase::SetOffCallbackCalled(void)
+	?InitAskingDeviceInfoStateL@CNSmlAgentBase@@MAEXXZ @ 44 NONAME ; void CNSmlAgentBase::InitAskingDeviceInfoStateL(void)
+	?DoSyncHdrL@CNSmlCmdsBase@@UAEXXZ @ 45 NONAME ; void CNSmlCmdsBase::DoSyncHdrL(void)
+	??1TNSmlError@@UAE@XZ @ 46 NONAME ; TNSmlError::~TNSmlError(void)
+	?SetAuthRequiredL@CNSmlAuth@@QAEXXZ @ 47 NONAME ; void CNSmlAuth::SetAuthRequiredL(void)
+	?SubtractConsumedFromPcData@CNSmlCmdsBase@@IAEXAAPAUsml_item_s@@H@Z @ 48 NONAME ; void CNSmlCmdsBase::SubtractConsumedFromPcData(struct sml_item_s * &, int)
+	?StatusItem@CNSmlStatusContainer@@QAEPAUsml_status_s@@H@Z @ 49 NONAME ; struct sml_status_s * CNSmlStatusContainer::StatusItem(int)
+	?ChalType@CNSmlResponseController@@QBE?AVTPtrC8@@H@Z @ 50 NONAME ; class TPtrC8 CNSmlResponseController::ChalType(int) const
+	?SwVersionL@CNSmlPhoneInfo@@QAE?AVTPtrC8@@XZ @ 51 NONAME ; class TPtrC8 CNSmlPhoneInfo::SwVersionL(void)
+	?RespURI@CNSmlCmdsBase@@QBEPAVCNSmlURI@@XZ @ 52 NONAME ; class CNSmlURI * CNSmlCmdsBase::RespURI(void) const
+	?HostNameInUTF8AllocLC@CNSmlURI@@QAEPAVHBufC8@@XZ @ 53 NONAME ; class HBufC8 * CNSmlURI::HostNameInUTF8AllocLC(void)
+	?SetAtomicOrSequenceId@CNSmlStatusContainer@@QAEXHH@Z @ 54 NONAME ; void CNSmlStatusContainer::SetAtomicOrSequenceId(int, int)
+	?Begin@CNSmlStatusContainer@@QAEXXZ @ 55 NONAME ; void CNSmlStatusContainer::Begin(void)
+	?ServerAlertNextEndMessageStateL@CNSmlAgentBase@@IAEXH@Z @ 56 NONAME ; void CNSmlAgentBase::ServerAlertNextEndMessageStateL(int)
+	?DoMetaL@CNSmlCmdsBase@@QBEXAAPAUsml_pcdata_s@@PBUsml_metinf_metinf_s@@@Z @ 57 NONAME ; void CNSmlCmdsBase::DoMetaL(struct sml_pcdata_s * &, struct sml_metinf_metinf_s const *) const
+	?SetHostNameL@CNSmlURI@@QAEXABVTDesC16@@H@Z @ 58 NONAME ; void CNSmlURI::SetHostNameL(class TDesC16 const &, int)
+	?PhoneDataL@CNSmlPhoneInfo@@QBEXW4TPhoneIdType@1@AAVTDes16@@@Z @ 59 NONAME ; void CNSmlPhoneInfo::PhoneDataL(enum CNSmlPhoneInfo::TPhoneIdType, class TDes16 &) const
+	?DataUpdateStatusStateL@CNSmlAgentBase@@IAEXXZ @ 60 NONAME ; void CNSmlAgentBase::DataUpdateStatusStateL(void)
+	?MarkGenAlertsSentL@CNSmlCmdsBase@@UAEXABVTDesC8@@@Z @ 61 NONAME ; void CNSmlCmdsBase::MarkGenAlertsSentL(class TDesC8 const &)
+	?Cmd@CNSmlResponseController@@QBEAAVTDesC8@@H@Z @ 62 NONAME ; class TDesC8 & CNSmlResponseController::Cmd(int) const
+	?AddSourceRefL@CNSmlStatusContainer@@QAEXHPBUsml_source_s@@@Z @ 63 NONAME ; void CNSmlStatusContainer::AddSourceRefL(int, struct sml_source_s const *)
+	?SetStatusCodeL@CNSmlStatusContainer@@QAEXHHH@Z @ 64 NONAME ; void CNSmlStatusContainer::SetStatusCodeL(int, int, int)
+	?SetPort@CNSmlURI@@QAEXH@Z @ 65 NONAME ; void CNSmlURI::SetPort(int)
+	?SetErrorCode@TNSmlError@@QAEXH@Z @ 66 NONAME ; void TNSmlError::SetErrorCode(int)
+	?SendingStateL@CNSmlAgentBase@@IAEXXZ @ 67 NONAME ; void CNSmlAgentBase::SendingStateL(void)
+	?NewL@CNSmlPhoneInfo@@SAPAV1@XZ @ 68 NONAME ; class CNSmlPhoneInfo * CNSmlPhoneInfo::NewL(void)
+	?SetDatabaseL@CNSmlURI@@QAEXABVTDesC16@@H@Z @ 69 NONAME ; void CNSmlURI::SetDatabaseL(class TDesC16 const &, int)
+	?ResetLargeObjectBuffer@CNSmlCmdsBase@@QAEXXZ @ 70 NONAME ; void CNSmlCmdsBase::ResetLargeObjectBuffer(void)
+	?CloseIDMappingTableL@CNSmlCmdsBase@@UAEXXZ @ 71 NONAME ; void CNSmlCmdsBase::CloseIDMappingTableL(void)
+	?EndOfServerMessageL@CNSmlCmdsBase@@UBEXXZ @ 72 NONAME ; void CNSmlCmdsBase::EndOfServerMessageL(void) const
+	?ResetGenericUserAlertL@CNSmlCmdsBase@@UAEXXZ @ 73 NONAME ; void CNSmlCmdsBase::ResetGenericUserAlertL(void)
+	?DoGenericAlertL@CNSmlCmdsBase@@UAEXABVTDesC8@@ABV?$RArray@UCNSmlDMAlertItem@@@@@Z @ 74 NONAME ; void CNSmlCmdsBase::DoGenericAlertL(class TDesC8 const &, class RArray<struct CNSmlDMAlertItem> const &)
+	?DoTargetL@CNSmlCmdsBase@@QBEXAAPAUsml_target_s@@ABVTDesC16@@@Z @ 75 NONAME ; void CNSmlCmdsBase::DoTargetL(struct sml_target_s * &, class TDesC16 const &) const
+	?CurrentEntryID@CNSmlResultsContainer@@QBEHXZ @ 76 NONAME ; int CNSmlResultsContainer::CurrentEntryID(void) const
+	?SetStatusCodeToAtomicOrSequenceCmdL@CNSmlStatusContainer@@QAEXHHABVTDesC8@@@Z @ 77 NONAME ; void CNSmlStatusContainer::SetStatusCodeToAtomicOrSequenceCmdL(int, int, class TDesC8 const &)
+	?HBufC16InUnicodeLC@NSmlUnicodeConverter@@SAHABVTDesC8@@AAPAVHBufC16@@@Z @ 78 NONAME ; int NSmlUnicodeConverter::HBufC16InUnicodeLC(class TDesC8 const &, class HBufC16 * &)
+	?Challenged@CNSmlAuth@@QBEHXZ @ 79 NONAME ; int CNSmlAuth::Challenged(void) const
+	?IsEqualL@CNSmlURI@@QAEHABV1@H@Z @ 80 NONAME ; int CNSmlURI::IsEqualL(class CNSmlURI const &, int)
+	?SetHostNameL@CNSmlURI@@QAEXABVTDesC8@@H@Z @ 81 NONAME ; void CNSmlURI::SetHostNameL(class TDesC8 const &, int)
+	?ServerObjectSize@CNSmlCmdsBase@@IBEHPBUsml_pcdata_s@@@Z @ 82 NONAME ; int CNSmlCmdsBase::ServerObjectSize(struct sml_pcdata_s const *) const
+	??0CNSmlCmdsBase@@QAE@XZ @ 83 NONAME ; CNSmlCmdsBase::CNSmlCmdsBase(void)
+	?DoSourceL@CNSmlCmdsBase@@QBEXAAPAUsml_source_s@@ABVTDesC16@@@Z @ 84 NONAME ; void CNSmlCmdsBase::DoSourceL(struct sml_source_s * &, class TDesC16 const &) const
+	?smlMapCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_map_s@@@Z @ 85 NONAME ; int CNSmlAgentBase::smlMapCmdFuncL(struct sml_map_s *)
+	?ResetL@CNSmlResponseController@@QAEXXZ @ 86 NONAME ; void CNSmlResponseController::ResetL(void)
+	?FillItemDataL@CNSmlStatusContainer@@QAEXAAPAUsml_item_s@@@Z @ 87 NONAME ; void CNSmlStatusContainer::FillItemDataL(struct sml_item_s * &)
+	?ProcessStatusCmdL@CNSmlCmdsBase@@UAEXPAUsml_status_s@@@Z @ 88 NONAME ; void CNSmlCmdsBase::ProcessStatusCmdL(struct sml_status_s *)
+	?SetCmdIDL@CNSmlResultsContainer@@QAEXHPBUsml_pcdata_s@@@Z @ 89 NONAME ; void CNSmlResultsContainer::SetCmdIDL(int, struct sml_pcdata_s const *)
+	?ServerAlertNextStatusCmdStateL@CNSmlAgentBase@@IAEXPAUsml_status_s@@@Z @ 90 NONAME ; void CNSmlAgentBase::ServerAlertNextStatusCmdStateL(struct sml_status_s *)
+	?ProcessExecCmdL@CNSmlCmdsBase@@UAEXPAUsml_exec_s@@@Z @ 91 NONAME ; void CNSmlCmdsBase::ProcessExecCmdL(struct sml_exec_s *)
+	?HostName@CNSmlURI@@QAE?AVTPtrC16@@XZ @ 92 NONAME ; class TPtrC16 CNSmlURI::HostName(void)
+	?DoCancel@CNSmlAgentBase@@UAEXXZ @ 93 NONAME ; void CNSmlAgentBase::DoCancel(void)
+	?SyncLog@CNSmlAgentBase@@QAEPAVCSyncMLHistoryJob@@XZ @ 94 NONAME ; class CSyncMLHistoryJob * CNSmlAgentBase::SyncLog(void)
+	?StatusDataToGenericCommandL@CNSmlCmdsBase@@IAEHABVTDesC8@@PBUsml_generic_s@@PBUsml_item_s@@W4TNSmlSyncMLStatusCode@TNSmlError@@PBV2@@Z @ 95 NONAME ; int CNSmlCmdsBase::StatusDataToGenericCommandL(class TDesC8 const &, struct sml_generic_s const *, struct sml_item_s const *, enum TNSmlError::TNSmlSyncMLStatusCode, class TDesC8 const *)
+	?ServerAlertNextAlertCmdStateL@CNSmlAgentBase@@IAEXPAUsml_alert_s@@@Z @ 96 NONAME ; void CNSmlAgentBase::ServerAlertNextAlertCmdStateL(struct sml_alert_s *)
+	?SaveIfNonceL@CNSmlAgentBase@@IBEXABVCNSmlResponseController@@H@Z @ 97 NONAME ; void CNSmlAgentBase::SaveIfNonceL(class CNSmlResponseController const &, int) const
+	?FetchIDMappingTableL@CNSmlCmdsBase@@UAEXH@Z @ 98 NONAME ; void CNSmlCmdsBase::FetchIDMappingTableL(int)
+	?ServerAuth@CNSmlCmdsBase@@QBEPAVCNSmlAuth@@XZ @ 99 NONAME ; class CNSmlAuth * CNSmlCmdsBase::ServerAuth(void) const
+	?NewLC@CNSmlPhoneInfo@@SAPAV1@XZ @ 100 NONAME ; class CNSmlPhoneInfo * CNSmlPhoneInfo::NewLC(void)
+	?smlDeleteCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 101 NONAME ; int CNSmlAgentBase::smlDeleteCmdFuncL(struct sml_generic_s *)
+	?InitStartingMessageStateBaseL@CNSmlAgentBase@@IAEXXZ @ 102 NONAME ; void CNSmlAgentBase::InitStartingMessageStateBaseL(void)
+	?DeleteIDMappingTableL@CNSmlCmdsBase@@UAEHABVTDesC16@@0@Z @ 103 NONAME ; int CNSmlCmdsBase::DeleteIDMappingTableL(class TDesC16 const &, class TDesC16 const &)
+	?StatusReference@CNSmlAgentBase@@QAEAAVTRequestStatus@@XZ @ 104 NONAME ; class TRequestStatus & CNSmlAgentBase::StatusReference(void)
+	?SetCredentialL@CNSmlAuth@@QAEXABVTDesC8@@@Z @ 105 NONAME ; void CNSmlAuth::SetCredentialL(class TDesC8 const &)
+	?DoAnchorsL@CNSmlCmdsBase@@IBEXAAUsml_metinf_metinf_s@@PBVTDesC8@@1@Z @ 106 NONAME ; void CNSmlCmdsBase::DoAnchorsL(struct sml_metinf_metinf_s &, class TDesC8 const *, class TDesC8 const *) const
+	?DoSourceL@CNSmlCmdsBase@@QBEXAAPAUsml_source_s@@ABVTDesC8@@@Z @ 107 NONAME ; void CNSmlCmdsBase::DoSourceL(struct sml_source_s * &, class TDesC8 const &) const
+	?DoTargetL@CNSmlCmdsBase@@QBEXAAPAUsml_target_s@@ABVTDesC16@@1@Z @ 108 NONAME ; void CNSmlCmdsBase::DoTargetL(struct sml_target_s * &, class TDesC16 const &, class TDesC16 const &) const
+	?DoGenericAlertL@CNSmlCmdsBase@@UAEXABVTDesC8@@00H0@Z @ 109 NONAME ; void CNSmlCmdsBase::DoGenericAlertL(class TDesC8 const &, class TDesC8 const &, class TDesC8 const &, int, class TDesC8 const &)
+	?ProcessMapCmdL@CNSmlCmdsBase@@UAEXPAUsml_map_s@@@Z @ 110 NONAME ; void CNSmlCmdsBase::ProcessMapCmdL(struct sml_map_s *)
+	?ReceivingStateL@CNSmlAgentBase@@IAEXXZ @ 111 NONAME ; void CNSmlAgentBase::ReceivingStateL(void)
+	??4CNSmlURI@@QAEAAV0@ABV0@@Z @ 112 NONAME ; class CNSmlURI & CNSmlURI::operator=(class CNSmlURI const &)
+	?ProcessReceivedDataL@CNSmlCmdsBase@@QAEHXZ @ 113 NONAME ; int CNSmlCmdsBase::ProcessReceivedDataL(void)
+	?SetPerformedInAtomic@CNSmlStatusContainer@@QAEXH@Z @ 114 NONAME ; void CNSmlStatusContainer::SetPerformedInAtomic(int)
+	?SetMoreData@CNSmlResponseController@@QAEXH@Z @ 115 NONAME ; void CNSmlResponseController::SetMoreData(int)
+	?DatabaseMatchesL@CNSmlURI@@QAEHABVTDesC16@@@Z @ 116 NONAME ; int CNSmlURI::DatabaseMatchesL(class TDesC16 const &)
+	?LastEntryID@CNSmlStatusContainer@@QBEHXZ @ 117 NONAME ; int CNSmlStatusContainer::LastEntryID(void) const
+	?ResponseController@CNSmlCmdsBase@@QBEPAVCNSmlResponseController@@XZ @ 118 NONAME ; class CNSmlResponseController * CNSmlCmdsBase::ResponseController(void) const
+	?SetResponseDetail@CNSmlResponseController@@QAEXHW4TResponseDetail@1@@Z @ 119 NONAME ; void CNSmlResponseController::SetResponseDetail(int, enum CNSmlResponseController::TResponseDetail)
+	?ResultAlertStateL@CNSmlAgentBase@@IAEXXZ @ 120 NONAME ; void CNSmlAgentBase::ResultAlertStateL(void)
+	?ConstructL@CNSmlCmdsBase@@IAEXPAVCNSmlAgentBase@@ABVTDesC8@@1HABVHBufC16@@PAVCNSmlURI@@H@Z @ 121 NONAME ; void CNSmlCmdsBase::ConstructL(class CNSmlAgentBase *, class TDesC8 const &, class TDesC8 const &, int, class HBufC16 const &, class CNSmlURI *, int)
+	?DoCmdIdL@CNSmlCmdsBase@@IAEXAAPAUsml_pcdata_s@@@Z @ 122 NONAME ; void CNSmlCmdsBase::DoCmdIdL(struct sml_pcdata_s * &)
+	?smlSearchCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_search_s@@@Z @ 123 NONAME ; int CNSmlAgentBase::smlSearchCmdFuncL(struct sml_search_s *)
+	?IsFlagSet@CNSmlCmdsBase@@IBEHABI0@Z @ 124 NONAME ; int CNSmlCmdsBase::IsFlagSet(unsigned int const &, unsigned int const &) const
+	?SetServerNonceL@CNSmlAgentBase@@UBEXABVTDesC16@@@Z @ 125 NONAME ; void CNSmlAgentBase::SetServerNonceL(class TDesC16 const &) const
+	?DoTargetL@CNSmlCmdsBase@@QBEXAAPAUsml_target_s@@ABVTDesC8@@@Z @ 126 NONAME ; void CNSmlCmdsBase::DoTargetL(struct sml_target_s * &, class TDesC8 const &) const
+	?SetEndOfDataAlertRequest@CNSmlAgentBase@@QAEXXZ @ 127 NONAME ; void CNSmlAgentBase::SetEndOfDataAlertRequest(void)
+	?ServerUserName@CNSmlAgentBase@@MBE?AVTPtrC16@@XZ @ 128 NONAME ; class TPtrC16 CNSmlAgentBase::ServerUserName(void) const
+	?ClientAlertNextStateL@CNSmlAgentBase@@IAEXXZ @ 129 NONAME ; void CNSmlAgentBase::ClientAlertNextStateL(void)
+	?NewLC@CNSmlURI@@SAPAV1@XZ @ 130 NONAME ; class CNSmlURI * CNSmlURI::NewLC(void)
+	?DisconnectFromOtherServers@CNSmlCmdsBase@@UAEXXZ @ 131 NONAME ; void CNSmlCmdsBase::DisconnectFromOtherServers(void)
+	?SyncLogMessageCode@TNSmlError@@UAEHXZ @ 132 NONAME ; int TNSmlError::SyncLogMessageCode(void)
+	?ServerModEndMessageStateL@CNSmlAgentBase@@IAEXH@Z @ 133 NONAME ; void CNSmlAgentBase::ServerModEndMessageStateL(int)
+	?HBufC8InUTF8LC@NSmlUnicodeConverter@@SAHABVTDesC16@@AAPAVHBufC8@@@Z @ 134 NONAME ; int NSmlUnicodeConverter::HBufC8InUTF8LC(class TDesC16 const &, class HBufC8 * &)
+	?ProcessSearchCmdL@CNSmlCmdsBase@@UAEXPAUsml_search_s@@@Z @ 135 NONAME ; void CNSmlCmdsBase::ProcessSearchCmdL(struct sml_search_s *)
+	?ProfileId@CNSmlAgentBase@@QBEHXZ @ 136 NONAME ; int CNSmlAgentBase::ProfileId(void) const
+	?smlCopyCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_generic_s@@@Z @ 137 NONAME ; int CNSmlAgentBase::smlCopyCmdFuncL(struct sml_generic_s *)
+	?NewL@CNSmlURI@@SAPAV1@XZ @ 138 NONAME ; class CNSmlURI * CNSmlURI::NewL(void)
+	?DoGenericUserAlertL@CNSmlCmdsBase@@UAEHH@Z @ 139 NONAME ; int CNSmlCmdsBase::DoGenericUserAlertL(int)
+	?HBufC16InUnicodeL@NSmlUnicodeConverter@@SAHABVTDesC8@@AAPAVHBufC16@@@Z @ 140 NONAME ; int NSmlUnicodeConverter::HBufC16InUnicodeL(class TDesC8 const &, class HBufC16 * &)
+	?MoreData@CNSmlResponseController@@QBEHH@Z @ 141 NONAME ; int CNSmlResponseController::MoreData(int) const
+	?RemoveWritten@CNSmlResultsContainer@@QAEXH@Z @ 142 NONAME ; void CNSmlResultsContainer::RemoveWritten(int)
+	?MetaTypeInUtf8LC@CNSmlCmdsBase@@IBEPAVHBufC8@@PBUsml_pcdata_s@@@Z @ 143 NONAME ; class HBufC8 * CNSmlCmdsBase::MetaTypeInUtf8LC(struct sml_pcdata_s const *) const
+	?StatusDataToGetCommandL@CNSmlCmdsBase@@IAEHPBUsml_get_put_s@@PBUsml_item_s@@W4TNSmlSyncMLStatusCode@TNSmlError@@PBVTDesC8@@@Z @ 144 NONAME ; int CNSmlCmdsBase::StatusDataToGetCommandL(struct sml_get_put_s const *, struct sml_item_s const *, enum TNSmlError::TNSmlSyncMLStatusCode, class TDesC8 const *)
+	?AppIndex@CNSmlResponseController@@QBEHH@Z @ 145 NONAME ; int CNSmlResponseController::AppIndex(int) const
+	?WaitingLargeObjectChunk@CNSmlCmdsBase@@QBEHXZ @ 146 NONAME ; int CNSmlCmdsBase::WaitingLargeObjectChunk(void) const
+	?SetMaximumWorkspaceSize@CNSmlCmdsBase@@QAEXH@Z @ 147 NONAME ; void CNSmlCmdsBase::SetMaximumWorkspaceSize(int)
+	?StatusCode@CNSmlResponseController@@QBEHH@Z @ 148 NONAME ; int CNSmlResponseController::StatusCode(int) const
+	?smlExecCmdFuncL@CNSmlAgentBase@@UAEHPAUsml_exec_s@@@Z @ 149 NONAME ; int CNSmlAgentBase::smlExecCmdFuncL(struct sml_exec_s *)
+	?EntryID@CNSmlResponseController@@QBEHHH@Z @ 150 NONAME ; int CNSmlResponseController::EntryID(int, int) const
+	?ProcessSyncHdrL@CNSmlCmdsBase@@UAEXPAUsml_sync_hdr_s@@@Z @ 151 NONAME ; void CNSmlCmdsBase::ProcessSyncHdrL(struct sml_sync_hdr_s *)
+	?ProcessCopyCmdL@CNSmlCmdsBase@@UAEXPAUsml_generic_s@@@Z @ 152 NONAME ; void CNSmlCmdsBase::ProcessCopyCmdL(struct sml_generic_s *)
+	?ServerNonceAllocL@CNSmlAgentBase@@UBEPAVHBufC16@@XZ @ 153 NONAME ; class HBufC16 * CNSmlAgentBase::ServerNonceAllocL(void) const
+	?ResultsContainer@CNSmlCmdsBase@@QBEPAVCNSmlResultsContainer@@XZ @ 154 NONAME ; class CNSmlResultsContainer * CNSmlCmdsBase::ResultsContainer(void) const
+	?DataUpdateStatusMakingMapStateL@CNSmlAgentBase@@MAEXXZ @ 155 NONAME ; void CNSmlAgentBase::DataUpdateStatusMakingMapStateL(void)
+	?SetSyncAgent@CNSmlAuth@@QAEXPAVCNSmlAgentBase@@@Z @ 156 NONAME ; void CNSmlAuth::SetSyncAgent(class CNSmlAgentBase *)
+	?MetaFormatInUtf8LC@CNSmlCmdsBase@@IBEPAVHBufC8@@PBUsml_pcdata_s@@@Z @ 157 NONAME ; class HBufC8 * CNSmlCmdsBase::MetaFormatInUtf8LC(struct sml_pcdata_s const *) const
+	?ResponseDetail@CNSmlResponseController@@QBE?AW4TResponseDetail@1@H@Z @ 158 NONAME ; enum CNSmlResponseController::TResponseDetail CNSmlResponseController::ResponseDetail(int) const
+	?StatusID@CNSmlResultsContainer@@QBEHH@Z @ 159 NONAME ; int CNSmlResultsContainer::StatusID(int) const
+	?ErrorCodeConversion@TNSmlError@@MAEXXZ @ 160 NONAME ; void TNSmlError::ErrorCodeConversion(void)
+	?ServerMaxObjSize@CNSmlCmdsBase@@IBEHPBUsml_pcdata_s@@@Z @ 161 NONAME ; int CNSmlCmdsBase::ServerMaxObjSize(struct sml_pcdata_s const *) const
+	?ServerModStartMessageStateL@CNSmlAgentBase@@IAEXPAUsml_sync_hdr_s@@@Z @ 162 NONAME ; void CNSmlAgentBase::ServerModStartMessageStateL(struct sml_sync_hdr_s *)
+	?CallbackCalled@CNSmlAgentBase@@QBEHXZ @ 163 NONAME ; int CNSmlAgentBase::CallbackCalled(void) const
+	?PcdataNewL@CNSmlCmdsBase@@QBEXAAPAUsml_pcdata_s@@ABVTDesC8@@@Z @ 164 NONAME ; void CNSmlCmdsBase::PcdataNewL(struct sml_pcdata_s * &, class TDesC8 const &) const
+	?NextResultsElement@CNSmlResultsContainer@@QAEHAAPAUsml_results_s@@@Z @ 165 NONAME ; int CNSmlResultsContainer::NextResultsElement(struct sml_results_s * &)
+	?SetAppIndex@CNSmlResponseController@@QAEXHH@Z @ 166 NONAME ; void CNSmlResponseController::SetAppIndex(int, int)
+	?Begin@CNSmlResultsContainer@@QAEXXZ @ 167 NONAME ; void CNSmlResultsContainer::Begin(void)
+	?SetDatabaseL@CNSmlURI@@QAEXABVTDesC8@@H@Z @ 168 NONAME ; void CNSmlURI::SetDatabaseL(class TDesC8 const &, int)
+	?CreateNewResultsL@CNSmlResultsContainer@@QAEHABVTDesC8@@0PBUsml_target_s@@PBUsml_source_s@@@Z @ 169 NONAME ; int CNSmlResultsContainer::CreateNewResultsL(class TDesC8 const &, class TDesC8 const &, struct sml_target_s const *, struct sml_source_s const *)
+	?SyncMLDatabaseAllocLC@CNSmlURI@@QAEPAVHBufC16@@XZ @ 170 NONAME ; class HBufC16 * CNSmlURI::SyncMLDatabaseAllocLC(void)
+	?DataUpdateStatusStartingMessageStateBaseL@CNSmlAgentBase@@IAEXXZ @ 171 NONAME ; void CNSmlAgentBase::DataUpdateStatusStartingMessageStateBaseL(void)
+	?DataUpdateStatusMakingResultsStateL@CNSmlAgentBase@@MAEXXZ @ 172 NONAME ; void CNSmlAgentBase::DataUpdateStatusMakingResultsStateL(void)
+	??0CNSmlAgentBase@@QAE@XZ @ 173 NONAME ; CNSmlAgentBase::CNSmlAgentBase(void)
+	?NewLC@CNSmlURI@@SAPAV1@ABVTDesC8@@H@Z @ 174 NONAME ; class CNSmlURI * CNSmlURI::NewLC(class TDesC8 const &, int)
+	?ServerAlertNextStateL@CNSmlAgentBase@@IAEXXZ @ 175 NONAME ; void CNSmlAgentBase::ServerAlertNextStateL(void)
+	?LUID@CNSmlResponseController@@QBE?AVTPtrC8@@H@Z @ 176 NONAME ; class TPtrC8 CNSmlResponseController::LUID(int) const
+	?NextStatusElement@CNSmlStatusContainer@@QAEHAAPAUsml_status_s@@H@Z @ 177 NONAME ; int CNSmlStatusContainer::NextStatusElement(struct sml_status_s * &, int)
+	?AuthenticationRequirementL@CNSmlAgentBase@@IAEHABVCNSmlResponseController@@H@Z @ 178 NONAME ; int CNSmlAgentBase::AuthenticationRequirementL(class CNSmlResponseController const &, int)
+	?StatusDataToCommandL@CNSmlCmdsBase@@IAEHABVTDesC8@@PBUsml_pcdata_s@@IPBUsml_item_s@@W4TNSmlSyncMLStatusCode@TNSmlError@@PBV2@@Z @ 179 NONAME ; int CNSmlCmdsBase::StatusDataToCommandL(class TDesC8 const &, struct sml_pcdata_s const *, unsigned int, struct sml_item_s const *, enum TNSmlError::TNSmlSyncMLStatusCode, class TDesC8 const *)
+	?SourceIsUnderItem@CNSmlCmdsBase@@IBEHPBUsml_item_list_s@@@Z @ 180 NONAME ; int CNSmlCmdsBase::SourceIsUnderItem(struct sml_item_list_s const *) const
+	?SetStatusID@CNSmlResultsContainer@@QAEXHH@Z @ 181 NONAME ; void CNSmlResultsContainer::SetStatusID(int, int)
+	?CreateNewStatusElementL@CNSmlStatusContainer@@QAEHXZ @ 182 NONAME ; int CNSmlStatusContainer::CreateNewStatusElementL(void)
+	?FreeBaseResources@CNSmlAgentBase@@IAEXXZ @ 183 NONAME ; void CNSmlAgentBase::FreeBaseResources(void)
+	??1CNSmlCmdsBase@@UAE@XZ @ 184 NONAME ; CNSmlCmdsBase::~CNSmlCmdsBase(void)
+	?NewL@CNSmlURI@@SAPAV1@ABVTDesC16@@H@Z @ 185 NONAME ; class CNSmlURI * CNSmlURI::NewL(class TDesC16 const &, int)
+	?NewL@CNSmlAuth@@SAPAV1@XZ @ 186 NONAME ; class CNSmlAuth * CNSmlAuth::NewL(void)
+	?DataBaseWithoutRelativePrefix@CNSmlURI@@QAE?AVTPtrC16@@XZ @ 187 NONAME ; class TPtrC16 CNSmlURI::DataBaseWithoutRelativePrefix(void)
+	?Database@CNSmlURI@@QAE?AVTPtrC16@@XZ @ 188 NONAME ; class TPtrC16 CNSmlURI::Database(void)
+	?DoMaxObjSizeL@CNSmlCmdsBase@@IBEXAAUsml_metinf_metinf_s@@H@Z @ 189 NONAME ; void CNSmlCmdsBase::DoMaxObjSizeL(struct sml_metinf_metinf_s &, int) const
+	?SyncLogErrorCode@TNSmlError@@QAEHXZ @ 190 NONAME ; int TNSmlError::SyncLogErrorCode(void)
+	?ClientAlertNextMakingMapStateL@CNSmlAgentBase@@MAEXXZ @ 191 NONAME ; void CNSmlAgentBase::ClientAlertNextMakingMapStateL(void)
+	?TargetIsUnderItem@CNSmlCmdsBase@@IBEHPBUsml_item_list_s@@@Z @ 192 NONAME ; int CNSmlCmdsBase::TargetIsUnderItem(struct sml_item_list_s const *) const
+	?ServerAlertNextStartMessageStateL@CNSmlAgentBase@@IAEXPAUsml_sync_hdr_s@@@Z @ 193 NONAME ; void CNSmlAgentBase::ServerAlertNextStartMessageStateL(struct sml_sync_hdr_s *)
+	?BeginningStateL@CNSmlAgentBase@@IAEXXZ @ 194 NONAME ; void CNSmlAgentBase::BeginningStateL(void)
 
--- a/syncmlfw/common/syncagent/bld/DEF/eabiu.def	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/common/syncagent/bld/DEF/eabiu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -11,217 +11,219 @@
 	_ZN13CNSmlCmdsBase10ConstructLEP14CNSmlAgentBaseRK6TDesC8S4_iRK7HBufC16P8CNSmlURIi @ 10 NONAME
 	_ZN13CNSmlCmdsBase10DoSyncHdrLEv @ 11 NONAME
 	_ZN13CNSmlCmdsBase14ProcessMapCmdLEP9sml_map_s @ 12 NONAME
-	_ZN13CNSmlCmdsBase15DoGenericAlertLERK6TDesC8S2_S2_iS2_ @ 13 NONAME
-	_ZN13CNSmlCmdsBase15ProcessCopyCmdLEP13sml_generic_s @ 14 NONAME
-	_ZN13CNSmlCmdsBase15ProcessExecCmdLEP10sml_exec_s @ 15 NONAME
-	_ZN13CNSmlCmdsBase15ProcessSyncHdrLEP14sml_sync_hdr_s @ 16 NONAME
-	_ZN13CNSmlCmdsBase17ProcessSearchCmdLEP12sml_search_s @ 17 NONAME
-	_ZN13CNSmlCmdsBase17ProcessStatusCmdLEP12sml_status_s @ 18 NONAME
-	_ZN13CNSmlCmdsBase18MarkGenAlertsSentLERK6TDesC8 @ 19 NONAME
-	_ZN13CNSmlCmdsBase18MarkGenAlertsSentLEv @ 20 NONAME
-	_ZN13CNSmlCmdsBase19DoGenericUserAlertLEi @ 21 NONAME
-	_ZN13CNSmlCmdsBase20CloseIDMappingTableLEv @ 22 NONAME
-	_ZN13CNSmlCmdsBase20FetchIDMappingTableLEi @ 23 NONAME
-	_ZN13CNSmlCmdsBase20ProcessReceivedDataLEv @ 24 NONAME
-	_ZN13CNSmlCmdsBase20StatusDataToCommandLERK6TDesC8PK12sml_pcdata_sjPK10sml_item_sN10TNSmlError21TNSmlSyncMLStatusCodeEPS1_ @ 25 NONAME
-	_ZN13CNSmlCmdsBase21BufferAreaForParsingLEv @ 26 NONAME
-	_ZN13CNSmlCmdsBase21DeleteIDMappingTableLERK7TDesC16S2_ @ 27 NONAME
-	_ZN13CNSmlCmdsBase22ResetGenericUserAlertLEv @ 28 NONAME
-	_ZN13CNSmlCmdsBase22ResetLargeObjectBufferEv @ 29 NONAME
-	_ZN13CNSmlCmdsBase23SetMaximumWorkspaceSizeEi @ 30 NONAME
-	_ZN13CNSmlCmdsBase23StatusDataToGetCommandLEPK13sml_get_put_sPK10sml_item_sN10TNSmlError21TNSmlSyncMLStatusCodeEPK6TDesC8 @ 31 NONAME
-	_ZN13CNSmlCmdsBase26CreateAndInitResponseItemLERK6TDesC8 @ 32 NONAME
-	_ZN13CNSmlCmdsBase26DisconnectFromOtherServersEv @ 33 NONAME
-	_ZN13CNSmlCmdsBase26SubtractConsumedFromPcDataERP10sml_item_si @ 34 NONAME
-	_ZN13CNSmlCmdsBase27StatusDataToGenericCommandLERK6TDesC8PK13sml_generic_sPK10sml_item_sN10TNSmlError21TNSmlSyncMLStatusCodeEPS1_ @ 35 NONAME
-	_ZN13CNSmlCmdsBase27StatusToUnsupportedCommandLEiRK6TDesC8PK12sml_pcdata_sj @ 36 NONAME
-	_ZN13CNSmlCmdsBase8DoCmdIdLERP12sml_pcdata_s @ 37 NONAME
-	_ZN13CNSmlCmdsBase9DoStatusLEP12sml_status_s @ 38 NONAME
-	_ZN13CNSmlCmdsBase9MoreDataLEPK6HBufC8PK10sml_item_sPK12sml_pcdata_sRP8CBufBase @ 39 NONAME
-	_ZN13CNSmlCmdsBaseC2Ev @ 40 NONAME
-	_ZN13CNSmlCmdsBaseD0Ev @ 41 NONAME
-	_ZN13CNSmlCmdsBaseD1Ev @ 42 NONAME
-	_ZN13CNSmlCmdsBaseD2Ev @ 43 NONAME
-	_ZN14CNSmlAgentBase10ConstructLEv @ 44 NONAME
-	_ZN14CNSmlAgentBase13SendingStateLEv @ 45 NONAME
-	_ZN14CNSmlAgentBase14smlAddCmdFuncLEP13sml_generic_s @ 46 NONAME
-	_ZN14CNSmlAgentBase14smlMapCmdFuncLEP9sml_map_s @ 47 NONAME
-	_ZN14CNSmlAgentBase15BeginningStateLEv @ 48 NONAME
-	_ZN14CNSmlAgentBase15DoOutsideCancelEv @ 49 NONAME
-	_ZN14CNSmlAgentBase15ReceivingStateLEv @ 50 NONAME
-	_ZN14CNSmlAgentBase15StatusReferenceEv @ 51 NONAME
-	_ZN14CNSmlAgentBase15smlCopyCmdFuncLEP13sml_generic_s @ 52 NONAME
-	_ZN14CNSmlAgentBase15smlExecCmdFuncLEP10sml_exec_s @ 53 NONAME
-	_ZN14CNSmlAgentBase15smlMoveCmdFuncLEP13sml_generic_s @ 54 NONAME
-	_ZN14CNSmlAgentBase17FreeBaseResourcesEv @ 55 NONAME
-	_ZN14CNSmlAgentBase17ResultAlertStateLEv @ 56 NONAME
-	_ZN14CNSmlAgentBase17smlDeleteCmdFuncLEP13sml_generic_s @ 57 NONAME
-	_ZN14CNSmlAgentBase17smlSearchCmdFuncLEP12sml_search_s @ 58 NONAME
-	_ZN14CNSmlAgentBase18smlReplaceCmdFuncLEP13sml_generic_s @ 59 NONAME
-	_ZN14CNSmlAgentBase20SetOffCallbackCalledEv @ 60 NONAME
-	_ZN14CNSmlAgentBase21ClientAlertNextStateLEv @ 61 NONAME
-	_ZN14CNSmlAgentBase21ServerAlertNextStateLEv @ 62 NONAME
-	_ZN14CNSmlAgentBase22DataUpdateStatusStateLEv @ 63 NONAME
-	_ZN14CNSmlAgentBase23ServerModAlertCmdStateLEP11sml_alert_s @ 64 NONAME
-	_ZN14CNSmlAgentBase24ServerModStatusCmdStateLEP12sml_status_s @ 65 NONAME
-	_ZN14CNSmlAgentBase24SetEndOfDataAlertRequestEv @ 66 NONAME
-	_ZN14CNSmlAgentBase25ServerModEndMessageStateLEi @ 67 NONAME
-	_ZN14CNSmlAgentBase26AuthenticationRequirementLERK23CNSmlResponseControlleri @ 68 NONAME
-	_ZN14CNSmlAgentBase26ClientInitialisationStateLEv @ 69 NONAME
-	_ZN14CNSmlAgentBase26InitAskingDeviceInfoStateLEv @ 70 NONAME
-	_ZN14CNSmlAgentBase27ServerModStartMessageStateLEP14sml_sync_hdr_s @ 71 NONAME
-	_ZN14CNSmlAgentBase28CheckStatusCodesAreReceivedLEi @ 72 NONAME
-	_ZN14CNSmlAgentBase29InitStartingMessageStateBaseLEv @ 73 NONAME
-	_ZN14CNSmlAgentBase29ServerAlertNextAlertCmdStateLEP11sml_alert_s @ 74 NONAME
-	_ZN14CNSmlAgentBase30ClientAlertNextMakingMapStateLEv @ 75 NONAME
-	_ZN14CNSmlAgentBase30ServerAlertNextStatusCmdStateLEP12sml_status_s @ 76 NONAME
-	_ZN14CNSmlAgentBase31DataUpdateStatusMakingMapStateLEv @ 77 NONAME
-	_ZN14CNSmlAgentBase31ServerAlertNextEndMessageStateLEi @ 78 NONAME
-	_ZN14CNSmlAgentBase33ServerAlertNextStartMessageStateLEP14sml_sync_hdr_s @ 79 NONAME
-	_ZN14CNSmlAgentBase35DataUpdateStatusMakingResultsStateLEv @ 80 NONAME
-	_ZN14CNSmlAgentBase41DataUpdateStatusStartingMessageStateBaseLEv @ 81 NONAME
-	_ZN14CNSmlAgentBase4RunLEv @ 82 NONAME
-	_ZN14CNSmlAgentBase7SyncLogEv @ 83 NONAME
-	_ZN14CNSmlAgentBase8DoCancelEv @ 84 NONAME
-	_ZN14CNSmlAgentBaseC2Ev @ 85 NONAME
-	_ZN14CNSmlAgentBaseD0Ev @ 86 NONAME
-	_ZN14CNSmlAgentBaseD1Ev @ 87 NONAME
-	_ZN14CNSmlAgentBaseD2Ev @ 88 NONAME
-	_ZN14CNSmlPhoneInfo10SwVersionLEv @ 89 NONAME
-	_ZN14CNSmlPhoneInfo4NewLEv @ 90 NONAME
-	_ZN14CNSmlPhoneInfo5NewLCEv @ 91 NONAME
-	_ZN20CNSmlStatusContainer10SetCmdRefLEiPK12sml_pcdata_s @ 92 NONAME
-	_ZN20CNSmlStatusContainer12AddItemDataLEiPK12sml_pcdata_s @ 93 NONAME
-	_ZN20CNSmlStatusContainer13AddSourceRefLEiPK12sml_source_s @ 94 NONAME
-	_ZN20CNSmlStatusContainer13AddTargetRefLEiPK12sml_target_s @ 95 NONAME
-	_ZN20CNSmlStatusContainer13SetNoResponseEii @ 96 NONAME
-	_ZN20CNSmlStatusContainer14SetStatusCodeLEiii @ 97 NONAME
-	_ZN20CNSmlStatusContainer17NextStatusElementERP12sml_status_si @ 98 NONAME
-	_ZN20CNSmlStatusContainer20SetPerformedInAtomicEi @ 99 NONAME
-	_ZN20CNSmlStatusContainer21SetAtomicOrSequenceIdEii @ 100 NONAME
-	_ZN20CNSmlStatusContainer23CreateNewStatusElementLEv @ 101 NONAME
-	_ZN20CNSmlStatusContainer23SetStatusCodesInAtomicLEiii @ 102 NONAME
-	_ZN20CNSmlStatusContainer35SetStatusCodeToAtomicOrSequenceCmdLEiiRK6TDesC8 @ 103 NONAME
-	_ZN20CNSmlStatusContainer5BeginEv @ 104 NONAME
-	_ZN20CNSmlStatusContainer7SetCmdLEiRK6TDesC8 @ 105 NONAME
-	_ZN20NSmlUnicodeConverter14HBufC8InUTF8LCERK7TDesC16RP6HBufC8 @ 106 NONAME
-	_ZN20NSmlUnicodeConverter17HBufC16InUnicodeLERK6TDesC8RP7HBufC16 @ 107 NONAME
-	_ZN20NSmlUnicodeConverter18HBufC16InUnicodeLCERK6TDesC8RP7HBufC16 @ 108 NONAME
-	_ZN21CNSmlResultsContainer11SetStatusIDEii @ 109 NONAME
-	_ZN21CNSmlResultsContainer13RemoveWrittenEi @ 110 NONAME
-	_ZN21CNSmlResultsContainer17CreateNewResultsLERK6TDesC8S2_PK12sml_target_sPK12sml_source_s @ 111 NONAME
-	_ZN21CNSmlResultsContainer18NextResultsElementERP13sml_results_s @ 112 NONAME
-	_ZN21CNSmlResultsContainer5BeginEv @ 113 NONAME
-	_ZN21CNSmlResultsContainer8AddItemLEiRK8CBufBaseRK6TDesC8S5_ @ 114 NONAME
-	_ZN21CNSmlResultsContainer9SetCmdIDLEiPK12sml_pcdata_s @ 115 NONAME
-	_ZN23CNSmlResponseController11SetAppIndexEii @ 116 NONAME
-	_ZN23CNSmlResponseController11SetMoreDataEi @ 117 NONAME
-	_ZN23CNSmlResponseController17SetResponseDetailEiNS_15TResponseDetailE @ 118 NONAME
-	_ZN23CNSmlResponseController6ResetLEv @ 119 NONAME
-	_ZN23CNSmlResponseController8SetLUIDLEiRK6TDesC8 @ 120 NONAME
-	_ZN8CNSmlURI12SetDatabaseLERK6TDesC8i @ 121 NONAME
-	_ZN8CNSmlURI12SetDatabaseLERK7TDesC16i @ 122 NONAME
-	_ZN8CNSmlURI12SetHostNameLERK6TDesC8i @ 123 NONAME
-	_ZN8CNSmlURI12SetHostNameLERK7TDesC16i @ 124 NONAME
-	_ZN8CNSmlURI16DatabaseMatchesLERK7TDesC16 @ 125 NONAME
-	_ZN8CNSmlURI17HostNameWithPortLEi @ 126 NONAME
-	_ZN8CNSmlURI21HostNameInUTF8AllocLCEv @ 127 NONAME
-	_ZN8CNSmlURI21SyncMLDatabaseAllocLCEv @ 128 NONAME
-	_ZN8CNSmlURI29DataBaseWithoutRelativePrefixEv @ 129 NONAME
-	_ZN8CNSmlURI4NewLERK6TDesC8i @ 130 NONAME
-	_ZN8CNSmlURI4NewLERK7TDesC16i @ 131 NONAME
-	_ZN8CNSmlURI4NewLEv @ 132 NONAME
-	_ZN8CNSmlURI5NewLCERK6TDesC8i @ 133 NONAME
-	_ZN8CNSmlURI5NewLCERK7TDesC16i @ 134 NONAME
-	_ZN8CNSmlURI5NewLCEv @ 135 NONAME
-	_ZN8CNSmlURI7SetPortEi @ 136 NONAME
-	_ZN8CNSmlURI8DatabaseEv @ 137 NONAME
-	_ZN8CNSmlURI8HostNameEv @ 138 NONAME
-	_ZN8CNSmlURI8IsEqualLERKS_i @ 139 NONAME
-	_ZN8CNSmlURIaSERKS_ @ 140 NONAME
-	_ZN9CNSmlAuth12SetSyncAgentEP14CNSmlAgentBase @ 141 NONAME
-	_ZN9CNSmlAuth14SetCredentialLERK6TDesC8 @ 142 NONAME
-	_ZN9CNSmlAuth16SetAuthRequiredLEv @ 143 NONAME
-	_ZN9CNSmlAuth4NewLEv @ 144 NONAME
-	_ZNK13CNSmlCmdsBase10BusyStatusEv @ 145 NONAME
-	_ZNK13CNSmlCmdsBase10DoAnchorsLER19sml_metinf_metinf_sPK6TDesC8S4_ @ 146 NONAME
-	_ZNK13CNSmlCmdsBase10DoMetInfLCERP19sml_metinf_metinf_s @ 147 NONAME
-	_ZNK13CNSmlCmdsBase10MetaTypeLCEPK12sml_pcdata_s @ 148 NONAME
-	_ZNK13CNSmlCmdsBase10PcdataNewLERP12sml_pcdata_sRK6TDesC8 @ 149 NONAME
-	_ZNK13CNSmlCmdsBase10ServerAuthEv @ 150 NONAME
-	_ZNK13CNSmlCmdsBase13DoMaxObjSizeLER19sml_metinf_metinf_si @ 151 NONAME
-	_ZNK13CNSmlCmdsBase15StatusContainerEv @ 152 NONAME
-	_ZNK13CNSmlCmdsBase16MetaTypeInUtf8LCEPK12sml_pcdata_s @ 153 NONAME
-	_ZNK13CNSmlCmdsBase16ResultsContainerEv @ 154 NONAME
-	_ZNK13CNSmlCmdsBase16ServerMaxObjSizeEPK12sml_pcdata_s @ 155 NONAME
-	_ZNK13CNSmlCmdsBase16ServerObjectSizeEPK12sml_pcdata_s @ 156 NONAME
-	_ZNK13CNSmlCmdsBase17PCDATAToUnicodeLCERK12sml_pcdata_sRP7HBufC16 @ 157 NONAME
-	_ZNK13CNSmlCmdsBase17SourceIsUnderItemEPK15sml_item_list_s @ 158 NONAME
-	_ZNK13CNSmlCmdsBase17TargetIsUnderItemEPK15sml_item_list_s @ 159 NONAME
-	_ZNK13CNSmlCmdsBase18MetaFormatInUtf8LCEPK12sml_pcdata_s @ 160 NONAME
-	_ZNK13CNSmlCmdsBase18ResponseControllerEv @ 161 NONAME
-	_ZNK13CNSmlCmdsBase19EndOfServerMessageLEv @ 162 NONAME
-	_ZNK13CNSmlCmdsBase21TrimRightSpaceAndNullER5TDes8 @ 163 NONAME
-	_ZNK13CNSmlCmdsBase21WriteMappingInfoToDbLEv @ 164 NONAME
-	_ZNK13CNSmlCmdsBase23WaitingLargeObjectChunkEv @ 165 NONAME
-	_ZNK13CNSmlCmdsBase7DoMetaLERP12sml_pcdata_sPK19sml_metinf_metinf_s @ 166 NONAME
-	_ZNK13CNSmlCmdsBase7RespURIEv @ 167 NONAME
-	_ZNK13CNSmlCmdsBase9AlertCodeEP11sml_alert_s @ 168 NONAME
-	_ZNK13CNSmlCmdsBase9DoSourceLERP12sml_source_sRK6TDesC8 @ 169 NONAME
-	_ZNK13CNSmlCmdsBase9DoSourceLERP12sml_source_sRK7TDesC16 @ 170 NONAME
-	_ZNK13CNSmlCmdsBase9DoSourceLERP12sml_source_sRK7TDesC16S5_ @ 171 NONAME
-	_ZNK13CNSmlCmdsBase9DoTargetLERP12sml_target_sRK7TDesC16 @ 172 NONAME
-	_ZNK13CNSmlCmdsBase9DoTargetLERP12sml_target_sRK7TDesC16S5_ @ 173 NONAME
-	_ZNK13CNSmlCmdsBase9IsFlagSetERKjS1_ @ 174 NONAME
-	_ZNK14CNSmlAgentBase12SaveIfNonceLERK23CNSmlResponseControlleri @ 175 NONAME
-	_ZNK14CNSmlAgentBase14CallbackCalledEv @ 176 NONAME
-	_ZNK14CNSmlAgentBase14ServerPasswordEv @ 177 NONAME
-	_ZNK14CNSmlAgentBase14ServerUserNameEv @ 178 NONAME
-	_ZNK14CNSmlAgentBase15SetServerNonceLERK7TDesC16 @ 179 NONAME
-	_ZNK14CNSmlAgentBase17ServerNonceAllocLEv @ 180 NONAME
-	_ZNK14CNSmlAgentBase9ProfileIdEv @ 181 NONAME
-	_ZNK14CNSmlPhoneInfo10PhoneDataLENS_12TPhoneIdTypeER6TDes16 @ 182 NONAME
-	_ZNK20CNSmlStatusContainer11LastEntryIDEv @ 183 NONAME
-	_ZNK21CNSmlResultsContainer10AnyResultsEv @ 184 NONAME
-	_ZNK21CNSmlResultsContainer14CurrentEntryIDEv @ 185 NONAME
-	_ZNK21CNSmlResultsContainer8StatusIDEi @ 186 NONAME
-	_ZNK23CNSmlResponseController10StatusCodeEi @ 187 NONAME
-	_ZNK23CNSmlResponseController14ResponseDetailEi @ 188 NONAME
-	_ZNK23CNSmlResponseController3CmdEi @ 189 NONAME
-	_ZNK23CNSmlResponseController4LUIDEi @ 190 NONAME
-	_ZNK23CNSmlResponseController7EntryIDEii @ 191 NONAME
-	_ZNK23CNSmlResponseController8AppIndexEi @ 192 NONAME
-	_ZNK23CNSmlResponseController8ChalTypeEi @ 193 NONAME
-	_ZNK23CNSmlResponseController8MoreDataEi @ 194 NONAME
-	_ZNK9CNSmlAuth10ChallengedEv @ 195 NONAME
-	_ZTI10TNSmlError @ 196 NONAME ; #<TI>#
-	_ZTI13CNSmlCmdsBase @ 197 NONAME ; #<TI>#
-	_ZTI14CNSmlAgentBase @ 198 NONAME ; #<TI>#
-	_ZTI14CNSmlPhoneInfo @ 199 NONAME ; #<TI>#
-	_ZTI20CNSmlStatusContainer @ 200 NONAME ; #<TI>#
-	_ZTI21CNSmlResultsContainer @ 201 NONAME ; #<TI>#
-	_ZTI23CNSmlResponseController @ 202 NONAME ; #<TI>#
-	_ZTI8CNSmlURI @ 203 NONAME ; #<TI>#
-	_ZTI9CNSmlAuth @ 204 NONAME ; #<TI>#
-	_ZTV10TNSmlError @ 205 NONAME ; #<VT>#
-	_ZTV13CNSmlCmdsBase @ 206 NONAME ; #<VT>#
-	_ZTV14CNSmlAgentBase @ 207 NONAME ; #<VT>#
-	_ZTV14CNSmlPhoneInfo @ 208 NONAME ; #<VT>#
-	_ZTV20CNSmlStatusContainer @ 209 NONAME ; #<VT>#
-	_ZTV21CNSmlResultsContainer @ 210 NONAME ; #<VT>#
-	_ZTV23CNSmlResponseController @ 211 NONAME ; #<VT>#
-	_ZTV8CNSmlURI @ 212 NONAME ; #<VT>#
-	_ZTV9CNSmlAuth @ 213 NONAME ; #<VT>#
-	_ZThn28_N14CNSmlAgentBase14smlAddCmdFuncLEP13sml_generic_s @ 214 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase14smlMapCmdFuncLEP9sml_map_s @ 215 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase15smlCopyCmdFuncLEP13sml_generic_s @ 216 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase15smlExecCmdFuncLEP10sml_exec_s @ 217 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase15smlMoveCmdFuncLEP13sml_generic_s @ 218 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase17smlDeleteCmdFuncLEP13sml_generic_s @ 219 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase17smlSearchCmdFuncLEP12sml_search_s @ 220 NONAME ; #<thunk>#
-	_ZThn28_N14CNSmlAgentBase18smlReplaceCmdFuncLEP13sml_generic_s @ 221 NONAME ; #<thunk>#
-	_ZN14CNSmlAgentBase18LaunchAutoRestartLEi @ 222 NONAME
-	_ZN14CNSmlAgentBase18CheckAPBearerTypeLEm @ 223 NONAME
-	_ZN13CNSmlCmdsBase15DoGenericAlertLERK6TDesC8RK6RArrayI16CNSmlDMAlertItemE @ 224 NONAME
-	_ZNK13CNSmlCmdsBase9DoTargetLERP12sml_target_sRK6TDesC8 @ 225 NONAME
+	_ZN13CNSmlCmdsBase15DoGenericAlertLERK6TDesC8RK6RArrayI16CNSmlDMAlertItemE @ 13 NONAME
+	_ZN13CNSmlCmdsBase15DoGenericAlertLERK6TDesC8S2_S2_iS2_ @ 14 NONAME
+	_ZN13CNSmlCmdsBase15ProcessCopyCmdLEP13sml_generic_s @ 15 NONAME
+	_ZN13CNSmlCmdsBase15ProcessExecCmdLEP10sml_exec_s @ 16 NONAME
+	_ZN13CNSmlCmdsBase15ProcessSyncHdrLEP14sml_sync_hdr_s @ 17 NONAME
+	_ZN13CNSmlCmdsBase17ProcessSearchCmdLEP12sml_search_s @ 18 NONAME
+	_ZN13CNSmlCmdsBase17ProcessStatusCmdLEP12sml_status_s @ 19 NONAME
+	_ZN13CNSmlCmdsBase18MarkGenAlertsSentLERK6TDesC8 @ 20 NONAME
+	_ZN13CNSmlCmdsBase18MarkGenAlertsSentLEv @ 21 NONAME
+	_ZN13CNSmlCmdsBase19DoGenericUserAlertLEi @ 22 NONAME
+	_ZN13CNSmlCmdsBase20CloseIDMappingTableLEv @ 23 NONAME
+	_ZN13CNSmlCmdsBase20FetchIDMappingTableLEi @ 24 NONAME
+	_ZN13CNSmlCmdsBase20ProcessReceivedDataLEv @ 25 NONAME
+	_ZN13CNSmlCmdsBase20StatusDataToCommandLERK6TDesC8PK12sml_pcdata_sjPK10sml_item_sN10TNSmlError21TNSmlSyncMLStatusCodeEPS1_ @ 26 NONAME
+	_ZN13CNSmlCmdsBase21BufferAreaForParsingLEv @ 27 NONAME
+	_ZN13CNSmlCmdsBase21DeleteIDMappingTableLERK7TDesC16S2_ @ 28 NONAME
+	_ZN13CNSmlCmdsBase22ResetGenericUserAlertLEv @ 29 NONAME
+	_ZN13CNSmlCmdsBase22ResetLargeObjectBufferEv @ 30 NONAME
+	_ZN13CNSmlCmdsBase23SetMaximumWorkspaceSizeEi @ 31 NONAME
+	_ZN13CNSmlCmdsBase23StatusDataToGetCommandLEPK13sml_get_put_sPK10sml_item_sN10TNSmlError21TNSmlSyncMLStatusCodeEPK6TDesC8 @ 32 NONAME
+	_ZN13CNSmlCmdsBase26CreateAndInitResponseItemLERK6TDesC8 @ 33 NONAME
+	_ZN13CNSmlCmdsBase26DisconnectFromOtherServersEv @ 34 NONAME
+	_ZN13CNSmlCmdsBase26SubtractConsumedFromPcDataERP10sml_item_si @ 35 NONAME
+	_ZN13CNSmlCmdsBase27StatusDataToGenericCommandLERK6TDesC8PK13sml_generic_sPK10sml_item_sN10TNSmlError21TNSmlSyncMLStatusCodeEPS1_ @ 36 NONAME
+	_ZN13CNSmlCmdsBase27StatusToUnsupportedCommandLEiRK6TDesC8PK12sml_pcdata_sj @ 37 NONAME
+	_ZN13CNSmlCmdsBase8DoCmdIdLERP12sml_pcdata_s @ 38 NONAME
+	_ZN13CNSmlCmdsBase9DoStatusLEP12sml_status_s @ 39 NONAME
+	_ZN13CNSmlCmdsBase9MoreDataLEPK6HBufC8PK10sml_item_sPK12sml_pcdata_sRP8CBufBase @ 40 NONAME
+	_ZN13CNSmlCmdsBaseC2Ev @ 41 NONAME
+	_ZN13CNSmlCmdsBaseD0Ev @ 42 NONAME
+	_ZN13CNSmlCmdsBaseD1Ev @ 43 NONAME
+	_ZN13CNSmlCmdsBaseD2Ev @ 44 NONAME
+	_ZN14CNSmlAgentBase10ConstructLEv @ 45 NONAME
+	_ZN14CNSmlAgentBase13SendingStateLEv @ 46 NONAME
+	_ZN14CNSmlAgentBase14smlAddCmdFuncLEP13sml_generic_s @ 47 NONAME
+	_ZN14CNSmlAgentBase14smlMapCmdFuncLEP9sml_map_s @ 48 NONAME
+	_ZN14CNSmlAgentBase15BeginningStateLEv @ 49 NONAME
+	_ZN14CNSmlAgentBase15DoOutsideCancelEv @ 50 NONAME
+	_ZN14CNSmlAgentBase15ReceivingStateLEv @ 51 NONAME
+	_ZN14CNSmlAgentBase15StatusReferenceEv @ 52 NONAME
+	_ZN14CNSmlAgentBase15smlCopyCmdFuncLEP13sml_generic_s @ 53 NONAME
+	_ZN14CNSmlAgentBase15smlExecCmdFuncLEP10sml_exec_s @ 54 NONAME
+	_ZN14CNSmlAgentBase15smlMoveCmdFuncLEP13sml_generic_s @ 55 NONAME
+	_ZN14CNSmlAgentBase17FreeBaseResourcesEv @ 56 NONAME
+	_ZN14CNSmlAgentBase17ResultAlertStateLEv @ 57 NONAME
+	_ZN14CNSmlAgentBase17smlDeleteCmdFuncLEP13sml_generic_s @ 58 NONAME
+	_ZN14CNSmlAgentBase17smlSearchCmdFuncLEP12sml_search_s @ 59 NONAME
+	_ZN14CNSmlAgentBase18CheckAPBearerTypeLEm @ 60 NONAME
+	_ZN14CNSmlAgentBase18LaunchAutoRestartLEi @ 61 NONAME
+	_ZN14CNSmlAgentBase18smlReplaceCmdFuncLEP13sml_generic_s @ 62 NONAME
+	_ZN14CNSmlAgentBase20SetOffCallbackCalledEv @ 63 NONAME
+	_ZN14CNSmlAgentBase21ClientAlertNextStateLEv @ 64 NONAME
+	_ZN14CNSmlAgentBase21ServerAlertNextStateLEv @ 65 NONAME
+	_ZN14CNSmlAgentBase22DataUpdateStatusStateLEv @ 66 NONAME
+	_ZN14CNSmlAgentBase23ServerModAlertCmdStateLEP11sml_alert_s @ 67 NONAME
+	_ZN14CNSmlAgentBase24ServerModStatusCmdStateLEP12sml_status_s @ 68 NONAME
+	_ZN14CNSmlAgentBase24SetEndOfDataAlertRequestEv @ 69 NONAME
+	_ZN14CNSmlAgentBase25ServerModEndMessageStateLEi @ 70 NONAME
+	_ZN14CNSmlAgentBase26AuthenticationRequirementLERK23CNSmlResponseControlleri @ 71 NONAME
+	_ZN14CNSmlAgentBase26ClientInitialisationStateLEv @ 72 NONAME
+	_ZN14CNSmlAgentBase26InitAskingDeviceInfoStateLEv @ 73 NONAME
+	_ZN14CNSmlAgentBase27ServerModStartMessageStateLEP14sml_sync_hdr_s @ 74 NONAME
+	_ZN14CNSmlAgentBase28CheckStatusCodesAreReceivedLEi @ 75 NONAME
+	_ZN14CNSmlAgentBase29InitStartingMessageStateBaseLEv @ 76 NONAME
+	_ZN14CNSmlAgentBase29ServerAlertNextAlertCmdStateLEP11sml_alert_s @ 77 NONAME
+	_ZN14CNSmlAgentBase30ClientAlertNextMakingMapStateLEv @ 78 NONAME
+	_ZN14CNSmlAgentBase30ServerAlertNextStatusCmdStateLEP12sml_status_s @ 79 NONAME
+	_ZN14CNSmlAgentBase31DataUpdateStatusMakingMapStateLEv @ 80 NONAME
+	_ZN14CNSmlAgentBase31ServerAlertNextEndMessageStateLEi @ 81 NONAME
+	_ZN14CNSmlAgentBase33ServerAlertNextStartMessageStateLEP14sml_sync_hdr_s @ 82 NONAME
+	_ZN14CNSmlAgentBase35DataUpdateStatusMakingResultsStateLEv @ 83 NONAME
+	_ZN14CNSmlAgentBase41DataUpdateStatusStartingMessageStateBaseLEv @ 84 NONAME
+	_ZN14CNSmlAgentBase4RunLEv @ 85 NONAME
+	_ZN14CNSmlAgentBase7SyncLogEv @ 86 NONAME
+	_ZN14CNSmlAgentBase8DoCancelEv @ 87 NONAME
+	_ZN14CNSmlAgentBaseC2Ev @ 88 NONAME
+	_ZN14CNSmlAgentBaseD0Ev @ 89 NONAME
+	_ZN14CNSmlAgentBaseD1Ev @ 90 NONAME
+	_ZN14CNSmlAgentBaseD2Ev @ 91 NONAME
+	_ZN14CNSmlPhoneInfo10SwVersionLEv @ 92 NONAME
+	_ZN14CNSmlPhoneInfo4NewLEv @ 93 NONAME
+	_ZN14CNSmlPhoneInfo5NewLCEv @ 94 NONAME
+	_ZN20CNSmlStatusContainer10SetCmdRefLEiPK12sml_pcdata_s @ 95 NONAME
+	_ZN20CNSmlStatusContainer10StatusItemEi @ 96 NONAME
+	_ZN20CNSmlStatusContainer12AddItemDataLEiPK12sml_pcdata_s @ 97 NONAME
+	_ZN20CNSmlStatusContainer13AddSourceRefLEiPK12sml_source_s @ 98 NONAME
+	_ZN20CNSmlStatusContainer13AddTargetRefLEiPK12sml_target_s @ 99 NONAME
+	_ZN20CNSmlStatusContainer13FillItemDataLERP10sml_item_s @ 100 NONAME
+	_ZN20CNSmlStatusContainer13SetNoResponseEii @ 101 NONAME
+	_ZN20CNSmlStatusContainer14SetStatusCodeLEiii @ 102 NONAME
+	_ZN20CNSmlStatusContainer17NextStatusElementERP12sml_status_si @ 103 NONAME
+	_ZN20CNSmlStatusContainer20SetPerformedInAtomicEi @ 104 NONAME
+	_ZN20CNSmlStatusContainer21SetAtomicOrSequenceIdEii @ 105 NONAME
+	_ZN20CNSmlStatusContainer23CreateNewStatusElementLEv @ 106 NONAME
+	_ZN20CNSmlStatusContainer23SetStatusCodesInAtomicLEiii @ 107 NONAME
+	_ZN20CNSmlStatusContainer35SetStatusCodeToAtomicOrSequenceCmdLEiiRK6TDesC8 @ 108 NONAME
+	_ZN20CNSmlStatusContainer5BeginEv @ 109 NONAME
+	_ZN20CNSmlStatusContainer7SetCmdLEiRK6TDesC8 @ 110 NONAME
+	_ZN20NSmlUnicodeConverter14HBufC8InUTF8LCERK7TDesC16RP6HBufC8 @ 111 NONAME
+	_ZN20NSmlUnicodeConverter17HBufC16InUnicodeLERK6TDesC8RP7HBufC16 @ 112 NONAME
+	_ZN20NSmlUnicodeConverter18HBufC16InUnicodeLCERK6TDesC8RP7HBufC16 @ 113 NONAME
+	_ZN21CNSmlResultsContainer11SetStatusIDEii @ 114 NONAME
+	_ZN21CNSmlResultsContainer13RemoveWrittenEi @ 115 NONAME
+	_ZN21CNSmlResultsContainer17CreateNewResultsLERK6TDesC8S2_PK12sml_target_sPK12sml_source_s @ 116 NONAME
+	_ZN21CNSmlResultsContainer18NextResultsElementERP13sml_results_s @ 117 NONAME
+	_ZN21CNSmlResultsContainer5BeginEv @ 118 NONAME
+	_ZN21CNSmlResultsContainer8AddItemLEiRK8CBufBaseRK6TDesC8S5_ @ 119 NONAME
+	_ZN21CNSmlResultsContainer9SetCmdIDLEiPK12sml_pcdata_s @ 120 NONAME
+	_ZN23CNSmlResponseController11SetAppIndexEii @ 121 NONAME
+	_ZN23CNSmlResponseController11SetMoreDataEi @ 122 NONAME
+	_ZN23CNSmlResponseController17SetResponseDetailEiNS_15TResponseDetailE @ 123 NONAME
+	_ZN23CNSmlResponseController6ResetLEv @ 124 NONAME
+	_ZN23CNSmlResponseController8SetLUIDLEiRK6TDesC8 @ 125 NONAME
+	_ZN8CNSmlURI12SetDatabaseLERK6TDesC8i @ 126 NONAME
+	_ZN8CNSmlURI12SetDatabaseLERK7TDesC16i @ 127 NONAME
+	_ZN8CNSmlURI12SetHostNameLERK6TDesC8i @ 128 NONAME
+	_ZN8CNSmlURI12SetHostNameLERK7TDesC16i @ 129 NONAME
+	_ZN8CNSmlURI16DatabaseMatchesLERK7TDesC16 @ 130 NONAME
+	_ZN8CNSmlURI17HostNameWithPortLEi @ 131 NONAME
+	_ZN8CNSmlURI21HostNameInUTF8AllocLCEv @ 132 NONAME
+	_ZN8CNSmlURI21SyncMLDatabaseAllocLCEv @ 133 NONAME
+	_ZN8CNSmlURI29DataBaseWithoutRelativePrefixEv @ 134 NONAME
+	_ZN8CNSmlURI4NewLERK6TDesC8i @ 135 NONAME
+	_ZN8CNSmlURI4NewLERK7TDesC16i @ 136 NONAME
+	_ZN8CNSmlURI4NewLEv @ 137 NONAME
+	_ZN8CNSmlURI5NewLCERK6TDesC8i @ 138 NONAME
+	_ZN8CNSmlURI5NewLCERK7TDesC16i @ 139 NONAME
+	_ZN8CNSmlURI5NewLCEv @ 140 NONAME
+	_ZN8CNSmlURI7SetPortEi @ 141 NONAME
+	_ZN8CNSmlURI8DatabaseEv @ 142 NONAME
+	_ZN8CNSmlURI8HostNameEv @ 143 NONAME
+	_ZN8CNSmlURI8IsEqualLERKS_i @ 144 NONAME
+	_ZN8CNSmlURIaSERKS_ @ 145 NONAME
+	_ZN9CNSmlAuth12SetSyncAgentEP14CNSmlAgentBase @ 146 NONAME
+	_ZN9CNSmlAuth14SetCredentialLERK6TDesC8 @ 147 NONAME
+	_ZN9CNSmlAuth16SetAuthRequiredLEv @ 148 NONAME
+	_ZN9CNSmlAuth4NewLEv @ 149 NONAME
+	_ZNK13CNSmlCmdsBase10BusyStatusEv @ 150 NONAME
+	_ZNK13CNSmlCmdsBase10DoAnchorsLER19sml_metinf_metinf_sPK6TDesC8S4_ @ 151 NONAME
+	_ZNK13CNSmlCmdsBase10DoMetInfLCERP19sml_metinf_metinf_s @ 152 NONAME
+	_ZNK13CNSmlCmdsBase10MetaTypeLCEPK12sml_pcdata_s @ 153 NONAME
+	_ZNK13CNSmlCmdsBase10PcdataNewLERP12sml_pcdata_sRK6TDesC8 @ 154 NONAME
+	_ZNK13CNSmlCmdsBase10ServerAuthEv @ 155 NONAME
+	_ZNK13CNSmlCmdsBase13DoMaxObjSizeLER19sml_metinf_metinf_si @ 156 NONAME
+	_ZNK13CNSmlCmdsBase15StatusContainerEv @ 157 NONAME
+	_ZNK13CNSmlCmdsBase16MetaTypeInUtf8LCEPK12sml_pcdata_s @ 158 NONAME
+	_ZNK13CNSmlCmdsBase16ResultsContainerEv @ 159 NONAME
+	_ZNK13CNSmlCmdsBase16ServerMaxObjSizeEPK12sml_pcdata_s @ 160 NONAME
+	_ZNK13CNSmlCmdsBase16ServerObjectSizeEPK12sml_pcdata_s @ 161 NONAME
+	_ZNK13CNSmlCmdsBase17PCDATAToUnicodeLCERK12sml_pcdata_sRP7HBufC16 @ 162 NONAME
+	_ZNK13CNSmlCmdsBase17SourceIsUnderItemEPK15sml_item_list_s @ 163 NONAME
+	_ZNK13CNSmlCmdsBase17TargetIsUnderItemEPK15sml_item_list_s @ 164 NONAME
+	_ZNK13CNSmlCmdsBase18MetaFormatInUtf8LCEPK12sml_pcdata_s @ 165 NONAME
+	_ZNK13CNSmlCmdsBase18ResponseControllerEv @ 166 NONAME
+	_ZNK13CNSmlCmdsBase19EndOfServerMessageLEv @ 167 NONAME
+	_ZNK13CNSmlCmdsBase21TrimRightSpaceAndNullER5TDes8 @ 168 NONAME
+	_ZNK13CNSmlCmdsBase21WriteMappingInfoToDbLEv @ 169 NONAME
+	_ZNK13CNSmlCmdsBase23WaitingLargeObjectChunkEv @ 170 NONAME
+	_ZNK13CNSmlCmdsBase7DoMetaLERP12sml_pcdata_sPK19sml_metinf_metinf_s @ 171 NONAME
+	_ZNK13CNSmlCmdsBase7RespURIEv @ 172 NONAME
+	_ZNK13CNSmlCmdsBase9AlertCodeEP11sml_alert_s @ 173 NONAME
+	_ZNK13CNSmlCmdsBase9DoSourceLERP12sml_source_sRK6TDesC8 @ 174 NONAME
+	_ZNK13CNSmlCmdsBase9DoSourceLERP12sml_source_sRK7TDesC16 @ 175 NONAME
+	_ZNK13CNSmlCmdsBase9DoSourceLERP12sml_source_sRK7TDesC16S5_ @ 176 NONAME
+	_ZNK13CNSmlCmdsBase9DoTargetLERP12sml_target_sRK6TDesC8 @ 177 NONAME
+	_ZNK13CNSmlCmdsBase9DoTargetLERP12sml_target_sRK7TDesC16 @ 178 NONAME
+	_ZNK13CNSmlCmdsBase9DoTargetLERP12sml_target_sRK7TDesC16S5_ @ 179 NONAME
+	_ZNK13CNSmlCmdsBase9IsFlagSetERKjS1_ @ 180 NONAME
+	_ZNK14CNSmlAgentBase12SaveIfNonceLERK23CNSmlResponseControlleri @ 181 NONAME
+	_ZNK14CNSmlAgentBase14CallbackCalledEv @ 182 NONAME
+	_ZNK14CNSmlAgentBase14ServerPasswordEv @ 183 NONAME
+	_ZNK14CNSmlAgentBase14ServerUserNameEv @ 184 NONAME
+	_ZNK14CNSmlAgentBase15SetServerNonceLERK7TDesC16 @ 185 NONAME
+	_ZNK14CNSmlAgentBase17ServerNonceAllocLEv @ 186 NONAME
+	_ZNK14CNSmlAgentBase9ProfileIdEv @ 187 NONAME
+	_ZNK14CNSmlPhoneInfo10PhoneDataLENS_12TPhoneIdTypeER6TDes16 @ 188 NONAME
+	_ZNK20CNSmlStatusContainer11LastEntryIDEv @ 189 NONAME
+	_ZNK21CNSmlResultsContainer10AnyResultsEv @ 190 NONAME
+	_ZNK21CNSmlResultsContainer14CurrentEntryIDEv @ 191 NONAME
+	_ZNK21CNSmlResultsContainer8StatusIDEi @ 192 NONAME
+	_ZNK23CNSmlResponseController10StatusCodeEi @ 193 NONAME
+	_ZNK23CNSmlResponseController14ResponseDetailEi @ 194 NONAME
+	_ZNK23CNSmlResponseController3CmdEi @ 195 NONAME
+	_ZNK23CNSmlResponseController4LUIDEi @ 196 NONAME
+	_ZNK23CNSmlResponseController7EntryIDEii @ 197 NONAME
+	_ZNK23CNSmlResponseController8AppIndexEi @ 198 NONAME
+	_ZNK23CNSmlResponseController8ChalTypeEi @ 199 NONAME
+	_ZNK23CNSmlResponseController8MoreDataEi @ 200 NONAME
+	_ZNK9CNSmlAuth10ChallengedEv @ 201 NONAME
+	_ZTI10TNSmlError @ 202 NONAME
+	_ZTI13CNSmlCmdsBase @ 203 NONAME
+	_ZTI14CNSmlAgentBase @ 204 NONAME
+	_ZTI14CNSmlPhoneInfo @ 205 NONAME
+	_ZTI20CNSmlStatusContainer @ 206 NONAME
+	_ZTI21CNSmlResultsContainer @ 207 NONAME
+	_ZTI23CNSmlResponseController @ 208 NONAME
+	_ZTI8CNSmlURI @ 209 NONAME
+	_ZTI9CNSmlAuth @ 210 NONAME
+	_ZTV10TNSmlError @ 211 NONAME
+	_ZTV13CNSmlCmdsBase @ 212 NONAME
+	_ZTV14CNSmlAgentBase @ 213 NONAME
+	_ZTV14CNSmlPhoneInfo @ 214 NONAME
+	_ZTV20CNSmlStatusContainer @ 215 NONAME
+	_ZTV21CNSmlResultsContainer @ 216 NONAME
+	_ZTV23CNSmlResponseController @ 217 NONAME
+	_ZTV8CNSmlURI @ 218 NONAME
+	_ZTV9CNSmlAuth @ 219 NONAME
+	_ZThn28_N14CNSmlAgentBase14smlAddCmdFuncLEP13sml_generic_s @ 220 NONAME
+	_ZThn28_N14CNSmlAgentBase14smlMapCmdFuncLEP9sml_map_s @ 221 NONAME
+	_ZThn28_N14CNSmlAgentBase15smlCopyCmdFuncLEP13sml_generic_s @ 222 NONAME
+	_ZThn28_N14CNSmlAgentBase15smlExecCmdFuncLEP10sml_exec_s @ 223 NONAME
+	_ZThn28_N14CNSmlAgentBase15smlMoveCmdFuncLEP13sml_generic_s @ 224 NONAME
+	_ZThn28_N14CNSmlAgentBase17smlDeleteCmdFuncLEP13sml_generic_s @ 225 NONAME
+	_ZThn28_N14CNSmlAgentBase17smlSearchCmdFuncLEP12sml_search_s @ 226 NONAME
+	_ZThn28_N14CNSmlAgentBase18smlReplaceCmdFuncLEP13sml_generic_s @ 227 NONAME
 
--- a/syncmlfw/common/syncagent/inc/NSmlStatusContainer.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/common/syncagent/inc/NSmlStatusContainer.h	Thu Aug 19 10:44:50 2010 +0300
@@ -70,6 +70,11 @@
 	//  
 	TBool AnyOtherThanOkSyncHdrStatus() const;
 	
+	// Populates the Item structure
+	IMPORT_C void FillItemDataL( SmlItem_t*& aItem );
+	// Retrieve the Status element bearing the ID provided
+	IMPORT_C SmlStatus_t* StatusItem( TInt aStatusID );
+	
 	private:
 	void ConstructL( TBool aClearText);
 	CNSmlStatusContainer();
--- a/syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/common/syncagent/src/nsmlstatuscontainer.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -25,6 +25,9 @@
 #include "nsmlerror.h"
 #include "smlmetinfdtd.h"
 
+// CONSTANTS
+_LIT8(KDbPersonal, "100000" );
+
 // ---------------------------------------------------------
 // CNSmlStatusContainer::CNSmlStatusContainer
 // Constructor, nothing special in here.
@@ -220,32 +223,28 @@
 			{					
 				TPtrC8 sourcePath( (TUint8*) (*iStatusArray)[aEntryID-1].status->targetRefList->targetRef->content, (*iStatusArray)[aEntryID-1].status->targetRefList->targetRef->length );
 			
-				SmlSource_t* source = new( ELeave ) SmlSource_t; 
-    		source->locURI = new( ELeave ) SmlPcdata_t;
-	   		source->locURI->SetDataL( sourcePath );
-    		source->locURI->contentType = SML_PCDATA_OPAQUE;   
-    		source->locURI->extension = SML_EXT_UNDEFINED;
-    		source->locName = NULL;
+				(*iStatusArray)[aEntryID-1].status->itemList = new ( ELeave ) SmlItemList_t;
+				(*iStatusArray)[aEntryID-1].status->itemList->item = new( ELeave ) SmlItem_t;
+			
+				(*iStatusArray)[aEntryID-1].status->itemList->item->source = new( ELeave ) SmlSource_t; 
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI = new( ELeave ) SmlPcdata_t;
+	   		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI->SetDataL( sourcePath );
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI->contentType = SML_PCDATA_OPAQUE;   
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locURI->extension = SML_EXT_UNDEFINED;
+    		(*iStatusArray)[aEntryID-1].status->itemList->item->source->locName = NULL;
     		
-    		SmlTarget_t* target = new( ELeave ) SmlTarget_t; 
-    		target->locURI = new( ELeave ) SmlPcdata_t;
-	   		target->locURI->SetDataL( targetPath );
-    		target->locURI->contentType = SML_PCDATA_OPAQUE;   
-    		target->locURI->extension = SML_EXT_UNDEFINED;
-    		target->locName = NULL;
-    		AddSourceRefL( aEntryID, source );
-    		
-    		SmlTargetRefList_t** targetRefList;
-				targetRefList = &(*iStatusArray)[aEntryID-1].status->targetRefList;
-				while( *targetRefList )
-				{
-					if ((*targetRefList)->next == NULL )
-						 break;
-					targetRefList = &(*targetRefList)->next;
-				} 
-				*targetRefList = new( ELeave ) SmlTargetRefList_t;
-				CreateTargetRefL( target, (*targetRefList)->targetRef );
-    		
+    		_LIT8( KNSmlNull,	"null" );
+    		if(targetPath.Compare( KNSmlNull )!= 0)
+    		{
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target = new( ELeave ) SmlTarget_t; 
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI = new( ELeave ) SmlPcdata_t;
+	   			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI->SetDataL( targetPath );
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI->contentType = SML_PCDATA_OPAQUE;   
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locURI->extension = SML_EXT_UNDEFINED;
+    			(*iStatusArray)[aEntryID-1].status->itemList->item->target->locName = NULL;
+    		}
+ 				(*iStatusArray)[aEntryID-1].status->targetRefList = NULL;
+
  				_LIT8(KNullString, "");
     		result = cenrep->Set( KNSmlDMSCOMOTargetRef, KNullString ); 
     	}
@@ -254,6 +253,8 @@
 		}
 	}
 	
+	 // TargertUri Fix Ends
+	 
 	CleanupStack::PopAndDestroy(); //statusCode
 	}
 	}
@@ -536,6 +537,44 @@
 	return statusPresents;
 	}
 // ---------------------------------------------------------
+// CNSmlStatusContainer::FillItemDataL()
+// Populates the Item structure
+// ---------------------------------------------------------
+EXPORT_C void CNSmlStatusContainer::FillItemDataL( SmlItem_t*& aItem )
+    {
+    //Source
+    aItem->source = new( ELeave ) SmlSource_t;
+    SmlPcdata_t* srcdata = new( ELeave ) SmlPcdata_t;
+    srcdata->SetDataL( KDbPersonal );
+    srcdata->contentType = SML_PCDATA_OPAQUE;   
+    srcdata->extension = SML_EXT_UNDEFINED; 
+    CopyPcdataL( srcdata, aItem->source->locURI );
+    
+    // Source Parent
+    aItem->sourceParent = new( ELeave ) SmlSourceParent_t;
+    SmlPcdata_t* srcprntdata = new( ELeave ) SmlPcdata_t;
+    srcprntdata->SetDataL( _L8("/") );
+    srcprntdata->contentType = SML_PCDATA_OPAQUE;   
+    srcprntdata->extension = SML_EXT_UNDEFINED; 
+    CopyPcdataL( srcprntdata, aItem->sourceParent->locURI );   
+    }
+// ---------------------------------------------------------
+// CNSmlStatusContainer::StatusItem()
+// Retrieve the Status element bearing the ID provided
+// ---------------------------------------------------------
+EXPORT_C SmlStatus_t* CNSmlStatusContainer::StatusItem( TInt aStatusID )
+    {
+    
+    if( ( iStatusArray ) && 
+        ( iStatusArray->Count() <= aStatusID ) )
+        {
+        
+        return (*iStatusArray)[aStatusID-1].status;
+        }
+    
+    return NULL;
+    }
+// ---------------------------------------------------------
 // CNSmlStatusContainer::CreatePcdataL()
 // Creates Pcdata 
 // Created element is not pushed to Cleanup stack
Binary file syncmlfw/conf/datasync.confml has changed
Binary file syncmlfw/conf/datasync_2000CF7E.crml has changed
Binary file syncmlfw/conf/devman.confml has changed
Binary file syncmlfw/conf/devman_101F9A0A.crml has changed
--- a/syncmlfw/dm/adapters/inc/nsmldmimpluids.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/dm/adapters/inc/nsmldmimpluids.h	Thu Aug 19 10:44:50 2010 +0300
@@ -39,4 +39,5 @@
 const TUint KNSmlDMFotaAdapterImplUid = 0x101F9A09;
 const TUint KNSmlDMAMAdapterImplUid = 0x20021336;
 const TUint KNSmlDMConnMOAdapterImplUid = 0x2001FE5F; 
+const TUint KNSmlDMLawMoAdapterImplUid = 0x2002EA23;
 #endif // __CNSMLDMIMPLUIDS_H__
--- a/syncmlfw/dm/settings/src/DMProfileContentHandler.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/dm/settings/src/DMProfileContentHandler.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -22,8 +22,10 @@
 #include <commdb.h>
 #include <nsmldebug.h>
 #include <featmgr.h>
+#include <centralrepository.h>
 #include "DMprofileContentHandler.h"
 #include "nsmldmsettings.h"
+#include "DevManInternalCRKeys.h"
 
 
 #define DES_AS_8_BIT(str) (TPtrC8((TText8*)((str).Ptr()), (str).Size()))
@@ -178,7 +180,8 @@
 	RemoveRSCEntryL();
 	TInt iapId = 0;
 	
-	for ( TInt i = 0; i < iProfileArray->Count(); i++ )
+	TInt count = iProfileArray->Count();
+	for ( TInt i = 0; i < count; i++ )
 	{
 		if(iProfileArray->At(i)->iAccessPoint)
 		{
@@ -210,6 +213,19 @@
 		CleanupStack::PopAndDestroy(); // profile
 							
 	}
+  CRepository* centrep = NULL;
+  TRAPD( err, centrep = CRepository::NewL(KCRUidDeviceManagementInternalKeys));  
+  if (err==KErrNone ) 
+  {
+  	TInt num(-1);
+  	TInt err = centrep->Get( KMaxFactoryDMProfileId , num );
+  	if( num >= 0 )
+  		err = centrep->Set( KMaxFactoryDMProfileId , (count + num ) );
+  	else
+  		err = centrep->Set( KMaxFactoryDMProfileId , count - 1);	
+    delete centrep;
+    centrep = NULL;
+	}
 	_DBG_FILE("CDMProfileContentHandler::SaveProfilesL(): end");
 }
 // -----------------------------------------------------------------------------
--- a/syncmlfw/dm/settings/src/NSmlDMResourceProfiles.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/dm/settings/src/NSmlDMResourceProfiles.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -18,9 +18,11 @@
 
 
 // INCLUDE FILES
+#include <featmgr.h>
+#include <centralrepository.h>
 #include "nsmldmsettings.h"
 #include "NSmlDMResourceProfile.h"
-#include <featmgr.h>
+#include "DevManInternalCRKeys.h"
 const TInt KNSmlDmBluetoothType = 0x101F99F1;
 // ----------------------------------------------------------
 // CNSmlDMResourceProfiles implementation 
@@ -77,7 +79,8 @@
 	{
 	RemoveDuplicateEntry();
 	RemoveObexEntryL();
-	for ( TInt i = 0; i < iProfileArray->Count(); i++ )
+	TInt count = iProfileArray->Count();
+	for ( TInt i = 0; i < count ; i++ )
 		{
 		CNSmlDMProfile* profile = iSettings->CreateProfileL();
 		CleanupStack::PushL( profile );
@@ -85,6 +88,14 @@
 		profile->SaveL();
 		CleanupStack::PopAndDestroy(); // profile
 		}
+    CRepository* centrep = NULL;
+    TRAPD( err, centrep = CRepository::NewL(KCRUidDeviceManagementInternalKeys));  
+    if (err==KErrNone ) 
+    {
+        TInt err = centrep->Set( KMaxFactoryDMProfileId , count-1 );
+        delete centrep;
+        centrep = NULL;
+		}
 	}
 
 // ----------------------------------------------------------
--- a/syncmlfw/dm/syncagent/src/nsmldmcmds.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/dm/syncagent/src/nsmldmcmds.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -656,6 +656,7 @@
 
 	TPtr8 targeturi = HBufC8::NewLC ( (*aItemList[i].iTarget).Length())->Des();
 	targeturi.Append ( *aItemList[i].iTarget);	
+	if(targeturi.Compare(KNullDesC8)!=0)
 	DoTargetL ( itemPtr->item->target, targeturi  );
 	CleanupStack::PopAndDestroy();  // targeturi   
 	
--- a/syncmlfw/dm/treemodule/src/nsmldmddf.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/dm/treemodule/src/nsmldmddf.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -634,7 +634,8 @@
 		// FOTA 
 		// For the FOTA adapter put the correlator to aObject instead of
 		// data.
-		if ( iAdapterId == KNSmlDMFotaAdapterImplUid || iAdapterId == KNSmlDMAMAdapterImplUid)
+		if ( iAdapterId == KNSmlDMFotaAdapterImplUid || iAdapterId == KNSmlDMAMAdapterImplUid
+				|| iAdapterId == KNSmlDMLawMoAdapterImplUid)
 			{
 			iSessionArray[iSessionId-1].ExecuteCommandL(iAdapterId,*luid,
 				aStatusRef,aURI,aCorrelator,aType,aLargeItem);
--- a/syncmlfw/ds/syncagent/src/nsmldsagent.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/ds/syncagent/src/nsmldsagent.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -3104,6 +3104,17 @@
 			}	
 			//RD_SUSPEND_RESUME	
 			break;
+
+		/* Implementation of CMCC PIM v3 begins*/
+		case TNSmlError::ESmlStatusDeviceFull: // 420
+		    if ( FeatureManager::FeatureSupported(KFeatureIdFfTdCmccpimpromptserverfullwhenreceive420statuscodefromserver) )
+		        {
+                // CMCC server full error enabled
+                iDSObserver->OnSyncMLSyncError( MSyncMLProgressObserver::ESmlFatalError, SyncMLError::KErrServerFull, 0, 0, 0);
+                error = ETrue;
+		        }
+			break;
+		/* Implementation of CMCC PIM v3 ends*/
 			
 		default:
 			error = ETrue;
--- a/syncmlfw/ds/syncagent/src/nsmldscmds.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/ds/syncagent/src/nsmldscmds.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -65,6 +65,8 @@
 // CONSTANTS
 _LIT8( KNSmlRoot, "/" );
 static const TInt KMaxLength = 255;
+const TUid KRepositoryId =  { 0x2000CF7E };   
+const TInt KNsmlDsOrphanEvent = 0xB ;
 
 // ============================ MEMBER FUNCTIONS ===============================
 
@@ -3618,7 +3620,9 @@
 						}
 						
 					iItemOpened = EFalse;
-					
+					SmlStatus_t* status = NULL;
+					SmlItemList_t** itemList;
+					CRepository* rep = NULL;
 					switch ( returnCode )
 						{
 						case KErrNone:
@@ -3654,6 +3658,57 @@
 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusUnsupportedMediaTypeOrFormat );
 							break;
 							
+						case KErrPathNotFound:			
+						    // Read the Orphan Event ID from the cenrep
+						    rep = CRepository::NewLC(KRepositoryId);
+                            TRAPD( err, rep->Get(KNsmlDsOrphanEvent, iNewUid) );
+                            DBG_ARGS(_S("read the cenrep %d %d"), err, iNewUid);
+                            User::LeaveIfError(err);
+                            CleanupStack::PopAndDestroy(rep);
+							
+						    _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : Invalid Parent"));
+						    statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusMovedPermanently );
+						    DBG_ARGS(_S("Invalid parent: statusid %d"), statusId);
+						    status = iStatusToServer->StatusItem( statusId );
+						    DBG_ARGS(_S("Invalid parent: status %d"), status);
+						    if( status )
+                                {
+                                SmlItemList_t* newItemList = new( ELeave ) SmlItemList_t;
+                                _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : creating a new item"));
+                                newItemList->item = new( ELeave ) SmlItem_t;
+                                _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : creating a new data"));
+                                iStatusToServer->FillItemDataL( newItemList->item );
+                                _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : updating"));
+                                
+                                itemList = &(status->itemList);
+                                while ( *itemList )
+                                    {
+                                    itemList = &(*itemList)->next;
+                                    }
+                                *itemList = newItemList;
+                                _DBG_FILE(_S8("CNSmlDSCmds::ADD UpdateL : updated"));
+                                }
+						    if ( !iBatchModeOn )
+                                {
+                                iDSContent.IncreaseServerItemsAdded();
+                                clientModifications.iNumAdded = 1;
+                                
+                                if ( !iAtomicModeOn )
+                                    {
+                                    iDSContent.CreateNewMapItemL( iNewUid, aUID, 0 );
+                                    }
+                                else
+                                    {
+                                    iDSContent.CreateNewMapItemL( iNewUid, aUID, iAtomicId );
+                                    }
+                                }
+                            else
+                                {
+                                clientModifications.iNumAdded = 1;
+                                iBatchBuffer->SetStatusEntryId( statusId );
+                                }
+						    break;
+							
 						default:
 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusCommandFailed );
 							break;
@@ -3811,6 +3866,11 @@
 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusUnsupportedMediaTypeOrFormat );
 							break;
 							
+						case KErrPathNotFound:
+						    _DBG_FILE(_S8("CNSmlDSCmds:: REPLACE UpdateL : Invalid Parent"));
+						    statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusMovedPermanently );
+						    break;
+							
 						default:
 							statusId = StatusDataToGenericCommandL( aCmd, aContent, aItem, TNSmlError::ESmlStatusCommandFailed );
 							break;
--- a/syncmlfw/syncmlnotifier/src/SyncMLDlgNotifier.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/syncmlnotifier/src/SyncMLDlgNotifier.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -168,16 +168,6 @@
         {
         User::Leave( KErrInUse );
         }
-    
-    if ( AutoLockOnL() )
-        {
-        // The phone is locked, access denied.
-        // Write results back to caller and complete message.
-        aMessage.Complete( KErrLocked );
-        iNeedToCompleteMessage = EFalse;
-        return;
-        }
-
     iMessage = aMessage;
     iNeedToCompleteMessage = ETrue;
     iReplySlot = aReplySlot;
--- a/syncmlfw/syncmlnotifier/src/SyncMLTimedInputTextQuery.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/syncmlfw/syncmlnotifier/src/SyncMLTimedInputTextQuery.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -153,38 +153,43 @@
 // CSyncMLTimedInputTextQuery::HandleQueryEditorStateEventL
 // -----------------------------------------------------------------------------
 //
-TBool CSyncMLTimedInputTextQuery::HandleQueryEditorStateEventL(CAknQueryControl* aQueryControl, TQueryControlEvent aEventType, TQueryValidationStatus aStatus)
+TBool CSyncMLTimedInputTextQuery::HandleQueryEditorStateEventL( 
+        CAknQueryControl* aQueryControl, TQueryControlEvent aEventType, 
+        TQueryValidationStatus aStatus )
 	{
- 	if ( aQueryControl )
-  {
- 		if( EPhoneLayout == aQueryControl->QueryType() )
- 	 	{
-			if (aEventType == EEmergencyCallAttempted)
-        	{
-        	TryExitL(EEikBidCancel);
-        	}
-    	else
-        	{
-        	
-         	TBuf<KSyncMLMaxDefaultResponseMsgLength> PhoneNo;
-         	aQueryControl->GetText( PhoneNo );
-         	TInt posplus = PhoneNo.LocateReverse('+');
-          	if(posplus==0 || posplus==KErrNotFound )
-           	{
-           	CAknQueryDialog::HandleQueryEditorStateEventL(aQueryControl,aEventType,aStatus);	
-           	}
-          	else
-           	{      
-          	MakeLeftSoftkeyVisible(EFalse);
-           	}
-         	}  
-  	 }
-  }
- 	else //For all other layouts 
- 	 {
- 	CAknQueryDialog::HandleQueryEditorStateEventL(aQueryControl,aEventType,aStatus);	
- 	 }
-	return EFalse;
-	}
+    if (aQueryControl)
+        {
+        if (EPhoneLayout == aQueryControl->QueryType())
+            {
+            if (aEventType == EEmergencyCallAttempted)
+                {
+                TryExitL(EEikBidCancel);
+                }
+            else
+                {
+
+                TBuf<KSyncMLMaxDefaultResponseMsgLength> PhoneNo;
+                aQueryControl->GetText(PhoneNo);
+                TInt posplus = PhoneNo.LocateReverse('+');
+                if (posplus == 0 || posplus == KErrNotFound)
+                    {
+                    CAknQueryDialog::HandleQueryEditorStateEventL(
+                            aQueryControl, aEventType, aStatus);
+                    }
+                else
+                    {
+                    MakeLeftSoftkeyVisible(EFalse);
+                    }
+                }
+            }
+
+        else //For all other layouts 
+            {
+            CAknQueryDialog::HandleQueryEditorStateEventL(aQueryControl,
+                    aEventType, aStatus);
+            }
+        }
+    return EFalse;
+    }
 
 //  End of File  
--- a/terminalsecurity/SCP/SCPClient/data/SCPNotifier.rss	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/data/SCPNotifier.rss	Thu Aug 19 10:44:50 2010 +0300
@@ -109,5 +109,29 @@
     {
     buf = qtn_set_sec_code_setting_query_server;
     }
+    
+RESOURCE TBUF r_scp_lawmo_locked
+    {
+    buf = qtn_device_locked_remotely;
+    }
+    
+RESOURCE DIALOG r_dialog_warning
+{
+    flags = EAknWarningNoteFlags | EEikDialogFlagWait;
+    buttons = R_AVKON_SOFTKEYS_EMPTY;
+    items =
+    {
+    DLG_LINE
+        {
+            type = EAknCtNote;
+            id = EGeneralNote;
+            control = AVKON_NOTE
+            {
+                layout = EGeneralLayout;
+                animation = R_QGN_NOTE_WARNING_ANIM;
+            };
+        }
+    };
+}
 // end of file
 
--- a/terminalsecurity/SCP/SCPClient/group/SCPClient.mmp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/group/SCPClient.mmp	Thu Aug 19 10:44:50 2010 +0300
@@ -66,6 +66,7 @@
 LIBRARY     centralrepository.lib  // CenRep
 LIBRARY					aknnotify.lib
 LIBRARY 		estor.lib
+LIBRARY     apgrfx.lib 
 
 SMPSAFE
 
--- a/terminalsecurity/SCP/SCPClient/inc/SCPQueryDialog.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/inc/SCPQueryDialog.h	Thu Aug 19 10:44:50 2010 +0300
@@ -137,6 +137,7 @@
         TInt iKeyUsed;
         CSCPLockObserver* iDeviceLockStatusObserver;
 		CSCPLockObserver* iCallStatusObserver;
+		TBool iLockedByLawMo;
 	};
 #endif
 
--- a/terminalsecurity/SCP/SCPClient/loc/SCPNotifier.loc	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/loc/SCPNotifier.loc	Thu Aug 19 10:44:50 2010 +0300
@@ -41,6 +41,8 @@
 //l:  popup_info_list_pane_t2/opt1
 //r: 5.2
 #define qtn_set_sec_code_setting_query_server "Lock Code has not been set. Please set the Lock Code."
-
+//d: The text informing user that phone is locked by an Operator server
+//l: popup_query_data_window
+#define qtn_device_locked_remotely "Locked by %U"
 // End of File
 
--- a/terminalsecurity/SCP/SCPClient/src/SCPClient.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/src/SCPClient.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -19,8 +19,10 @@
 
 // INCLUDE FILES
 #include <e32svr.h>
+#include <bautils.h>
 #include <e32math.h>
 #include <e32uid.h>
+#include <barsc.h>
 #include <AknGlobalNote.h>
 #include <aknnotewrappers.h> 
 #include <AknQueryDialog.h>
@@ -39,14 +41,22 @@
 #include <TerminalControl3rdPartyAPI.h>
 #include <SCPServerInterface.h>
 #include <SecUi.rsg>
+#include <scptimestamppluginlang.rsg>
 #include <secui.hrh>
 #include <StringLoader.h>
 #include <bautils.h>
 //#endif // DEVICE_LOCK_ENHANCEMENTS
+#include <DevManInternalCRKeys.h>
 
 #include <featmgr.h>
 #include "SCPDebug.h"
 #include <e32property.h>
+#include <SCPPServerPluginDefs.hrh>
+#include <apgtask.h>
+#include    <e32property.h>
+#include    <PSVariables.h>
+#include    <coreapplicationuisdomainpskeys.h>
+
 /*#ifdef _DEBUG
 #define __SCP_DEBUG
 #endif // _DEBUG
@@ -63,12 +73,13 @@
 
 static const TUint KDefaultMessageSlots = 3;
 static const TInt KSCPConnectRetries( 2 );
-
+const TInt KLockedbyLawmo (30);
 
 //#ifdef __SAP_DEVICE_LOCK_ENHANCEMENTS
 _LIT( KDriveZ, "Z:" );
 _LIT( KSCPResourceFilename, "\\Resource\\SCPNotifier.RSC" );
 _LIT( KSCPSecUIResourceFilename, "\\Resource\\SecUi.RSC" );
+_LIT( KSCPTimestampPluginResFilename, "\\Resource\\SCPTimestampPluginLang.rsc");
 //#endif // __SAP_DEVICE_LOCK_ENHANCEMENTS
 
 // Uid for the application; this should match the mmp file
@@ -187,7 +198,7 @@
                 TUint aResId = 0,
                 TDesC* aPrompt = NULL,
                 TBool aECSSupport = EFalse,
-                CSCPQueryDialog :: TKeypadContext aContext = CSCPQueryDialog :: EContextSensitive
+                CSCPQueryDialog :: TKeypadContext aContext = CSCPQueryDialog :: ENumeric
               )
     {
     Dprint(_L("[RSCPClient]-> RunDialogL() >>> "));
@@ -465,13 +476,76 @@
 EXPORT_C TInt RSCPClient::SetPhoneLock( TBool aLocked )
     {
     Dprint( (_L("--> RSCPClient::SetPhoneLock( %d)"), aLocked ));
-            
+    TInt autolockState = -1;
+    RProperty aProperty;
+    aProperty.Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState);
+    Dprint( (_L("RSCPClient::SetPhoneLock()Autolock state before %d"), autolockState ));
+
+    if((aLocked==0)&&(autolockState != EAutolockStatusUninitialized))
+    InformAutolockTask();            
+    Dprint( (_L("RSCPClient sendreceive") ));
     TInt ret = SendReceive(ESCPServSetPhoneLock, TIpcArgs( aLocked ) );
-  
+    Dprint( (_L("RSCPClient sendreceive done") ));
+    aProperty.Get(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, autolockState);
+    Dprint( (_L("RSCPClient::SetPhoneLock()Autolock state after %d"), autolockState ));
+    // Put it here because, we cant change autolock status before sendreceive 
+    // Uninitialised state is Only at Bootup.
+    if((autolockState == EAutolockStatusUninitialized)&&(aLocked==0)&&(ret==KErrNone))
+        {
+        Dprint( (_L("RSCPClient::SetPhoneLock()setting autolock status") ));
+        aProperty.Set(KPSUidCoreApplicationUIs, KCoreAppUIsAutolockStatus, EAutolockOff);
+        // This is startup and we are done with ISA unlock
+        // So set the Startup cenrep key so tht it is used in SeccodeQuery
+        CRepository* lRepository = NULL; 
+        TInt returnv;
+        TRAP(returnv, lRepository = CRepository :: NewL(KCRUidSCPLockCode));
+        returnv = lRepository->Set(KSCPStartupQuery, 1);
+        if(returnv==KErrNone)
+        Dprint( (_L("RSCPClient::SetPhoneLock()setting KSCPStartupQuery") ));
+        delete lRepository;
+        }
     Dprint( (_L("<-- RSCPClient::SetPhoneLock(): %d"), ret ));
     return ret;
     }   
 
+void RSCPClient::InformAutolockTask()
+    {
+    Dprint( (_L("RSCPClient::InformAutolockTask") ));
+    // Deactivation call, send the deactivation message to Autolock
+        RWsSession wsSession;
+        if ( wsSession.Connect() != KErrNone )
+           {
+           Dprint( (_L("RSCPClient::InformAutolockTask():\
+               WsSession connection failed") ));        
+           User::Leave( KErrGeneral );
+           }
+        CleanupClosePushL( wsSession );
+
+        TApaTaskList taskList( wsSession );
+        TApaTask task = taskList.FindApp( TUid::Uid( 0x100059B5 ) ); // Autolock
+
+        if ( task.Exists() )
+            {
+            Dprint( (_L("RSCPClient::InformAutolockTask():\
+               Autolock task found, sending msg") ));        
+            // No parameters, just a dummy buffer
+            TBuf8<8> buf;
+            buf.Zero();            
+            const TPtrC8& message = buf;                      
+            User::LeaveIfError( 
+               task.SendMessage( TUid::Uid( SCP_CMDUID_UNLOCK+1 ), message ) 
+               );           
+            }
+        else
+            {
+            Dprint( (_L("RSCPClient::InformAutolockTask():\
+               Autolock task not found") ));
+            User::Leave( KErrNotFound );
+            }
+                  
+        CleanupStack::PopAndDestroy(); // wsSession
+    }   
+
 // ---------------------------------------------------------
 // TBool RSCPClient::QueryAdminCmd( TSCPAdminCommand aCommand )
 // Packs the command parameter into a buffer, and propagates
@@ -586,6 +660,23 @@
     }
     
     Dprint((_L("<-- RSCPClient::SecCodeQuery(): lStatus= %d, lErr= %d"), lStatus, lErr));
+    CRepository* lRepository = NULL;  
+    TInt startup = 0;
+    TInt returnv;
+    TRAP(returnv, lRepository = CRepository :: NewL(KCRUidSCPLockCode));
+    returnv = lRepository->Get(KSCPStartupQuery, startup);
+    if(returnv == KErrNone)
+    Dprint( (_L("RSCPClient::SecCodeQuery()KSCPStartupQuery get done")));
+    lRepository->Set(KSCPStartupQuery, 0);
+    delete lRepository;
+    Dprint((_L("RSCPClient::SecCodeQuery(): startup ? %d"), startup ));
+    //Check if this is Startup Query and tht device is remote unlocked now ?
+    if(startup)
+        {
+        Dprint((_L("[RSCPClient] SecCodeQuery() startup remote Unlocked")));
+        return KErrNone;
+        }
+    else
     return (lErr != KErrNone) ? lErr : lStatus;
 }
 
@@ -761,6 +852,7 @@
     return ret;
     }
 EXPORT_C TInt RSCPClient :: PerformCleanupL(RArray<TUid>& aAppIDs) {
+    Dprint((_L("RSCPClient::PerformCleanupL() >>>")));
     TInt lCount = aAppIDs.Count();
     
     if(lCount < 1) {
@@ -779,6 +871,7 @@
     lWriteStream.CommitL();
     TInt lStatus = SendReceive(ESCPApplicationUninstalled, TIpcArgs(ESCPApplicationUninstalled, &lBuff->Des()));
     CleanupStack :: PopAndDestroy(2); // lBuff, lWriteStream
+    Dprint((_L("RSCPClient::PerformCleanupL() <<<")));
     return lStatus;
 }
 // ---------------------------------------------------------
@@ -898,16 +991,15 @@
                                  maxLen,
                                  R_SECUI_TEXT_ENTER_NEW_SEC_CODE,
                                  NULL,
-                                 ecSupport,
-                                 CSCPQueryDialog :: EAlphaNumeric) );
+                                 ecSupport) );
     
         if ( ( ret ) && ( ret != ESecUiEmergencyCall ) && ( err == KErrNone ) )
             {
             verifyCodeBuffer.Zero();
-            TChar ch = static_cast<TChar>(newCodeBuffer[0]);
-            
-            CSCPQueryDialog :: TKeypadContext lKPContext = 
-                    (ch.IsDigit() ? CSCPQueryDialog :: ENumeric : CSCPQueryDialog :: EAlphaNumeric);
+            /*TChar ch = static_cast<TChar>(newCodeBuffer[0]);
+
+            CSCPQueryDialog :: TKeypadContext lKPContext =
+                    (ch.IsDigit() ? CSCPQueryDialog :: ENumeric : CSCPQueryDialog :: EAlphaNumeric);*/
                     
             TRAP( err, ret = RunDialogL( verifyCodeBuffer, 
                                  bConfig, 
@@ -915,8 +1007,7 @@
                                  maxLen,
                                  R_SECUI_TEXT_VERIFY_NEW_SEC_CODE,
                                  NULL,
-                                 ecSupport,
-                                 lKPContext));                             
+                                 ecSupport));
             }
 
         if ( ( !ret ) || ( err != KErrNone ) || ( ret == ESecUiEmergencyCall ) )
@@ -1070,8 +1161,28 @@
                 codeBuf.Zero(); 
                 
                 ret = theParams->Get( KSCPParamPassword, codeBuf );
+				
                 if ( ret == KErrNone )
                     {
+                    TInt lResFile = 0;
+                    TFileName resFile;
+                    resFile.Copy( KDriveZ );
+                    resFile.Append( KSCPTimestampPluginResFilename );
+                    BaflUtils :: NearestLanguageFile( CCoeEnv :: Static()->FsSession(), resFile );
+                    lResFile = CCoeEnv :: Static()->AddResourceFileL(resFile);
+					
+                    CAknNoteDialog* lNoteDlg = new (ELeave) CAknNoteDialog(CAknNoteDialog :: ENoTone, CAknNoteDialog :: ELongTimeout);
+                    CleanupStack :: PushL(lNoteDlg);
+					
+                    HBufC* lExpNoteMsg = CEikonEnv :: Static()->AllocReadResourceLC(R_SET_SEC_CODE_AGING);
+                    lNoteDlg->SetTextL(lExpNoteMsg->Des());
+					
+                    lNoteDlg->ExecuteLD(R_DIALOG_WARNING);
+                    CleanupStack :: PopAndDestroy(1); //lExpNoteMsg
+                    CleanupStack :: Pop(1); //lNoteDlg
+					
+                    CCoeEnv :: Static()->DeleteResourceFile( lResFile );
+					
                     TSCPSecCode newDOSCode;
                     ret = GetNewCodeAndChange( codeBuf, KSCPForcedChange, &newDOSCode );
                     
@@ -1233,13 +1344,55 @@
         CleanupStack :: PopAndDestroy(lRepository);
         return lRet;
     }
-
+    TInt currentLawmoState(0); 
+    Dprint( (_L("CSCPClient::lawmo cenrep") ));
+    CRepository* crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
+    TInt reterr = crep->Get( KLAWMOPhoneLock, currentLawmoState ); 
+    Dprint( (_L("CSCPClient::lawmo cenrep done") ));
+    if(reterr != KErrNone) 
+        {
+        Dprint(_L("[RSCPClient]-> ERROR: Unable to perform get on CenRep lawmo, lErr=%d"), lRet);
+        CleanupStack :: PopAndDestroy(crep);
+        return reterr;
+        }
     HBufC* codeHBuf = HBufC :: NewLC(KSCPPasscodeMaxLength + 1);
     HBufC8* addParamsHBuf = HBufC8 :: NewLC(KSCPMaxTARMNotifParamLen);
     TPtr codeBuffer = codeHBuf->Des();
     TPtr8 addParams = addParamsHBuf->Des();
+    if(currentLawmoState!=KLockedbyLawmo)
+        {
+        // rundialog with a new resource file
+        Dprint((_L("[RSCPClient]-> lawmo current state !=30")));
+        TBuf<255> serverId;
+        serverId.Zero();
+        reterr = crep->Get( KLAWMOfactoryDmServerName, serverId );
+        Dprint( (_L("RSCPClient::SetSecurityCode serverid: %s"), serverId.PtrZ() ));
+        HBufC* prompt = StringLoader::LoadLC(R_SCP_LAWMO_LOCKED, serverId);
+        Dprint( (_L("RSCPClient::SetSecurityCode stringval: %s"), (prompt->Des()).PtrZ() ));
 
-    if(lDefCode == 0) {
+        lRet = RunDialogL(codeBuffer, aButtonsShown, KSCPPasscodeMinLength, KSCPPasscodeMaxLength,
+                        0, prompt, aECSSupport);
+		if((lRet) && (lRet != ESecUiEmergencyCall) && (lRet != EAknSoftkeyEmergencyCall)) 
+			{
+			Dprint(_L("[RSCPClient]-> INFO: LL User has updated the lock code..."));
+			
+			lRet = SendReceive( ESCPServAuthenticateS60, TIpcArgs( &codeBuffer, &aPassword, &addParams, aFlags));
+			
+			Dprint((_L("[RSCPClient]-> INFO: LL addParams.Length()=%d")), addParams.Length());
+			Dprint((_L("[RSCPClient]-> INFO: LL lRet=%d")), lRet);
+			}
+		else
+			{
+	        switch(lRet) 
+	            {
+	            case 0:
+	                lRet = KErrCancel;
+	                break;
+	            }
+            }
+        CleanupStack::PopAndDestroy(1);
+        }
+    else if(lDefCode == 0) {
         Dprint(_L("[RSCPClient]-> INFO: Default lock code has been set already by the user..."));
 
         lRet = RunDialogL(codeBuffer, aButtonsShown, KSCPPasscodeMinLength, KSCPPasscodeMaxLength,
@@ -1353,7 +1506,13 @@
 
         if(lTempRet == KErrNone) {
             CSCPParamObject* outParams = NULL;
-            ProcessServerCommandsL(addParams, &outParams);
+            /*
+             * aECSSupport when passed to ProcessServerCommandsL decides if the expiry note and subsequently change device lock
+             * code has to be shown or not. Normally if the lock code has expired, the same has to be prompted from the user and 
+             * has to be done only during device unlock. aECSSupport value is being passed to ensure that new lock code is prompted
+             * only during device unlock.
+             */
+            ProcessServerCommandsL(addParams, &outParams, !aECSSupport);
 
             if(outParams != NULL) {
                 TSCPSecCode newSecCode;
@@ -1369,7 +1528,7 @@
         CleanupStack :: PopAndDestroy(tmp);
     }
 
-    CleanupStack :: PopAndDestroy(3); // repository, addParamsHBuf, codeHBuf
+    CleanupStack :: PopAndDestroy(4); // repository * 2, addParamsHBuf, codeHBuf 
     Dprint(_L("[RSCPClient]-> SetSecurityCodeL() <<< lRet=%d"), lRet);
     return lRet;
 }
--- a/terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/src/SCPLockObserver.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -170,6 +170,12 @@
             iDialog->TryCancelQueryL(ESecUiDeviceLocked);
             iSubscribedToEvent = EFalse;
         }
+        else if((autolockState == EAutolockOff)||(autolockState == EAutolockStatusUninitialized))
+            {
+            Dprint(_L("CSCPLockObserver::RunL() TryCancelQueryL Device UnLocked"));
+            iDialog->TryCancelQueryL(ESecUiNone);
+            iSubscribedToEvent = EFalse;
+            }
         break;
         case ESecUiCallStateObserver: {
             TInt callState;
--- a/terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPClient/src/SCPQueryDialog.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -33,6 +33,7 @@
 #include <e32property.h>
 #include <ctsydomainpskeys.h>
 #include "SCPCodePrivateCRKeys.h"
+#include <DevManInternalCRKeys.h>
 #include <featmgr.h>
 
 /*#ifdef _DEBUG
@@ -50,7 +51,7 @@
 #endif // _DEBUG*/
 
 const TInt KSCPSpecialDeleteEvent( 63529 );
-
+const TInt KLockedbyLawmo (30);
 // ================= MEMBER FUNCTIONS =======================
 //
 // ----------------------------------------------------------
@@ -77,6 +78,7 @@
 			  iPreviousCharacterWasInvalid( EFalse ),
 			  iPrioritySet( EFalse ),
 			  iPriorityDropped( EFalse ),
+			  iLockedByLawMo( EFalse ),
 			  iKeyUsed ( NULL ),
 			  iContextSensitive(aContextSensitive)
 	{
@@ -336,6 +338,28 @@
 	static_cast<CAknAppUi*>(iEikonEnv->EikAppUi())->KeySounds()->LockContext();
 
 	iFront = ETrue;
+    TInt currentLawmoState(0); 
+    Dprint( (_L("CSCPQueryDialog::lawmo cenrep") ));
+    CRepository* crep = CRepository::NewLC( KCRUidDeviceManagementInternalKeys );
+    TInt reterr = crep->Get( KLAWMOPhoneLock, currentLawmoState ); 
+    Dprint( (_L("CSCPQueryDialog::lawmo cenrep done") ));
+
+    if(reterr != KErrNone) 
+        {
+        Dprint(_L("[RSCPClient]-> ERROR: Unable to perform get on CenRep lawmo, lErr=%d"), reterr);
+        CleanupStack :: PopAndDestroy(crep);
+        return;
+        }
+    
+    if(currentLawmoState!=KLockedbyLawmo)
+        {
+        // Hide the OK key
+        Dprint( (_L("CSCPQueryDialog::lawmo state !=30, dim key") ));
+        iLockedByLawMo = ETrue;
+        ButtonGroupContainer().MakeCommandVisible( EAknSoftkeyOk, ETrue );
+        ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
+        }	
+	CleanupStack::PopAndDestroy();
 }
 //
 // ---------------------------------------------------------
@@ -630,6 +654,11 @@
                         ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
                         }
                     TRAP ( err , ButtonGroupContainer().AddCommandToStackL(0,EAknSoftkeyOk,*cbaLabel) );
+	                if(iLockedByLawMo)
+	                {
+	                ButtonGroupContainer().MakeCommandVisible( EAknSoftkeyOk, ETrue );
+	                ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
+	                }
                     ButtonGroupContainer().DrawDeferred();
                     delete cbaLabel;
                     }
@@ -647,6 +676,13 @@
     else
         {
         return CAknTextQueryDialog::OfferKeyEventL(aKeyEvent,aType);
+        }  
+    
+    if(iLockedByLawMo)
+	    {
+	    Dprint( (_L("dim key hit 2") ));
+	    ButtonGroupContainer().MakeCommandVisible( EAknSoftkeyOk, ETrue );
+	    ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
         }    
 	}
 //
@@ -765,6 +801,11 @@
 							ButtonGroupContainer().RemoveCommandFromStack(0,EAknSoftkeyOk);
 						}
                 	TRAP ( err , ButtonGroupContainer().AddCommandToStackL(0, EAknSoftkeyOk, *cbaLabel) );
+                    if(iLockedByLawMo)
+                    {
+                    ButtonGroupContainer().MakeCommandVisible( EAknSoftkeyOk, ETrue );
+                    ButtonGroupContainer().DimCommand(EAknSoftkeyOk, ETrue);
+                    }
                 	ButtonGroupContainer().DrawDeferred();
                 	delete cbaLabel;
                 }
@@ -799,7 +840,7 @@
 }
 	
 void CSCPQueryDialog::TryCancelQueryL(TInt aReason) {
-    Dprint( (_L("CSCPQueryDialog::TryCancelQueryL()")) );
+    Dprint( (_L("CSCPQueryDialog::TryCancelQueryL() >>>")) );
     
     switch(aReason) {
         case CSCPLockObserver :: EEnded:
@@ -828,8 +869,14 @@
             Dprint(_L("[CSCPQueryDialog]-> TryExitL 4"));
             TryExitL(EAknSoftkeyCancel);
             break;
+        case ESecUiNone:
+            Dprint(_L("[CSCPQueryDialog]-> TryExitL 5"));
+            TryExitL(EAknSoftkeyOk);
+            break;
         default:
             break;
     }
+	
+    Dprint( (_L("CSCPQueryDialog::TryCancelQueryL() <<<")) );
 }
 // End of file
--- a/terminalsecurity/SCP/SCPDatabase/src/SCPParamDBController.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPDatabase/src/SCPParamDBController.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -106,6 +106,7 @@
 
 EXPORT_C TInt CSCPParamDBController :: SetValueL(TInt aParamID, const TInt32 aValue, const TInt32 aApp) {
     switch(aParamID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
         case RTerminalControl3rdPartySession :: EMaxTimeout:
         case RTerminalControl3rdPartySession :: EPasscodeMinLength:
         case RTerminalControl3rdPartySession :: EPasscodeMaxLength:
@@ -146,6 +147,7 @@
 
 EXPORT_C TInt CSCPParamDBController :: GetValueL(TInt aParamID, TInt32& aValue, TInt32& aApp) {
     switch(aParamID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
         case RTerminalControl3rdPartySession :: EMaxTimeout:
         case RTerminalControl3rdPartySession :: EPasscodeMinLength:
         case RTerminalControl3rdPartySession :: EPasscodeMaxLength:
@@ -190,6 +192,7 @@
 
 EXPORT_C TInt CSCPParamDBController :: DropValuesL(TInt aParamID, const TInt32 aApp) {
     switch(aParamID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
     case RTerminalControl3rdPartySession :: EMaxTimeout:
     case RTerminalControl3rdPartySession :: EPasscodeMinLength:
     case RTerminalControl3rdPartySession :: EPasscodeMaxLength:
@@ -216,6 +219,7 @@
 
 EXPORT_C TInt CSCPParamDBController :: DropValuesL(TInt aParamID, RPointerArray <HBufC>& aParamValues, const TInt32 aApp) {
     switch(aParamID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
     case RTerminalControl3rdPartySession :: EMaxTimeout:
     case RTerminalControl3rdPartySession :: EPasscodeMinLength:
     case RTerminalControl3rdPartySession :: EPasscodeMaxLength:
--- a/terminalsecurity/SCP/SCPServer/inc/SCPConfiguration.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPServer/inc/SCPConfiguration.h	Thu Aug 19 10:44:50 2010 +0300
@@ -29,9 +29,8 @@
 enum TSCPParamType
     {
     EParTypeInt = 0,
-    EParTypeDesc,
-    EParTypeBool
-    };
+    EParTypeDesc
+	};
 
 // LOCAL CONSTANTS
 
@@ -57,11 +56,10 @@
 const TInt KParamIDBlockedInOOS = 7;
 // ID number for the encrypted security code.
 const TInt KParamIDCryptoCode = 8;
-//ID number for the boolean for the configuartion check
-const TInt KParamIDConfigChecked = 9;
+
 
 // Total number of Param IDs
-const TInt KTotalParamIDs = 9;
+const TInt KTotalParamIDs = 8;
 
 //#ifdef __SAP_DEVICE_LOCK_ENHANCEMENTS
 #define SCP_PARAMETERS_WithFlag { &iConfigFlag, \
@@ -71,9 +69,8 @@
                          &iFailedAttempts, \
                          &iBlockedAtTime, \
                          &iBlockedInOOS, \
-                         &iCryptoCode, \
-						 &iConfigChecked \
-                         };
+                         &iCryptoCode \
+						 };
 
 #define SCP_PARAMIDS_WithFlag    {  KParamIDConfigFlag, \
                            KParamIDMaxTimeout, \
@@ -82,9 +79,8 @@
                            KParamIDFailedAttempts, \
                            KParamIDBlockedAtTime, \
                            KParamIDBlockedInOOS, \
-                           KParamIDCryptoCode, \
-						   KParamIDConfigChecked \
-                        };
+                           KParamIDCryptoCode \
+						   };
 
 #define SCP_PARAMTYPES_WithFlag { EParTypeInt, \
                          EParTypeInt, \
@@ -93,9 +89,8 @@
                          EParTypeInt, \
                          EParTypeDesc, \
                          EParTypeInt, \
-                         EParTypeDesc, \
-						 EParTypeBool \
-                       };
+                         EParTypeDesc\
+						};
 
 //#else // !__SAP_DEVICE_LOCK_ENHANCEMENTS                   
 
@@ -189,10 +184,7 @@
         /** The name of the main configuration file */
         TFileName iConfigFileName; 
         TInt iBlockedInOOS;
-        
-        //Flag to check whether Configuration checked already
-        TBool iConfigChecked;
-        
+       
         /** A ptr to a connected RFs, not owned */
         RFs* iFsSession;
         
--- a/terminalsecurity/SCP/SCPServer/inc/SCPServer.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPServer/inc/SCPServer.h	Thu Aug 19 10:44:50 2010 +0300
@@ -136,7 +136,7 @@
         // Only Autolock allowed for the Check configuration call
         },
         {
-        _INIT_SECURITY_POLICY_S0( KSCPEvntHndlrUid ),
+        _INIT_SECURITY_POLICY_C1( ECapability_None ),
             CPolicyServer::EFailClient
         },
         {
--- a/terminalsecurity/SCP/SCPServer/src/SCPConfiguration.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPServer/src/SCPConfiguration.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -155,12 +155,6 @@
                break;
                } 
                
-        case ( EParTypeBool ):
-               { 
-               ret = params->Get( KParamIDs[i], *(reinterpret_cast<TBool*>( KParameters[i] )) );
-               break;
-               }        
-               
            default:               
                 // No implementation needed           
                 break;
@@ -301,13 +295,7 @@
                ret = params->Set( KParamIDs[i], *(reinterpret_cast<TDes*>( KParameters[i] )) );
                break;
                } 
-               
-               case ( EParTypeBool ):
-               { 
-               ret = params->Set( KParamIDs[i], *(reinterpret_cast<TBool*>( KParameters[i] )) );
-               break;
-               } 
-               
+      
            default:               
                 // No implementation needed           
                 break;
--- a/terminalsecurity/SCP/SCPServer/src/SCPServer.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPServer/src/SCPServer.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -129,7 +129,7 @@
     
     // Assign default config flag
     iConfiguration.iConfigFlag = KSCPConfigUnknown;
-    iConfiguration.iConfigChecked = EFalse;
+    
     
     // Assign the default codes
     iConfiguration.iSecCode.Zero();
@@ -169,7 +169,7 @@
 //#endif
    
     // Assign the default max timeout
-    iConfiguration.iMaxTimeout = KSCPDefaultMaxTO;
+    iConfiguration.iMaxTimeout = 0;
    	iConfiguration.iBlockedInOOS = 0;
    
     // Read the configuration, overwriting the default values
@@ -186,24 +186,8 @@
         }
     
     
-    //If Configuration is not validated already, validate it
-    
-    if (!iConfiguration.iConfigChecked)
-        {
-        TInt valerr = KErrNone;
-        TRAP( valerr, ValidateConfigurationL( KSCPComplete ));
-        if (valerr != KErrNone)
-            {
-            Dprint( (_L("CSCPServer::ConstructL(): Configuration Validation failed: %d"), valerr ));
-            }
-        else
-            {
-            Dprint( (_L("CSCPServer::ConstructL(): Configuration Validation Passed")));
-            }
-        }
-    
-        
-        
+   
+
     Dprint( (_L("CSCPServer::ConstructL(): Connecting to CenRep") ));
     iALPeriodRep = CRepository::NewL( KCRUidSecuritySettings );        
     
@@ -668,155 +652,91 @@
 //	
 void CSCPServer::ValidateConfigurationL( TInt aMode )
     {
-    Dprint( (_L("--> CSCPServer::ValidateConfigurationL()") ));
-    RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()"));
-    TInt startupReason(ENormalStartup);
-    RProperty::Get(KPSUidStartup, KPSStartupReason, startupReason);
-    Dprint( (_L("CSCPServer::ValidateConfigurationL(): startupReason = %d"), startupReason));
-     if((startupReason == ENormalRFSReset)||(startupReason ==  EDeepRFSReset)||(startupReason == EFirmwareUpdate)||(iConfiguration.iConfigFlag == KSCPConfigUnknown))
-         {
+    if (aMode == KSCPInitial) {
+        // Return here, must be checked by complete mode
+        RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@@aMode == KSCPInitial "));
+        User::Leave(KErrAccessDenied);
+    }
     
-	RMobilePhone::TMobilePassword storedCode;
+    RMobilePhone::TMobilePassword storedCode;
     storedCode.Zero();
     User::LeaveIfError(GetCode(storedCode));
-    
-    
-	Dprint( (_L("CSCPServer::ValidateConfigurationL(): Checking code: %s"), storedCode.PtrZ() ));
-	// Check that the ISA code is stored correctly
-	TRAPD( err, CheckISACodeL( storedCode ) );
-	 //Bool for the correction of Defaultlockcode cenrep
-    TBool lCorrectDefaultlockcode = EFalse;
-    
-     Dprint( (_L("CSCPServer::ValidateConfigurationL(): iConfigFlag = %d, iConfigChecked = %d"), iConfiguration.iConfigFlag, iConfiguration.iConfigChecked));
-     
-    if ((iConfiguration.iConfigFlag == KSCPConfigOK)
-            && (iConfiguration.iConfigChecked) && (err == KErrNone))
-        {
-        // The configuration has already been checked, exit
-        Dprint( (_L("CSCPServer::ValidateConfigurationL(): Configuration is non-default.") ));
-        User::Leave( KErrNone );
-        }
-    else if ( aMode == KSCPInitial )
-        {
-        // Return here, must be checked by complete mode
-        User::Leave( KErrAccessDenied );
-        }
-    
-   
-    TInt hashedISAcode;
-    TSCPSecCode hashedCode;
-//#ifdef __SAP_DEVICE_LOCK_ENHANCEMENTS    
-if(FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements))
-{
-	/*TInt*/ hashedISAcode = HashISACode( iConfiguration.iEnhSecCode );
-   // TSCPSecCode hashedCode;
-    hashedCode.Zero();
-    hashedCode.AppendNum( hashedISAcode );
-}
-//#endif // __SAP_DEVICE_LOCK_ENHANCEMENTS    
-            
-    
+    TBool isDefaultLockcode = ETrue;
+    TInt err = KErrNone;
     
-   
-    if (err != KErrNone)
-        {
-        lCorrectDefaultlockcode = ETrue;
+    RMobilePhone::TMobilePassword defaultLockcode;
+    defaultLockcode.Zero();
+    defaultLockcode.Copy(KSCPDefaultSecCode);
+    if (storedCode.Compare(KSCPDefaultSecCode) == 0) {
+        RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@config has KSCPDefaultSecCode "));
+        TRAP( err, CheckISACodeL( defaultLockcode ) );
+        if (err == KErrNone) {
+            RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@ISA also has KSCPDefaultSecCode "));
+            iConfiguration.iConfigFlag = KSCPConfigOK;
+            isDefaultLockcode = ETrue;
         }
-    if ( err == KErrNone ) 
-        {
-        iConfiguration.iConfigFlag = KSCPConfigOK;
-        }
-    else if ( err == KErrAccessDenied )
-        {        
-        iConfiguration.iConfigFlag = KSCPConfigInvalid;
-        }
-    else if ( err == KErrLocked )
-        {
-        Dprint( (_L("CSCPServer::ValidateConfigurationL(): ISA code locked.") ));
+        else {
+            RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@ISA doesn't has KSCPDefaultSecCode "));
+            iConfiguration.iConfigFlag = KSCPConfigInvalid;
+            iConfiguration.iFailedAttempts++;
+            isDefaultLockcode = EFalse;
         }
-    else
-        {
-        Dprint( (_L("CSCPServer::ValidateConfigurationL(): ERROR in validation.") ));
+    }
+    else {
+        RDebug::Print(_L("CSCPServer::CheckISACodeL(): config lock code %s"), storedCode.PtrZ());
+        TRAP( err, CheckISACodeL( storedCode ) );
+        if (err == KErrNone) {
+            RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@ISA and config are in SYNC !! "));
+            iConfiguration.iConfigFlag = KSCPConfigOK;
+            isDefaultLockcode = EFalse;
         }
-
-//#ifdef __SAP_DEVICE_LOCK_ENHANCEMENTS         
-if(FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements))
-{
-    if ( err == KErrNone )
-        {
-        // Check that the codes are in-sync with each other. Especially the default ISA code must
-        // be changed according to the default enhanced code.        
-        if ( storedCode.Compare( hashedCode ) != 0 )
+        else {
+            iConfiguration.iSecCode.Zero();
+            iConfiguration.iSecCode.Append(KSCPDefaultSecCode);
+            RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@May be ISA has KSCPDefaultSecCode "));
+            TRAP(err,ChangeISACodeL(storedCode));
+            if (err == KErrNone) {
+                RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()chnaged ISA code with config value "));
+                iConfiguration.iConfigFlag = KSCPConfigOK;
+                isDefaultLockcode = EFalse;
+            }
+            else
             {
-            Dprint( (_L("CSCPServer::ValidateConfigurationL(): Correct ISA code stored.\
-               Changing ISA code to match enhanced code => %d"), hashedISAcode ));
-               
-            storedCode.Copy( hashedCode );
-            // Change the ISA code to match the hashed code
-            ChangeISACodeL( storedCode );
+                RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()it shouldn't reach this :( "));
             }
         }
-    else if ( ( err == KErrAccessDenied ) && ( storedCode.Compare( hashedCode ) != 0 ) )
-        {
-        // Try again with the hashed code
-        TRAP( err, CheckISACodeL( hashedCode ) );
-        
-        if ( err == KErrNone )
-            {            
-            Dprint( (_L("CSCPServer::ValidateConfigurationL(): Hashed code is correct.\
-               Storing hashed code(%d)"), hashedISAcode ));
-               
-            if ( StoreCode( hashedCode ) == KErrNone )
-                {
-                iConfiguration.iConfigFlag = KSCPConfigOK;
-                lCorrectDefaultlockcode = ETrue;
-                }
-            }        
-        }
+    }
+
+    CRepository* repository = CRepository::NewL(KCRUidSCPLockCode);
+    CleanupStack::PushL(repository);
+    if (isDefaultLockcode ) {
+        RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()setting def. lockcode to 12345 "));
+        repository->Set(KSCPLockCodeDefaultLockCode, 12345);
+    }
+    else {
+        RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()setting def. lockcode to 0 "));
+        repository->Set(KSCPLockCodeDefaultLockCode, 0);
+    }
+    CleanupStack::PopAndDestroy(repository);
     
-    //If Correction of Defaultlockcode cenrep is required for the mismatch between Config and ISA
-        if (lCorrectDefaultlockcode)
-            {
-            TInt lDefCode = -1;
-            CRepository* lRepository = CRepository::NewL(KCRUidSCPLockCode);
-            CleanupStack::PushL(lRepository);
-            TInt lRet = lRepository->Get(KSCPLockCodeDefaultLockCode,
-                    lDefCode);
-            if (lRet == KErrNone && lDefCode != -1)
-                {
-                if (lDefCode == 12345)
-                    {
-                    //Although lock code is already set, due to some unexpected condition
-                    //like C drive wipe, cenrep status is wrongly shown. Correcting it here.
-                    lRepository->Set(KSCPLockCodeDefaultLockCode, 0);
-                    Dprint( (_L("RSCPClient::ValidateConfigurationL(): Corrected the Default lock code cenrep status to 0") ));
-                    }
-                else if (lDefCode == 0)
-                    {
-                    //If only ISA side is formatted, then the lock code on ISA side is default; 
-                    //Cenrep status remains wrongly as the lock code is already set. Correcting it here.
-                    lRepository->Set(KSCPLockCodeDefaultLockCode, 12345);
-                    Dprint( (_L("RSCPClient::ValidateConfigurationL(): Corrected the Default lock code cenrep status to 12345") ));
-                    }
-                }
-            CleanupStack::PopAndDestroy(lRepository);
-            }
-        }
-//#endif // __SAP_DEVICE_LOCK_ENHANCEMENTS
-    //Set the flag to True, after config is validated 
-    iConfiguration.iConfigChecked = ETrue;
-    
-    TRAPD( err2, iConfiguration.WriteSetupL() );
-    if ( err2 != KErrNone )
-        {
+    TRAP( err, iConfiguration.WriteSetupL() );
+    if (err != KErrNone) {
         Dprint( (_L("CSCPServer::ValidateConfigurationL(): WARNING: failed to write configuration\
-            : %d"), err2 ));        
-        } 
-    
-    User::LeaveIfError( err );
-         }
-    Dprint( (_L("<-- CSCPServer::ValidateConfigurationL()") ));
+                : %d"), err ));
+    }
+
+    if (iConfiguration.iConfigFlag == KSCPConfigOK) {
+        RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@iConfigFlag == KSCPConfigOK "));
+        err = KErrNone;
     }
+    else {
+        RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()@iConfigFlag == KErrAccessDenied "));
+        err = KErrAccessDenied;
+    }
+
+    User::LeaveIfError(err);
+}
+
 
         
     
@@ -837,7 +757,10 @@
     (void)aCode;    
 
 #endif // __WINS__
-   
+
+
+Dprint( (_L("CSCPServer::CheckISACodeL(): current lock code %s"), aCode.PtrZ() ));
+RDebug::Print(_L("CSCPServer::CheckISACodeL(): current lock code %s"), aCode.PtrZ());
     RMobilePhone::TMobilePhoneSecurityCode secCodeType;
     secCodeType = RMobilePhone::ESecurityCodePhonePassword;
     
@@ -873,6 +796,7 @@
 	         {
 	            	iConfiguration.iBlockedInOOS = 0;
    	            	Dprint( (_L("CSCPServer::CheckISACodeL():iBlockedInOOS = 0, KErrAccessDenied") ));
+   	            	RDebug::Print(_L("--> CSCPServer::CheckISACodeL()@@iBlockedInOOS = 0, KErrAccessDenie"));
 	         }            
             ret = KErrAccessDenied;             
             }
@@ -881,17 +805,20 @@
             Dprint( (_L("CSCPServer::CheckISACodeL(): ISA code BLOCKED") ));            
             if (ret==KErrGsmSSPasswordAttemptsViolation)
             {
-            	Dprint( (_L("CSCPServer::CheckISACodeL(): KErrGsmSSPasswordAttemptsViolation") ));            	
+            	Dprint( (_L("CSCPServer::CheckISACodeL(): KErrGsmSSPasswordAttemptsViolation") ));  
+            	RDebug::Print(_L("--> CSCPServer::CheckISACodeL()@@KErrGsmSSPasswordAttemptsViolation"));
             }
             else
             {
             	Dprint( (_L("CSCPServer::CheckISACodeL(): KErrLocked") ));
+            	RDebug::Print(_L("--> CSCPServer::CheckISACodeL()@@KErrLocked"));
             }	            
             ret = KErrLocked;
             if (iConfiguration.iBlockedInOOS == 0)
         	 {
             	iConfiguration.iBlockedInOOS = 1;
             	Dprint( (_L("CSCPServer::CheckISACodeL():iBlockedInOOS = 1, KSCPErrCodeBlockStarted") ));
+            	RDebug::Print(_L("--> CSCPServer::CheckISACodeL()@@@@@"));
             	ret = KSCPErrCodeBlockStarted;	
         	 }
             }            
@@ -899,6 +826,7 @@
             {
             Dprint( (_L("CSCPServer::CheckISACodeL(): ERROR reply checking ISA code: %d"),
                 status.Int() ));
+                RDebug::Print(_L("--> CSCPServer::ValidateConfigurationL()"));
             }            
         }
         TRAPD( err, iConfiguration.WriteSetupL() );
@@ -1016,6 +944,7 @@
     		TRAP(err, repository = CRepository :: NewL(KCRUidSCPLockCode));
     		
     		if(err == KErrNone) {
+    			RDebug::Print(_L("<-- CSCPServer::StoreEnhCode()  setting KSCPLockCodeDefaultLockCode to 0"));
                 err = repository->Set(KSCPLockCodeDefaultLockCode, 0);
                 delete repository;
     		}
@@ -1351,84 +1280,74 @@
     TInt lRetStatus(KErrNone);
     Dprint(_L("[CSCPServer]-> Initiating branching on parameter..."));
     
-    switch ( aID )
-        {
-        case ( ESCPAutolockPeriod ):
-        // Flow through            
-        case ( ESCPMaxAutolockPeriod ):
-            {
+    switch(aID) {
+        case ESCPAutolockPeriod:
+        case ESCPMaxAutolockPeriod: {
             // Convert the value, and set it
             TInt value;
             TLex lex(aValue);
             lRetStatus = lex.Val(value);
-             
 
             if((lRetStatus != KErrNone ) || ( value < 0) || ( value > KSCPAutolockPeriodMaximum )) {
                 lRetStatus = KErrArgument;
                 break;
-                }
+            }
                   
             //Check if the device memory is encrypted or not.
             TBool encryptionEnabled = IsDeviceMemoryEncrypted();
+            CSCPParamDBController* lParamDB = CSCPParamDBController :: NewLC();
             
             // Value OK
-            if(aID == ESCPMaxAutolockPeriod) 
-						{
-						   if (  encryptionEnabled )
-                  {
-                  Dprint(_L("Memory is encrypted"));
-                  if (( 0 == value) || value > KMaxAutolockPeriod)
-                      {
-                      Dprint((_L("Denying setting of max auto lock as value is %d"), value));
-                      User::Leave( KErrPermissionDenied );
-                      }
-                      
-                  }
-                else
-                    {
+            if(aID == ESCPMaxAutolockPeriod) {
+                if( encryptionEnabled ) {
+                    Dprint(_L("[CSCPServer]-> Memory is encrypted"));
+                    
+                    if(( 0 == value) || value > KMaxAutolockPeriod) {
+                        Dprint((_L("[CSCPServer]-> Denying setting of max auto lock as value is %d"), value));
+                        User :: Leave( KErrPermissionDenied );
+                    }
+                }
+                else {
                     Dprint(_L("Memory is decrypted, hence no restrictions to max autolock"));
-                    }
+                }
                     
-                Dprint(_L("[CSCPServer]-> Branched to ESCPMaxAutolockPeriod..."));
-                CSCPParamDBController* lParamDB = CSCPParamDBController :: NewLC();
+                Dprint(_L("[CSCPServer]-> Branched to ESCPMaxAutolockPeriod..."));                
                 lRetStatus = SetBestPolicyL(RTerminalControl3rdPartySession :: EMaxTimeout, aValue, aCallerIdentity, lParamDB);
 
-                if(lRetStatus == KErrNone) 
-								{
+                if(lRetStatus == KErrNone) {
                     // Do we have to change the Autolock period as well?
                     TInt currentALperiod;
                     lRetStatus = GetAutolockPeriodL(currentALperiod);
 
-                    if(lRetStatus == KErrNone) 
-										{
-                        if((iConfiguration.iMaxTimeout > 0) && ((iConfiguration.iMaxTimeout < currentALperiod) || (currentALperiod == 0))) 
-												{
+                    if(lRetStatus == KErrNone) {
+                        if( (iConfiguration.iMaxTimeout > 0) && 
+                            ((iConfiguration.iMaxTimeout < currentALperiod) ||
+                            (currentALperiod == 0))) {
+                        
                            Dprint((_L("[CSCPServer]-> Changing AL period to Max. AL period (Current ALP: %d, Max. ALP: %d)"), currentALperiod, value));
-                           lRetStatus = SetAutolockPeriodL(value);
+                           //lRetStatus = SetAutolockPeriodL(value);                           
+                           /*
+                            * Call to SetBestPolicyL will not check for Stronger/Weaker. The value of ETimeout just gets stored in 
+                            * both the internal DB and the CenRep
+                           */
+                           lRetStatus = SetBestPolicyL(RTerminalControl3rdPartySession :: ETimeout, aValue, aCallerIdentity, lParamDB);
                         }
                     }
-                    else 
-										{
+                    else {
                         Dprint((_L("[CSCPServer]-> ERROR: Couldn't get the Autolock period: %d"), lRetStatus));
                     }
                 }
+            }
+            // Autolock Period
+            else {
+                //Code is commented as it is already taken care by the below condition #1343 irrespective of the drive encryption state.
+                /*  if ( 0 == value ) {
+                    if(encryptionEnabled) {
+                        Dprint(_L("Permission denied!"));
+                        User :: Leave(KErrPermissionDenied);
+                    }
+                }*/
 
-                CleanupStack :: PopAndDestroy(); //lParamDB
-            }
-            
-            else 
-            { // Autolock Period
-            	
-            			//Code is commented as it is already taken care by the below condition #1343 irrespective of the drive encryption state.
-            	     /*  if ( 0 == value )
-                    {
-                    if ( encryptionEnabled )
-                        {
-                        Dprint(_L("Permission denied!"));
-                        User::Leave( KErrPermissionDenied );
-                        }
-                    }*/
-                    
                 Dprint(_L("[CSCPServer]-> Branched to ESCPAutolockPeriod..."));
                 //  Check if this value is not allowed by the Max. Autolock period
                 if ((iConfiguration.iMaxTimeout > 0) && ((iConfiguration.iMaxTimeout < value) || (value == 0))) {
@@ -1437,13 +1356,20 @@
                     lRetStatus = KErrArgument;
                 }
                 else {
-                    lRetStatus = SetAutolockPeriodL(value);
+                    //lRetStatus = SetAutolockPeriodL(value);
+                    /*
+                     * Call to SetBestPolicyL will not check for Stronger/Weaker. The value of ETimeout just gets stored in 
+                     * both the internal DB and the CenRep
+                    */
+                    lRetStatus = SetBestPolicyL(RTerminalControl3rdPartySession :: ETimeout, aValue, aCallerIdentity, lParamDB);
 
                     if(lRetStatus != KErrNone) {
                         Dprint((_L("[CSCPServer]-> ERROR: Couldn't set the Autolock period: %d"), lRetStatus));
                     }
                 }
             }
+            
+            CleanupStack :: PopAndDestroy(); //lParamDB
         }
         break;
         case ESCPCodeChangePolicy:
@@ -2083,13 +2009,13 @@
 //  
 TInt CSCPServer::IsCorrectEnhCode( TDes& aCode, TInt aFlags )
     {
-    
+    Dprint( (_L("CSCPServer::IsCorrectEnhCode(): ") ));
     if(!FeatureManager::FeatureSupported(KFeatureIdSapDeviceLockEnhancements))
     {
     	return KErrNotSupported;
     }
     TInt ret = KErrAccessDenied;
-    
+   
     // Hash the code
     TBuf<KSCPMaxHashLength> hashBuf;
     hashBuf.Zero();
@@ -2104,14 +2030,17 @@
     TBool enhancedCodeMatches = EFalse;
     if ( hashBuf.Compare( iConfiguration.iEnhSecCode ) == 0 )
         {
+        	Dprint( (_L("CSCPServer::IsCorrectEnhCode(): enh code matches.") ));
         enhancedCodeMatches = ETrue;
         }
         
     // Check if the code is blocked (don't check if we're out-of-sync)
     if ( ( iConfiguration.iConfigFlag == KSCPConfigOK ) && ( IsCodeBlocked() ) )
         {
+        	Dprint( (_L("CSCPServer::IsCorrectEnhCode(): 1") ));
         if ( aFlags & KSCPEtelRequest )
             {
+            	Dprint( (_L("CSCPServer::IsCorrectEnhCode(): 2") ));
             // Check if the code is correct
             if ( enhancedCodeMatches )
                 {
@@ -2125,6 +2054,7 @@
             else 
                 {
                 // OK, the code is already invalid
+                Dprint( (_L("CSCPServer::IsCorrectEnhCode(): 3") ));
                 SendInvalidDOSCode( pswCandidate );
                 }
             }
@@ -2137,6 +2067,7 @@
         {
         // Normal situation: we have the correct code stored.
         // Compare the hashes (hashing error will result in EFalse )
+        Dprint( (_L("CSCPServer::IsCorrectEnhCode(): 4") ));
         if ( enhancedCodeMatches )
             {
             ret = KErrNone;
@@ -2144,6 +2075,7 @@
             if ( aFlags & KSCPEtelRequest )
                 {
                 // Send the correct code to DOS side
+                Dprint( (_L("CSCPServer::IsCorrectEnhCode(): 5") ));
                 TRAP( ret, CheckISACodeL( pswCandidate ) );
                 }  
                 
@@ -2152,7 +2084,7 @@
                 if ( iConfiguration.iFailedAttempts > 0 )
                     {
                     iConfiguration.iFailedAttempts = 0;  
-                    Dprint( (_L("CSCPServer::IsCorrectEnhCode():KErrAccessDenied: iFailedAttempts (%d)."), iConfiguration.iFailedAttempts ));
+                    Dprint( (_L("CSCPServer::IsCorrectEnhCode():: iFailedAttempts (%d)."), iConfiguration.iFailedAttempts ));
                     writeSetup = ETrue;
                     }                
                 }
@@ -2167,11 +2099,12 @@
             ret = KErrAccessDenied;
             
             iConfiguration.iFailedAttempts++;
-            Dprint( (_L("CSCPServer::IsCorrectEnhCode():KErrAccessDenied: iFailedAttempts (%d)."), iConfiguration.iFailedAttempts ));
+            Dprint( (_L("CSCPServer::IsCorrectEnhCode():@@@: iFailedAttempts (%d)."), iConfiguration.iFailedAttempts ));
             writeSetup = ETrue;
             
             if ( iConfiguration.iFailedAttempts == KSCPCodeBlockLimit )
                 {
+                	Dprint( (_L("CSCPServer::IsCorrectEnhCode(): KSCPCodeBlockLimit  ") ));
                 // Block the code
                 TTime curTime;
                 curTime.UniversalTime();
@@ -2192,63 +2125,60 @@
     else 
         {
         // iConfiguration.iConfigFlag == KSCPConfigInvalid or KSCPConfigUnknown
-        
+
         // We might be out-of-sync, no idea about the real code.
         // Check if the DOS code hashed from the given code is correct.
         Dprint( (_L("CSCPServer::IsCorrectEnhCode(): Attempting to correct OoS situation.") ));
-                
+        if (IsCodeBlocked()) {
+            Dprint( (_L("CSCPServer::IsCorrectEnhCode(): OOS ->KErrLocked  ") ));
+            return KErrLocked;
+        }
         TRAP( ret, CheckISACodeL( pswCandidate ) );
 
-        if ( ret == KErrNone )
-            {
+        if (ret == KErrNone) {
             // OK, we must assume that this is the correct code, since
             // the hashed DOS code is correct. Save the codes, and return OK.
 
             Dprint( (_L("CSCPServer::IsCorrectEnhCode(): Given code has the correct hash (%d)\
                 , saving codes."), ISACode ));
-                
+
             iConfiguration.iEnhSecCode.Zero();
-            iConfiguration.iEnhSecCode.Copy( hashBuf );
+            iConfiguration.iEnhSecCode.Copy(hashBuf);
 
             iConfiguration.iSecCode.Zero();
-            iConfiguration.iSecCode.AppendNum( ISACode );
-            
+            iConfiguration.iSecCode.AppendNum(ISACode);
+
             // Unset the invalid configuration flag
             iConfiguration.iConfigFlag = KSCPConfigOK;
             writeSetup = ETrue;
-            }
-        else
-            {
-				
-            Dprint( (_L("CSCPServer::IsCorrectEnhCode(): Given code does not have the \
-                correct hash: ret; %d user enter password: %d"), ret ));
-			TRAP( ret, CheckISACodeL( aCode ) );
-			if (ret == KErrNone)
-			{
-				//store this code in our interal storage as it is used as oldpassword while changing at ISA side in next command
-				//ChangeISACodeL. 
-				iConfiguration.iSecCode.Zero();
-				iConfiguration.iSecCode.Append( aCode );
-				TRAP(ret,ChangeISACodeL(pswCandidate));
-			}
-			if (ret == KErrNone)
-			{
-			iConfiguration.iEnhSecCode.Zero();
-            iConfiguration.iEnhSecCode.Copy( hashBuf );
+        }
+        else {
+            ret = KErrAccessDenied;
+
+            iConfiguration.iFailedAttempts++;
+            Dprint( (_L("CSCPServer::IsCorrectEnhCode():@@@: iFailedAttempts (%d)."), iConfiguration.iFailedAttempts ));
+            writeSetup = ETrue;
 
-            iConfiguration.iSecCode.Zero();
-            iConfiguration.iSecCode.AppendNum( ISACode );
-            
-            // Unset the invalid configuration flag
-            iConfiguration.iConfigFlag = KSCPConfigOK;
-            writeSetup = ETrue;
-			}
+            if (iConfiguration.iFailedAttempts == KSCPCodeBlockLimit) {
+                Dprint( (_L("CSCPServer::IsCorrectEnhCode(): KSCPCodeBlockLimit  ") ));
+                // Block the code
+                TTime curTime;
+                curTime.UniversalTime();
+
+                iConfiguration.iBlockedAtTime.Zero();
+                iConfiguration.iBlockedAtTime.AppendNum(curTime.Int64());
+
+                // The code will be blocked for now on
+                ret = KSCPErrCodeBlockStarted;
             }
         }
+
+    }
     
     // Write setup if needed
     if ( writeSetup )
         {
+        	Dprint( (_L("CSCPServer::IsCorrectEnhCode(): 7  ") ));
         TRAPD( err, iConfiguration.WriteSetupL() );
         if ( err != KErrNone )
             {
@@ -2667,9 +2597,10 @@
     TBool lFirstTime(EFalse);
     TInt32 lNumValue (-1);
     TInt32 lNumValDB (-1);
-    TInt32 lRetStatus = KErrNone;
+    TInt lRetStatus = KErrNone;
 
     switch(aID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
         case RTerminalControl3rdPartySession :: EMaxTimeout:
         case RTerminalControl3rdPartySession :: EPasscodeMinLength:
         case RTerminalControl3rdPartySession :: EPasscodeMaxLength:
@@ -2711,6 +2642,9 @@
     else {
         // Fetch the previous value of the parameter from the private database
         switch(aID) {
+            case RTerminalControl3rdPartySession :: ETimeout:
+                // No need to fetch previous value for ETimeout since Stronger/Weaker check is not required for it.
+                break;
             case RTerminalControl3rdPartySession :: EMaxTimeout:
             case RTerminalControl3rdPartySession :: EPasscodeMinLength:
             case RTerminalControl3rdPartySession :: EPasscodeMaxLength:
@@ -2779,6 +2713,12 @@
 
         // Decision code that verifies if policy is strongest
         switch(aID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
+            /* 
+             * No need to check stronger/weaker for ETimeout. The value just has to be maintained in both
+             * DB and the CenRep
+            */
+            break;
         case RTerminalControl3rdPartySession :: EMaxTimeout:
         case RTerminalControl3rdPartySession :: EPasscodeMaxRepeatedCharacters:
         case RTerminalControl3rdPartySession :: EPasscodeExpiration:
@@ -2832,11 +2772,17 @@
     */
     if (lRetStatus == KErrNone) {
         switch (aID) {
+        case RTerminalControl3rdPartySession :: ETimeout:
+            lRetStatus = SetAutolockPeriodL(TInt(lNumValue));
+            Dprint(_L("[CSCPServer]-> After setting ETimeout lRetStatus = %d "), lRetStatus);
+            break;
+			
         case RTerminalControl3rdPartySession :: EMaxTimeout:
             iConfiguration.iMaxTimeout = lNumValue;
             lRetStatus = iConfiguration.WriteSetupL();
             Dprint(_L("[CSCPServer]-> After setting EMaxTimeout lRetStatus = %d "), lRetStatus);
             break;
+			
         default:
             TUint16* ptr = const_cast<TUint16*>(aValue.Ptr());
             TPtr valBuf(ptr, aValue.Length(), aValue.Length());
@@ -2931,14 +2877,31 @@
                 Dprint(_L("[CSCPServer]-> Old Index of EPasscodeHistoryBuffer=%d"), lHistBuffIndex);
                 Dprint(_L("[CSCPServer]-> Old Index of EPasscodeMinChangeTolerance=%d"), lMinTolIndex);
             }
+			
+            /*
+             * If both ETimeout and EMaxTimeout are marked for cleanup then interchange the cleanup order of 
+             * ETimeout and EMaxTimeout since AutoLock (ETimeout) cannot be disabled
+             * if MaxAutolock (EMaxTimeout) is still enabled
+             */
+            if( lParamIds[0] == RTerminalControl3rdPartySession :: ETimeout &&
+                lParamIds[1] == RTerminalControl3rdPartySession :: EMaxTimeout) {
+            
+                lParamIds[0] = RTerminalControl3rdPartySession :: EMaxTimeout;
+                lParamIds[1] = RTerminalControl3rdPartySession :: ETimeout;
+            }
        	}
 
         for(TInt j=0; j < lCount; j++) {
             TInt lCurrParamID = lParamIds[j];            
             lDefValueBuf->Des().Zero();
             lDefValueBuf->Des().Format(_L("%d "), 0);
+			
             // Initialize the default values here...
             switch(lCurrParamID) {
+                case RTerminalControl3rdPartySession :: ETimeout:
+                    // lDefValueBuf already has the default value, 0 initialized...
+                    lCurrParamID = ESCPAutolockPeriod;
+                    break;
                 case RTerminalControl3rdPartySession :: EMaxTimeout:
                     // lDefValueBuf already has the default value, 0 initialized...
                     lCurrParamID = ESCPMaxAutolockPeriod;
@@ -2967,6 +2930,7 @@
                         
                         for(TInt k=0; k < lDesCount; k++) {
                             TRAP(lStatus, lStatus = SetParameterValueL(lCurrParamID, lDesArr[k]->Des(), lAppID));
+							
                             if(KErrNone != lStatus) {
                                 Dprint(_L("[CSCPServer]-> ERROR: Unable to cleanup parameter %d error %d"), lParamIds[j], lStatus);
                                 lSubOpsFailed = ETrue;
@@ -2980,6 +2944,40 @@
                     CleanupStack :: PopAndDestroy(1); // lDesArray
                 }
                 break;
+				
+                case ESCPAutolockPeriod: {
+                    TInt32 lParamValueDB(0);
+                    TInt lParamValueCenRep(0);
+                    TInt32 lCurrParamOwner(0);
+					
+                    lStatus = lParamDB->GetValueL(RTerminalControl3rdPartySession :: ETimeout, lParamValueDB, lCurrParamOwner);
+					
+                    if(lStatus != KErrNone) {
+                        Dprint(_L("[CSCPServer]-> ERROR: Unable to get current value of ETimeout from DB..."));
+                        lSubOpsFailed = ETrue;
+                        break;
+                    }
+					
+                    lStatus = GetAutolockPeriodL(lParamValueCenRep);
+					
+                    if(lStatus != KErrNone) {
+                        Dprint(_L("[CSCPServer]-> ERROR: Unable to get current value of ETimeout from CenRep..."));
+                        lSubOpsFailed = ETrue;
+                        break;
+                    }
+                    
+                    /*
+                     *  It is possible that AutoLock set from UI is different. In that case internal DB and CenRep 
+                     *  are not in sync. Compare the two values and if they are same assume that the values are in sync.
+                     *  Limitation is that if the user sets the AutoLock with the same value as set by the current app then
+                     *  AutoLock will get disabled.
+                     *  
+                    */
+                    if(lParamValueCenRep != lParamValueDB) {
+                        break;
+                    }
+                }
+				
                 default: {
                     iOverrideForCleanup = ETrue;
                     TRAP(lStatus, lStatus = SetParameterValueL(lCurrParamID, lDefValueBuf->Des(), lAppID));
@@ -2996,7 +2994,8 @@
                         aParamValArray.AppendL(lTmpBuffer);
                     }
                 }
-            }
+                break;
+            };
             
             if(KErrNone != lStatus) {
                 Dprint(_L("[CSCPServer]-> ERROR: Unable to cleanup parameter %d error %d"), lParamIds[j], lStatus);
--- a/terminalsecurity/SCP/SCPServer/src/SCPSession.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPServer/src/SCPSession.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -1553,20 +1553,26 @@
     Dprint(_L("[CSCPSession]-> NotifyAllStakeHoldersL() <<<"));
     return KErrNone;
 }
+
 TInt CSCPSession :: HandleCleanupL(const RMessage2& aMessage) {
+    Dprint((_L("[CSCPSession]-> HandleCleanupL() >>>")));
+	
+    if( (aMessage.SecureId().iId != KSCPServerSIDTerminalControl) && 
+        (aMessage.SecureId().iId != KSCPEvntHndlrUid)) {
+		
+        Dprint((_L("[CSCPSession]-> ERROR: caller app id=%ld. Permission denied..."), aMessage.SecureId().iId));
+        User :: Leave(KErrPermissionDenied);
+    }
+	
     // Copy the client data into a local buffer
     TInt32 lCount = aMessage.GetDesLength(1);
     
-/*    // If the caller is not SCPEventHandler the deny access
-    if(aMessage.SecureId() != KSCPEvntHndlrUid) {
-        return KErrPermissionDenied;
-    }*/
-    
     // Atleast one application id has to be present in the received message (atleast 8 bytes)
     if(lCount < sizeof(TInt32)) {
         return KErrArgument;
     }
     
+    TInt lStatus = KErrNone;
     RArray<const TParamChange> lChangeArray;
     CleanupClosePushL(lChangeArray);
     
@@ -1575,9 +1581,7 @@
     
     HBufC8* lBuffer = HBufC8 :: NewLC(lCount);
     TPtr8 bufPtr = lBuffer->Des();
-    aMessage.ReadL(1, bufPtr);
-    
-    TInt lStatus = KErrNone;
+    aMessage.ReadL(1, bufPtr);    
     
     TRAPD(lErr, lStatus = iServer.PerformCleanupL(lBuffer, lChangeArray, lParamValArray));
     
@@ -1601,8 +1605,10 @@
     
     lParamValArray.ResetAndDestroy();
     CleanupStack :: PopAndDestroy(3); // lParamIDArray lParamValArray lBuffer    
+    Dprint((_L("[CSCPSession]-> HandleCleanupL() <<<")));
     return lStatus;
 }
+
 TInt CSCPSession :: HandleSetALPeriodL( const RMessage2& aMessage ) {
     Dprint((_L("[CSCPSession]-> HandleSetParamMessageL() >>>")));
     TBool oldALState = EFalse;
--- a/terminalsecurity/SCP/SCPTimestampPlugin/src/SCPTimestampPlugin.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/SCPTimestampPlugin/src/SCPTimestampPlugin.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -26,7 +26,6 @@
 #include <bautils.h>
 #include <hal.h>
 #include <AknGlobalNote.h>
-#include <AknGlobalConfirmationQuery.h>
 // For wipe
 //#include <StarterClient.h>
 //#include <sysutil.h>
@@ -583,27 +582,6 @@
         if ( ( IsAfter( KSCPLastChangeTime, iExpiration, KSCPTypeDays ) == KSCPIsAfter ) ||
              ( expireNow ) )
             {
-            // Force password change                        
-            
-            HBufC16* resText = NULL;
-            TRAPD( err, resText = LoadResourceL( R_SET_SEC_CODE_AGING ) );         
-            FormatResourceString(*resText);        
-            if ( err == KErrNone ) // If this fails, go on anyway to signal the psw change
-                {
-    	        TPtr16 bufDes = resText->Des();
-                
-                TRAP_IGNORE(
-                    CAknGlobalNote* note = CAknGlobalNote::NewLC();
-    		        note->ShowNoteL( EAknGlobalWarningNote, bufDes );
-    		        CleanupStack::PopAndDestroy( note );
-    		        );    	        
-    	        
-    	        // Wait here a while so the dialog won't appear on top of the note
-                User::After( KSCPNoteTimeout ); 
-                
-                delete resText;
-                }
-            
             // Refill the parameters to inform the client that the password
             // should be changed.
             aRetParams = CSCPParamObject::NewL(); 
--- a/terminalsecurity/SCP/inc/SCPLockCode.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/SCP/inc/SCPLockCode.h	Thu Aug 19 10:44:50 2010 +0300
@@ -36,7 +36,13 @@
  * Default value: 12345
 */
 const TUint32 KSCPLockCodeDefaultLockCode = 0x00000001;
-
+/**
+ *
+ * The value assigned to this key is used to get and set ifits startup
+ * Possible values: 0 or 1
+ * Default value: 0
+*/
+const TUint32 KSCPStartupQuery = 0x00000002;
 
 #endif// End of File
 
--- a/terminalsecurity/client/BWINS/TerminalControlu.def	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/client/BWINS/TerminalControlu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -60,4 +60,5 @@
 	?GetPasscodeMinSpecialCharacters@RTerminalControlSession@@QAEHAAJ@Z @ 59 NONAME ; int RTerminalControlSession::GetPasscodeMinSpecialCharacters(long &)
 	?GetPasscodeDisallowSimple@RTerminalControlSession@@QAEHAAH@Z @ 60 NONAME ; int RTerminalControlSession::GetPasscodeDisallowSimple(int &)
 	?SetPasscodeDisallowSimple@RTerminalControlSession@@QAEHH@Z @ 61 NONAME ; int RTerminalControlSession::SetPasscodeDisallowSimple(int)
+	?ResetDeviceLockParameters@RTerminalControl3rdPartySession@@QAEHXZ @ 62 NONAME ; int RTerminalControl3rdPartySession::ResetDeviceLockParameters(void)
 
--- a/terminalsecurity/client/eabi/TerminalControlu.def	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/client/eabi/TerminalControlu.def	Thu Aug 19 10:44:50 2010 +0300
@@ -60,4 +60,5 @@
 	_ZN23RTerminalControlSession31SetPasscodeMinSpecialCharactersEl @ 59 NONAME
 	_ZN23RTerminalControlSession25GetPasscodeDisallowSimpleERi @ 60 NONAME
 	_ZN23RTerminalControlSession25SetPasscodeDisallowSimpleEi @ 61 NONAME
+	_ZN31RTerminalControl3rdPartySession25ResetDeviceLockParametersEv @ 62 NONAME
 
--- a/terminalsecurity/client/src/TerminalControlClient.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/client/src/TerminalControlClient.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -1317,4 +1317,9 @@
     return SendReceive( E3rdPartySetterGet, args1 );
     }
 
+EXPORT_C TInt RTerminalControl3rdPartySession :: ResetDeviceLockParameters() {
+    RDEBUG("RTerminalControl3rdPartySession::SetDeviceLockParameter");
+    TIpcArgs args1;
+    return SendReceive(E3rdPartySetterReset, args1);
+}
 
Binary file terminalsecurity/conf/Keys_SCPLockCode.confml has changed
Binary file terminalsecurity/conf/Keys_SCPLockCode_2002677B.crml has changed
--- a/terminalsecurity/inc/TerminalControlClientServer.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/inc/TerminalControlClientServer.h	Thu Aug 19 10:44:50 2010 +0300
@@ -97,6 +97,7 @@
 	E3rdPartySetterGet,
 	E3rdPartySetterGetSize,
 	E3rdPartySetterSet,
+	E3rdPartySetterReset
 	};
 
 #endif// __TERMINALCONTROLCLIENTSERVER_H__
--- a/terminalsecurity/server/inc/TerminalControlServer.h	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/server/inc/TerminalControlServer.h	Thu Aug 19 10:44:50 2010 +0300
@@ -158,6 +158,7 @@
 	void                StopProcessByFullNameL  ( const TDesC8& aName );
     TBool               GetPasscodePolicyL      ( );
     void                SetPasscodePolicyL      ( TBool aIsSet );
+    void                ResetParametersL(TInt32 aAppID);
 
 private:
 	void 				SetIntValueL( TInt avalue, TInt aSCPCommandEnum );
--- a/terminalsecurity/server/src/TerminalControlServer.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/server/src/TerminalControlServer.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -1195,5 +1195,14 @@
             ,policySet, this->Message().SecureId().iId));
     }
 
+void CTerminalControlServer :: ResetParametersL(TInt32 aAppID) {
+    RDEBUG("CTerminalControlServer::ResetParametersL >>>");
+    RArray <TUid> lAppIdArray;
+    CleanupClosePushL(lAppIdArray);
+    lAppIdArray.AppendL(TUid :: Uid(aAppID));
+    User :: LeaveIfError(iSCPClient.PerformCleanupL(lAppIdArray));
+    CleanupStack :: PopAndDestroy(1); //lAppIdArray
+    RDEBUG("CTerminalControlServer::ResetParametersL <<<");
+}
 // ----------------------------------------------------------------------------------------
 // End of file
--- a/terminalsecurity/server/src/TerminalControlSession.cpp	Thu Jul 15 19:36:11 2010 +0300
+++ b/terminalsecurity/server/src/TerminalControlSession.cpp	Thu Aug 19 10:44:50 2010 +0300
@@ -177,6 +177,10 @@
             case E3rdPartySetterSet:
             SetDeviceLockParameterL( aMessage );
             break;
+			
+            case E3rdPartySetterReset:
+                Server().ResetParametersL(aMessage.SecureId().iId);
+                break;
             }
         }