Revision: 201038 RCL_3 PDK_3.0.4
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 13 Oct 2010 15:01:35 +0300
branchRCL_3
changeset 55 ea98413ce11f
parent 49 10852b179f64
Revision: 201038 Kit: 201041
layers.sysdef.xml
locationsystemui/locationsysui/help/data/xhtml.zip
locationsystemui/locationsysui/locsuplsettingsui/data/locsuplservereditor.rss
locationsystemui/locationsysui/locsuplsettingsui/data/locsuplsettingsui.rss
locationsystemui/locationsysui/locsuplsettingsui/group/locsuplsettings.mmp
locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplservereditor.h
locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsadapter.h
locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingslbmodel.h
locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsuiengine.h
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplservereditor.cpp
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettings.cpp
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsadapter.cpp
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingscontainer.cpp
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingslbmodel.cpp
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp
locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsview.cpp
locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosPrivacyNotifierExtension.h
locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosRequestHandler.h
locsrv_plat/location_settings_launch_api/inc/locsettingsuiclient.h
locsrv_plat/query_and_notification_api/inc/EPos_CPosPrivacyNotifier.h
supl/group/bld.inf
supl/locationomasuplprotocolhandler/group/bld.inf
supl/locationomasuplprotocolhandler/notifier/notifier/data/epos_omasuplnotifier.rss
supl/locationomasuplprotocolhandler/protocolhandler/bwins/eposomasuplprotocolhandleru.def
supl/locationomasuplprotocolhandler/protocolhandler/eabi/eposomasuplprotocolhandleru.def
supl/locationomasuplprotocolhandler/protocolhandler/group/omasuplprotocolhandler.mmp
supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplprotocolmanager.h
supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplsettings.h
supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplprotocolmanager.cpp
supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplsettings.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/eabi/eposomasuplprotocolhandler1u.def
supl/locationomasuplprotocolhandler/protocolhandlerver1/group/omasuplprotocolhandler1.mmp
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplconnrequestor.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplfallbackhandler.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplprotocolmanager1.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplsession.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplsettingslauncher.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplstartstate.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplstate.h
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplconnrequestor.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplendstate.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasupletel.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplfallbackhandler.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplinitstate.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplposinitstate.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplprotocolmanager1.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsettingslauncher.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplstartstate.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver2/eabi/eposomasuplprotocolhandler2u.def
supl/locationomasuplprotocolhandler/protocolhandlerver2/group/omasuplprotocolhandler2.mmp
supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplconnrequestor.h
supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplprotocolmanager2.h
supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplsession2.h
supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplsettings.h
supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplstate.h
supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasupletel.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplinitstate.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplprotocolmanager2.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsession2.cpp
supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsettings.cpp
supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler.iby
supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler_resource.iby
supl/locationsuplfw/conf/suplsettings.confml
supl/locationsuplfw/conf/suplsettings_102073D6.crml
supl/locationsuplfw/gateway/inc/epos_csuplipcsubsession.h
supl/locationsuplfw/gateway/inc/epos_csuplsessionmanager.h
supl/locationsuplfw/gateway/inc/epos_csuplsessionrequest.h
supl/locationsuplfw/gateway/src/epos_csuplipcsession.cpp
supl/locationsuplfw/gateway/src/epos_csuplipcsubsession.cpp
supl/locationsuplfw/gateway/src/epos_csuplserver.cpp
supl/locationsuplfw/gateway/src/epos_csuplsessionmanager.cpp
supl/locationsuplfw/gateway/src/epos_csuplsessionrequest.cpp
supl/locationsuplfw/protocolhandlerapi/bwins/epossuplprotocolhandlerpluginu.def
supl/locationsuplfw/protocolhandlerapi/eabi/epossuplprotocolhandlerpluginu.def
supl/locationsuplfw/protocolhandlerapi/group/epos_suplprotocolhandlerplugin.mmp
supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplconnection.h
supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplprotocolmanagerbase.h
supl/locationsuplfw/protocolhandlerapi/src/epos_csuplconnection.cpp
supl/locationsuplfw/settingsapi/group/bld.inf
supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsinternalcrkeys.h
supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsnotifier.h
supl/locationsuplfw/settingsapi/src/epos_csuplsettings.cpp
supl/locationsuplfw/settingsapi/src/epos_csuplsettingsengine.cpp
supl/locationsuplfw/settingsapi/src/epos_csuplsettingsnotifier.cpp
supl/locationsuplfw/terminalinitiationapi/bwins/epos_suplterminitiationu.def
supl/locationsuplfw/terminalinitiationapi/eabi/epos_suplterminitiationu.def
supl/locationsuplfw/terminalinitiationapi/group/bld.inf
supl/locationsuplfw/terminalinitiationapi/group/epos_suplterminalapi.mmp
supl/locationsuplfw/terminalinitiationapi/inc/epos_suplgeocellinfo.h
supl/locationsuplfw/terminalinitiationapi/inc/epos_suplterminalinternal.h
supl/locationsuplfw/terminalinitiationapi/inc/epos_suplterminalipc.h
supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalinternal.cpp
supl/locationsuplfw/utilities/src/epos_csupltrace.cpp
supl/supltiapiimplementation/src/lbssupltirequestmanager.cpp
--- a/layers.sysdef.xml	Wed Sep 15 12:40:28 2010 +0300
+++ b/layers.sysdef.xml	Wed Oct 13 15:01:35 2010 +0300
@@ -14,11 +14,6 @@
        mrp="" bldFile="&layer_real_source_path;/supl/locationomasuplprotocolhandler/asnpluginimplementation/group"
        filter="dfs_build"  name="lodo_locationsrv_supl_asnpluginimplementation>"  />
      </module>
-     <module name="locationsupllocinfoconverter"> 
-     	<unit unitID="lodo.locationsrv.supl.locationsupllocinfoconverter"
-       mrp="" bldFile="&layer_real_source_path;/supl/locationsupllocinfoconverter/group"
-       filter="dfs_build"  name="lodo_locationsrv_supl_locationsupllocinfoconverter"  />
-     </module>
      <module name="asnpluginimplementationver2"> 
      	<unit unitID="lodo.locationsrv.supl.asnpluginimplementationver2"
        mrp="" bldFile="&layer_real_source_path;/supl/locationomasuplprotocolhandler/asnpluginimplementationver2/group"
Binary file locationsystemui/locationsysui/help/data/xhtml.zip has changed
--- a/locationsystemui/locationsysui/locsuplsettingsui/data/locsuplservereditor.rss	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/data/locsuplservereditor.rss	Wed Oct 13 15:01:35 2010 +0300
@@ -70,6 +70,10 @@
         	},
         MENU_ITEM	
         	{	
+        	command = ELocServerEditorChange; 	txt = qtn_loc_server_options_change; 	flags = EEikMenuItemAction;
+        	},
+        MENU_ITEM	
+        	{	
         	command = ELocServerEditorRemove; 	txt = qtn_loc_detail_options_delete; 	flags = EEikMenuItemSpecific;
         	},
         MENU_ITEM	
@@ -104,21 +108,6 @@
     form 	= 	r_suplserver_editor_form;
 	}
 
-//----------------------------------------------------
-// RESOURCE DIALOG r_suplserver_editor_form_dialog_noap
-// Form dialog to create an event
-//----------------------------------------------------
-//
-RESOURCE DIALOG r_suplserver_editor_form_dialog_noap
-    {
-    flags   =   EEikDialogFlagNoDrag | EEikDialogFlagFillAppClientRect |
-                EEikDialogFlagNoTitleBar | EEikDialogFlagButtonsRight |
-                EEikDialogFlagCbaButtons | EEikDialogFlagNoBorder |
-                EEikDialogFlagWait;
-    buttons =   r_suplserver_editor_options_edit_back;
-    form    =   r_suplserver_editor_form_noap;
-    }
-
 //----------------------------------------------------  
 // RESOURCE CBA r_suplserver_editor_options_nomsk_back
 // CBA for SUPL Settings UI view.
@@ -204,7 +193,7 @@
             type		=	EEikCtEdwin;
             prompt		=	qtn_loc_server_iap;
             id			=	ELocSuplServerIdAccessPoint;
-            itemflags 	= 	EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys | EEikDlgItemAsLabel | EEikEdwinReadOnly;
+            itemflags 	= 	EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys | EEikDlgItemAsLabel;
             control		=	EDWIN 
                 {       
                 flags 		= 	EEikEdwinResizable | EEikEdwinReadOnly | EEikEdwinAvkonDisableCursor | EEikEdwinNoAutoSelection ;
@@ -241,57 +230,6 @@
 	}
     
 //----------------------------------------------------
-// RESOURCE DIALOG r_suplserver_editor_form_noap
-// Form to create/view a server
-//----------------------------------------------------
-//
-RESOURCE FORM r_suplserver_editor_form_noap
-    {
-    flags   =  EEikFormUseDoubleSpacedFormat;
-    items   =
-        {
-        DLG_LINE
-            {
-            type        =   EEikCtEdwin;
-            prompt      =   qtn_loc_server_address_name;
-            id          =   ELocSuplServerIdServerAddr;
-            itemflags   =   EEikDlgItemTakesEnterKey | EEikDlgItemOfferAllHotKeys;
-            control     =   EDWIN 
-                {
-                flags       =   EEikEdwinJustAutoCurEnd | EEikEdwinResizable | EEikEdwinNoLineOrParaBreaks  ;
-                width       =   16; 
-                maxlength   =   255;
-                lines       =   10;
-                };
-            },
-               
-        DLG_LINE
-            {
-            type = EEikCtEdwin;
-            prompt = qtn_loc_server_usage;
-            id = ELocSuplServerIdUsageInHomeNw;
-            itemflags = EEikDlgItemTakesEnterKey;
-            control = EDWIN
-                {
-                flags = EEikEdwinNoHorizScrolling | EEikEdwinResizable |
-                EEikEdwinNoAutoSelection | EEikEdwinReadOnly|
-                EEikEdwinAvkonDisableCursor|EEikEdwinAvkonNotEditable |EEikEdwinDisplayOnly;
-                //         maxlength = ECalenAbsoluteMaxTextEditorLength;
-                default_case = EAknEditorTextCase;
-                allowed_case_modes = EAknEditorAllCaseModes;
-                numeric_keymap = EAknEditorStandardNumberModeKeymap;
-                special_character_table = R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG;
-                avkon_flags = EAknEditorFlagUseSCTNumericCharmap |
-                EAknEditorFlagDefault |
-                EAknEditorFlagEnablePictographInput;
-                // let Avkon decide which is maximum number of lines
-                // It's based on layout.
-                max_view_height_in_lines = 0;
-                };
-            }
-        };
-    }
-//----------------------------------------------------
 // RESOURCE ARRAY r_suplserver_editor_usageinhomenw_array
 // array for usage in homw nw pop-up dialog
 //----------------------------------------------------
@@ -333,6 +271,33 @@
         };
     }
 
+//----------------------------------------------------  
+// RESOURCE CBA r_suplserver_editor_options_define_back
+// CBA for SUPL Editor UI view.
+//----------------------------------------------------
+//   
+RESOURCE CBA r_suplserver_editor_options_define_done
+    {
+    flags 	= 0;
+    buttons = 
+        {
+        CBA_BUTTON 
+            {
+            id 	= EAknSoftkeyOptions; 
+            txt = text_softkey_option;
+            },
+        CBA_BUTTON 
+            {
+            id 	= EAknSoftkeyDone; 
+            txt = text_softkey_done;
+            },
+        CBA_BUTTON
+            {
+            id 	= ELocServerEditorMSKDefine; 
+            txt = qtn_msk_define;
+            }
+        };
+    }
 
 //----------------------------------------------------  
 // RESOURCE CBA r_suplserver_editor_options_change_done
--- a/locationsystemui/locationsysui/locsuplsettingsui/data/locsuplsettingsui.rss	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/data/locsuplsettingsui.rss	Wed Oct 13 15:01:35 2010 +0300
@@ -43,6 +43,15 @@
 	{
 	}
 
+//----------------------------------------------------
+// r_loc_supl_iap_query
+// Confirmation Query prompt text for SUPL Settings
+//----------------------------------------------------
+//
+RESOURCE TBUF r_loc_supl_iap_query
+    {
+    buf = qtn_loc_supl_iap_query;
+    }
     
 //----------------------------------------------------
 // r_suplsettings_caption
@@ -174,12 +183,12 @@
     {
     items		=
         {
-            MENU_ITEM 
-                        { 
-                        command = ELocSuplOpen; 
-                        txt     = qtn_loc_supl_options_open; 
-                        flags = EEikMenuItemAction;
-                        },
+        MENU_ITEM 
+            { 
+            command = ELocSuplChange; 
+            txt 	= qtn_loc_server_options_change; 
+            flags = EEikMenuItemAction;
+            },
         MENU_ITEM
             {
             command = ELocSuplClearSession;
@@ -221,7 +230,16 @@
     buf = qtn_loc_supl_title;
     }
     
-
+//------------------------------------------------------------------------------  
+// r_loc_supl_use
+// List settings item description for SUPL settings usage.
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_loc_supl_use
+    {
+    buf = qtn_loc_supl_server_use;
+    }
+    
 //------------------------------------------------------------------------------   
 // r_loc_supl_server_detail
 // List settings item caption for multiple SUPL servers
@@ -262,6 +280,76 @@
     buf = qtn_loc_supl_multiple_services;
     } 
 
+//------------------------------------------------------------------------------
+// r_loc_supl_usage_settings
+// Settings page for manipulating SUPL settings usage.
+//------------------------------------------------------------------------------
+//
+RESOURCE AVKON_SETTING_PAGE r_loc_suplusage_settings
+    { 
+    label 				= 	qtn_loc_supl_lbl_server_use;
+    softkey_resource 	= 	R_AVKON_SOFTKEYS_CANCEL;
+    type 				= 	EAknSetListBox;
+    editor_resource_id 	= 	r_loc_suplusage_settings_listbox;
+    }
+
+//------------------------------------------------------------------------------
+// r_loc_suplusage_settings_listbox 
+// Set Settings text
+//------------------------------------------------------------------------------
+//
+RESOURCE LISTBOX r_loc_suplusage_settings_listbox 
+    {
+    flags	= EEikListBoxMultipleSelection;
+    }
+    
+//------------------------------------------------------------------------------ 
+// r_loc_supl_automatic
+// Settings Item for SUPL usage
+// This value denotes that SUPL would be used automatically when the user is in his
+// home network. When the user is roaming he would be prompted with a query for
+// using SUPL.
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_loc_supl_automatic
+    {
+    buf = qtn_loc_supl_automatic;
+    }
+
+//------------------------------------------------------------------------------ 
+// r_loc_supl_automatic
+// Settings Item for SUPL usage
+// This value denotes that SUPL would be used automatically when the user is in his
+// home network. When the user is roaming he would be prompted with a query for
+// using SUPL.
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_loc_supl_home_automatic
+    {
+    buf = qtn_loc_supl_home_automatic;
+    }
+    
+//------------------------------------------------------------------------------
+// r_loc_supl_ask
+// Settings Item for SUPL usage
+// This value denotes that the user would always be prompted before using SUPL.
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_loc_supl_ask
+    {
+    buf = qtn_loc_supl_ask;
+    }  
+
+//------------------------------------------------------------------------------  
+// r_loc_supl_disabled
+// Settings Item for SUPL usage
+// This value denotes that SUPL would not be used at all.
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_loc_supl_disabled
+    {
+    buf = qtn_loc_supl_disabled;
+    }
 
 //------------------------------------------------------------------------------   
 // r_loc_supl_server_detail_title
@@ -313,7 +401,43 @@
     buf = qtn_loc_server_iap;
     }   
 
-           
+//------------------------------------------------------------------------------  
+// r_loc_no_ap_defined
+// No IAP defined text
+//------------------------------------------------------------------------------
+//
+RESOURCE TBUF r_loc_no_ap_defined
+    {
+    buf		= qtn_netw_info_no_iap_defined;
+    }  
+
+//------------------------------------------------------------------------------  
+// r_general_note
+// Note to be displayed when no IAPs are defined
+//------------------------------------------------------------------------------
+//    
+RESOURCE DIALOG r_general_note
+    {
+    flags	=	EEikDialogFlagNoDrag | EEikDialogFlagNoTitleBar |
+          		EEikDialogFlagCbaButtons | EEikDialogFlagWait;
+    buttons	=	R_AVKON_SOFTKEYS_EMPTY;
+    items	=
+        {
+        DLG_LINE
+            {
+            type	=	EAknCtNote;
+            id 		= EGeneralNote;
+            control	= AVKON_NOTE
+                {
+                layout 			= EGeneralLayout;
+                singular_label 	= "";
+                plural_label 	= "";
+                animation 		= R_QGN_NOTE_INFO_ANIM;
+                };
+            }
+        };
+    }
+                     
 //------------------------------------------------------------------------------
 // r_suplsettings_server_view
 // SUPL Settings Server view
--- a/locationsystemui/locationsysui/locsuplsettingsui/group/locsuplsettings.mmp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/group/locsuplsettings.mmp	Wed Oct 13 15:01:35 2010 +0300
@@ -95,4 +95,5 @@
 LIBRARY 	    	cmmanager.lib			// For Connection Settings API
 LIBRARY		    	flogger.lib
 
+
 // End of File
--- a/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplservereditor.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplservereditor.h	Wed Oct 13 15:01:35 2010 +0300
@@ -98,13 +98,7 @@
          * Executes the Dialog
          */
         TInt ExecuteLD();
-        
-        /**
-         * Sets the value of iIsAccessPointDefined based on whether the
-         * access point is preconfigured for a server
-         * @param[in] aEnabled - Value to be set for the variable iIsAccessPointDefined
-         */
-        void SetAccessPointEnabled(TBool aEnabled);
+	
 	public: // from MSuplServerEditorObserver
 	
 	    /*
@@ -288,11 +282,6 @@
 	    	* It determines if form is modified by user
 	    	*/	    
 	    TBool							iIsModified;
-	    
-	    /**
-	     * Determines whether the access point is preconfigured for the server
-	     */
-	    TBool  iIsAccessPointDefined;
     };
 
 #endif // __LOCSUPLSERVER_EDITOR_H__
--- a/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsadapter.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsadapter.h	Wed Oct 13 15:01:35 2010 +0300
@@ -45,6 +45,17 @@
                          		public MSuplSessionObserver
     {
     public:
+        /**
+         * SUPL Usage enumerations which display the order of display
+         * in the User interface
+         */
+         enum TLocSuplUsage
+            {
+            ELocSuplAutomatic = 0,
+            ELocSuplAutomaticatHome,
+            ELocSuplAlwaysAsk,
+            ELocSuplDisable
+            };               
     public:
         /**
  		 * Static Two phase contructor that instantiates the CLocSUPLSettingsAdapter
@@ -83,6 +94,33 @@
          */
         void CancelInitialize();
         
+        /**
+         * Sets the SUPL Settings usage.
+         *
+         * @param   aIndex   Index of the SUPL settings usage item.
+         */        
+        void SetSuplUsageL( const TLocSuplUsage    aIndex );
+
+        /**
+         * Obtains the SUPL Settings usage.
+         *
+         *  @param   aSuplUsage     SUPL settings usage string.
+         */  
+        void GetSuplUsageL( TDes&    aSuplUsage );
+        
+        /**
+         * Obtains the SUPL usage
+         * 
+         * @return The SUPL usage
+         */
+        TInt GetSuplUsage();
+        
+        /**
+         * Obtains the Supl Settings usage index
+         * 
+         * @return TLocSuplUsage SUPL settings usage index 
+         */
+        TLocSuplUsage GetSuplUsageIndex();
         
 
         /***************************************************************************
@@ -401,6 +439,14 @@
         void GenerateHslpAddressFromImsi(TDes& aIMSIAddress );
 
 
+    public: // Accessor functions for SUPL settings usage strings
+        const TDesC& Automatic();
+        
+        const TDesC& AutomaticAtHome();
+        
+        const TDesC& AlwaysAsk();
+        
+        const TDesC& Disable();
               	
 	public:
 	
@@ -444,6 +490,29 @@
          */
         CSuplSettings*                      iSUPLSettings;
         
+        /**
+         * SUPL settings usage is automatic
+         * Owns
+         */
+        HBufC*                              iAutomatic;
+        
+        /**
+         * SUPL settings usage is automatic in home network
+         * Owns
+         */
+        HBufC*                              iAutomaticatHome;
+        
+        /**
+         * SUPL settings usage needs a user confirmation
+         * Owns
+         */
+        HBufC*                              iAsk;
+        
+        /**
+         * SUPL is disabled.
+         * Owns.
+         */
+        HBufC*                              iDisable;
         
         /**
          * Observer for the specific SUPL session.
--- a/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingslbmodel.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingslbmodel.h	Wed Oct 13 15:01:35 2010 +0300
@@ -45,7 +45,8 @@
         */
         enum	TSUPLSettingsItemId        
             {
-            ESUPLSettingsServersDetail = 0,
+            ESUPLSettingsUsage = 0,
+            ESUPLSettingsServersDetail,
             ESUPLSettingsActiveSessions
             };
             	
@@ -111,6 +112,13 @@
          */
         void ConstructL();
         
+        /**
+         * Packs the SUPL settings usage to the end of the buffer passed.
+         *
+         * @param aPtr Buffer to which the Supl settings usage point needs to be 
+         *            appended.         
+         */
+        void AppendSuplUsage( TDes16& aPtr ) const;
 
         /**
          * Packs the Server Address to the end of the buffer passed.
@@ -141,6 +149,11 @@
          */
         HBufC16*                    iServerDetailTitle;
         
+        /**
+         * Title text for SUPL usage.
+         * Owns.
+         */
+        HBufC16*                    iSuplUsageTitle;
         
         /**
          * SUPL Active Sessions count.
@@ -153,12 +166,22 @@
          */
         HBufC16*                    iSuplServerDetail;
         
+        /**
+         * Default SUPL usage.
+         * Owns.
+         */
+        HBufC16*                    iDefaultSuplUsage;
 
         /**
          * Reference the SUPL Settings Engine
          */   
         CLocSUPLSettingsUiEngine&   iEngine;
         
+        /** 
+         * Boolean value to indicate whethere SUPL settings usage
+         * is present.
+         */
+        TBool                       iSuplUsagePresent;
                 
         /**
          * Boolean value to indicate whether SUPL address field
--- a/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsuiengine.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsuiengine.h	Wed Oct 13 15:01:35 2010 +0300
@@ -39,6 +39,7 @@
 class CLocSUPLServerEditor;
 class MSuplServerEditorObserver;
 class MLocSUPLSettingsSessionObserver;
+class CCmApplicationSettingsUi;
 
 // Class Declaration
 /**
@@ -50,7 +51,8 @@
  * It further observers the SUPL Settings UI for any changes to the Settings
  * values.
  */
-class CLocSUPLSettingsUiEngine :  public MLocSUPLSettingsAdapterObserver
+class CLocSUPLSettingsUiEngine : public CActive, 
+                                 public MLocSUPLSettingsAdapterObserver
     {
     public:
         /**
@@ -83,7 +85,18 @@
          */
         virtual ~CLocSUPLSettingsUiEngine();
        
+        /** 
+         * Launches the confirmation query to select IAP
+		 *
+		 */
+		void SelectConnectionL();
         
+		/**
+		 * Launches the Access Point Configurator dialog
+		 *
+		 */
+		void LaunchApConfiguratorL( TInt64 aSlpId, 
+				MSuplServerEditorObserver* aEditorObserver );
 		
         /** 
          * Opens the exisitng server with its attributes
@@ -97,12 +110,29 @@
 		 */
 		TInt SlpCount();
 
+		/**
+		 * Launches the SUPL Usage configurator
+		 */
+		void LaunchSuplUsageConfiguratorL();
 		
         /**
 		 * Closes the running Settings UI prematurely.
 		 */
 		void Close();
 		
+        /**
+         * Obtains the SUPL Settings usage.
+         *
+         * @return TPtr16     SUPL settings usage.
+         */  
+        TPtr16 GetSuplUsageL();
+        
+        /**
+         * Obtains the SUPL usage
+         *
+         * @return The SUPL Usage value
+         */
+        TInt   GetSuplUsage();			
 		 
         /**
 		 * Creates a new server entry in Supl Settings.
@@ -288,15 +318,31 @@
         void SetTempAPValue( TUint32 aAccessPoint);
         
         /**
+         * Launches the IAP Dialog
+         */
+        void LaunchIAPDialogL( );
+        
+        /**
          * Generates IMSI address
          */
         void GenerateHslpAddressFromImsi(TDes& aIMSIAddress );
+        
 	public:     		
 		/**
 		 * Inherited from MLocSUPLSettingsAdapterObserver
 		 */
 		void HandleSuplSettingsChangeL( TLocSUPLSettingsEvent aEvent );
 				 
+    protected:
+        /**
+         * Inherited from CActive
+         */
+        void RunL();
+        
+        /**
+         * Inherited from CActive
+         */
+        void DoCancel();
              
     private:
         /**
@@ -319,12 +365,25 @@
         TUint ConvertIAPNameToIdL( const TDesC&      aIAPName );
        
         /**
+         * Updates Access point for ALL SLPs which do not have AP defined.
+         *
+         * @param aAccessPoint Access point
+         */
+        void UpdateMissingIAPL(const TDesC& aAccessPoint );
+       
+        /**
          * Displays an Error note
          *
          * @param aError Error ID
          */
         void DisplayErrorL( TInt aError );
         
+        /**
+         * Displays an Info note
+         *
+         * @param None
+         */
+        TInt ShowNoteL();                               
         
         /**
          * Returns value of last highlighted AP
@@ -343,6 +402,12 @@
          */
         CLocSUPLSettingsAdapter*       	iSUPLSettingsAdapter;
         
+        /**
+         * Flag to denote whether any dialog is currently active
+         * Used in the Cancel method. If there are any requests 
+         * outstanding then they have to be cancelled
+         */
+        TBool                   		iDialogActive;
                         
         /**
          * Temporary Buffer for returning values to the Accessor 
@@ -363,6 +428,10 @@
          */
         HBufC*                  		iSettingsBuffer;
         
+        /**
+         * Pointer to the Settings Buffer
+         */
+        TPtr                    		iSettingsBufferPtr;
         
         /**
          * Standard Text resolver for converting Error codes to 
@@ -381,12 +450,28 @@
          */
         TInt                        	iLaunchParams;
         
+        /**
+         * Akn Global confirmation query
+         * Owns
+         */
+        CAknGlobalConfirmationQuery*    iConfirmQuery;
+        
+        /**
+         * Access point query
+         * Owns
+         */
+        CCmApplicationSettingsUi*    iConnectionMgmtQuery;
 
         /**
          * Flag to denote whether access point selection requested or not
          */
         TBool                   		iRequestIapSelect;
 
+        /**
+         * SUPL Servers SLP ID to get and set the server attributes.
+         * Owns.
+         */
+        TInt64							iCurrentSlpId;
                         
         /**
          * Supl Server Editor 
@@ -394,13 +479,18 @@
          */
         CLocSUPLServerEditor*			iEditorDlg;
 
+        /**
+         * Editor Observer
+         * Owns
+         */
+        MSuplServerEditorObserver*		iEditorObserver;
         
         /*
          * Current highlighted AP
          * Set to -1 if no changes made in edit dialog box, Set to Uid of access 
          * point if changes made 
          */
-        TUint32 iTempAP;
+        TInt iTempAP;
         
     };
     
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplservereditor.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplservereditor.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -69,7 +69,7 @@
         					TBool aIsEditable,
                             CLocSUPLSettingsUiEngine&       aEngine,
         					TInt64 aSlpId
-		):iIsEditMode( aIsEditable ), iEngine( aEngine ), iSlpId( aSlpId ), iIsAccessPointDefined(EFalse)
+		):iIsEditMode( aIsEditable ), iEngine( aEngine ), iSlpId( aSlpId )
     {
     if( aIsEditable )
     	{
@@ -184,10 +184,28 @@
 				case ELocSuplServerIdServerAddr:
 					{
 					aMenuPane->SetItemDimmed( ELocServerEditorDefine, 	ETrue );
+		       		aMenuPane->SetItemDimmed( ELocServerEditorChange, 	ETrue );   
 					break;
 					}
 				case ELocSuplServerIdAccessPoint:
 					{
+			       	TInt isIapChanged = EFalse;
+			        CEikEdwin* apSelector = 
+			        			static_cast < CEikEdwin* > ( ControlOrNull( IdOfFocusControl() ) );           
+			        if( apSelector )
+			            {  
+			            if( iIap->Length() > 0 ) 
+			            	isIapChanged = ETrue;
+			            } 
+			            
+			       	if( isIapChanged )
+			       		{
+			       		aMenuPane->SetItemDimmed( ELocServerEditorDefine, 	ETrue );
+			       		}
+			       	else
+			       		{
+			       		aMenuPane->SetItemDimmed( ELocServerEditorChange, 	ETrue );		       		
+			       		}				
 					break;
 					}
 				case ELocSuplServerIdUsageInHomeNw:
@@ -197,6 +215,8 @@
 		        	TBool editableFlag = ETrue;
 		        	if( iSlpId )
 		        		TRAP_IGNORE( iEngine.GetEditableFlagL( iSlpId, editableFlag ) );        				        	
+		        	if( editableFlag == EFalse )					
+						aMenuPane->SetItemDimmed( ELocServerEditorChange, 	ETrue );
 		        	
 					break;
 					}
@@ -234,6 +254,7 @@
         		}
 
 			aMenuPane->SetItemDimmed( ELocServerEditorDefine, 	ETrue );
+       		aMenuPane->SetItemDimmed( ELocServerEditorChange, 	ETrue );		       			    	
        		aMenuPane->SetItemDimmed( ELocServerEditorRemove, 	ETrue );		       			    	
 	    	}	        
         }
@@ -279,10 +300,22 @@
             TRAP_IGNORE( iEngine.SetServerEnabledFlagL( iSlpId, ETrue ) );
             break;
             }
+        case ELocServerEditorDefine:
+            {
+            TRAP_IGNORE( iEngine.LaunchApConfiguratorL( iSlpId, this ) );
+            break;
+            }
+        case ELocServerEditorChange:
         case ELocServerEditorMSKChange:
             {
             CEikEdwin* usageInHomeNWPopupFieldText = (CEikEdwin*) Control(
                     ELocSuplServerIdUsageInHomeNw);
+            if (IdOfFocusControl() == ELocSuplServerIdAccessPoint)
+                {
+                TRAP_IGNORE( iEngine.LaunchApConfiguratorL( iSlpId, this ) );
+                }
+            else
+                {
             HBufC* string;
                             string = StringLoader::LoadLC(
                                     R_LOC_SERVER_USAGEINHOMENETWORK_NO, iCoeEnv);
@@ -316,8 +349,9 @@
                             SetUsageinHomeNetwork(EFalse);
                             }
                         }
+                    }
                 CleanupStack::PopAndDestroy(string);
-                    }
+                }
             break;
             }
         case EAknCmdHelp:
@@ -429,6 +463,13 @@
             retVal = EFalse;
         	break;
         	}
+        case ELocServerEditorMSKDefine:
+        	{
+        	TRAP_IGNORE( iEngine.LaunchApConfiguratorL( iSlpId, this ) );
+            //dont close editor            
+            retVal = EFalse;
+        	break;
+        	}
         case ELocServerEditorMSKChange:
         	{
         	ProcessCommandL( ELocServerEditorMSKChange );
@@ -454,11 +495,9 @@
 				{
             	if( iIsNewServer ) 
             		{
-                    // iap name is always set as KNullDesC since defining the access point is 
-                    // not allowed while creating a new server manually
             		TRAPD( err, iEngine.AddNewServerL(
             								iServerAddress->Des(),
-            								KNullDesC,
+            								iIap->Des(),
             								iUsageInHomeNw ) );
             		if( err == KErrNone )
             			{
@@ -611,11 +650,11 @@
         usageInHomeNWPopupFieldText->GetText(des);
         if (!des.CompareC(string->Des()))
             {
-            iUsageInHomeNw = EFalse;
+            iUsageInHomeNw = ETrue;
             }
         else
             {
-            iUsageInHomeNw = ETrue;
+            iUsageInHomeNw = EFalse;
             }
         CleanupStack::PopAndDestroy(string);
         }
@@ -721,18 +760,10 @@
 // -----------------------------------------------------------------------------
 //
 TInt CLocSUPLServerEditor::ExecuteLD()
-    {
-    if (!iIsAccessPointDefined)
-        {
-        return CAknForm::ExecuteLD(R_SUPLSERVER_EDITOR_FORM_DIALOG_NOAP);
-        }
-    else
-        {
-        return CAknForm::ExecuteLD(R_SUPLSERVER_EDITOR_FORM_DIALOG);
-        }
+    {    
+	return CAknForm::ExecuteLD( R_SUPLSERVER_EDITOR_FORM_DIALOG );    	
     }
 
-
 // -----------------------------------------------------------------------------
 // CLocSUPLServerEditor::HandleControlStateChangeL
 // -----------------------------------------------------------------------------
@@ -785,6 +816,15 @@
 	DEBUG( + CLocSUPLServerEditor::LoadFormValuesFromDataL );
    	if( IsEditable() && iIsNewServer ) //if create new server
        	{
+       	CEikEdwin* apSelector = 
+        			static_cast < CEikEdwin* > ( ControlOrNull( ELocSuplServerIdAccessPoint ) );           
+       	if( apSelector )
+            {   
+            HBufC* apString = StringLoader::LoadL( R_LOC_SERVER_NONE );   
+            apSelector->SetTextL( apString );
+            delete apString;
+            }
+        apSelector->DrawNow();
 
         CEikEdwin* usageInHNWPopupFieldText = (CEikEdwin*) Control(
                 ELocSuplServerIdUsageInHomeNw);
@@ -830,7 +870,7 @@
 	        {
 	        // Error has occured 
 	        }  
-      
+     	
         CEikEdwin* serverAddress = 
         			static_cast < CEikEdwin* > ( ControlOrNull( ELocSuplServerIdServerAddr ) );           
         if( serverAddress )
@@ -841,24 +881,31 @@
         	serverAddress->DrawDeferred();
         	iServerAddress->Des().Copy( hslpAddr->Des() );
             } 
-        
-            if (iIsAccessPointDefined)
-            {
-            CEikEdwin* apSelector = static_cast<CEikEdwin*> (ControlOrNull(
-                    ELocSuplServerIdAccessPoint));
-            if (apSelector)
-                {
-                apSelector->SetTextL(iapName);
-                apSelector->DrawNow();
-                iIap->Des().Copy(iapName->Des());
-                }
-            }
-       
+
+        CEikEdwin* apSelector = 
+        			static_cast < CEikEdwin* > ( ControlOrNull( ELocSuplServerIdAccessPoint ) );           
+        if( apSelector )
+            {   
+            if( iapName->Length() > 0 )
+            	{
+            	apSelector->SetTextL( iapName );
+            	}
+            else
+            	{
+	            HBufC* apString = StringLoader::LoadL( R_LOC_SERVER_NONE ); 
+	            apSelector->SetTextL( apString );
+            	delete apString;
+            	}
+            	            
+        	apSelector->DrawNow();
+        	iIap->Des().Copy( iapName->Des() );
+            } 
+
         CEikEdwin* usageInHNWPopupFieldText = (CEikEdwin*) Control(
                 ELocSuplServerIdUsageInHomeNw);
         if (usageInHNWPopupFieldText)
             {
-            if (!usageInHomeNwFlag)
+            if (usageInHomeNwFlag)
                 SetUsageinHomeNetwork(EFalse);
             else
                 SetUsageinHomeNetwork(ETrue);
@@ -943,6 +990,22 @@
 	       		}
 	       	case ELocSuplServerIdAccessPoint:
 		       	{
+		       	TInt isIapChanged = EFalse;
+		        CEikEdwin* apSelector = 
+		        			static_cast < CEikEdwin* > ( ControlOrNull( IdOfFocusControl() ) );           
+		        if( apSelector && iIap )
+		            {   
+		            if( iIap->Length() > 0 )
+	            		isIapChanged = ETrue;
+		            } 
+		       	if( isIapChanged )
+		       		{
+		       		cba->SetCommandSetL( R_SUPLSERVER_EDITOR_OPTIONS_CHANGE_DONE );
+		       		}
+		       	else
+		       		{
+		       		cba->SetCommandSetL( R_SUPLSERVER_EDITOR_OPTIONS_DEFINE_DONE );		       		
+		       		}
 		       	break;	
 		       	}
 	       	case ELocSuplServerIdUsageInHomeNw:
@@ -1084,12 +1147,10 @@
     if (!IsEditable())
         {
         if (focusControl == ELocSuplServerIdUsageInHomeNw
-                || focusControl == ELocSuplServerIdServerAddr)
+                || ELocSuplServerIdServerAddr || ELocSuplServerIdAccessPoint)
             {
             ProcessCommandL(EAknFormCmdEdit);
             }
-        else
-            return;
         }
     else if (aEventID == MEikDialogPageObserver::EDialogPageTapped)
         {
@@ -1118,6 +1179,14 @@
                 }
             return;
             }
+        if (focusControl == ELocSuplServerIdAccessPoint)
+            {
+            if (iapEditor)
+                {
+                //Launch IAP Dialog
+                TRAP_IGNORE( iEngine.LaunchApConfiguratorL( iSlpId, this ) );
+                }
+            }
         }DEBUG( -CLocSUPLServerEditor::HandleDialogPageEventL );
     }
 
@@ -1148,15 +1217,4 @@
     CleanupStack::PopAndDestroy(string);
     }
 
-// -----------------------------------------------------------------------------
-// CLocSUPLServerEditor::SetAccessPointEnabled
-// 
-// -----------------------------------------------------------------------------
-//
-void CLocSUPLServerEditor::SetAccessPointEnabled (TBool aEnabled)
-    {
-    iIsAccessPointDefined = aEnabled;
-    }
-
-
 // End of file
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettings.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettings.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -543,8 +543,14 @@
 	            iAppUi.ActivateLocalViewL( iSettingsViewId );               
 	            }
 	        else if( ELocSUPLIAPSelection == iLaunchParams )
-	            {  
-	        // Do nothing,since there is no access point selection
+	            {    
+	            // Check if the User intended to Launch IAP confirmation
+	            iSettingsEngine->SelectConnectionL();
+	            }
+	        else if( ELocSuplIAPDialog == iLaunchParams )
+	            {    
+	            // Check if the User intended to Launch IAP Selection 
+	            iSettingsEngine->LaunchIAPDialogL();
 	            }
 	        else
 	            {
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsadapter.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsadapter.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -58,6 +58,17 @@
     delete iSUPLSettings;
     iSUPLSettings = NULL;
     
+    delete iAutomatic;
+    iAutomatic = NULL;
+    
+    delete iAutomaticatHome;
+    iAutomaticatHome = NULL;
+    
+    delete iAsk;
+    iAsk = NULL;
+    
+    delete iDisable;
+    iDisable = NULL;
 	DEBUG( - CLocSUPLSettingsAdapter::~CLocSUPLSettingsAdapter );	
     } 
 
@@ -99,6 +110,11 @@
     // Set the Observer for SUPL Sessions
     iSUPLSettings->SetSessionObserverL( *this );
     
+    // Load the SUPL settings usage strings
+    iAutomatic 			= StringLoader::LoadL( R_LOC_SUPL_AUTOMATIC );
+    iAutomaticatHome 	= StringLoader::LoadL( R_LOC_SUPL_HOME_AUTOMATIC );
+    iAsk 				= StringLoader::LoadL( R_LOC_SUPL_ASK );
+    iDisable 			= StringLoader::LoadL( R_LOC_SUPL_DISABLED );
     
     CActiveScheduler::Add( this );
 	DEBUG( - CLocSUPLSettingsAdapter::ConstructL );	
@@ -131,7 +147,210 @@
     Cancel();
     }
     
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsAdapter::SetSuplUsageL
+// ---------------------------------------------------------------------------
+//       
+void CLocSUPLSettingsAdapter::SetSuplUsageL( 
+            const CLocSUPLSettingsAdapter::TLocSuplUsage    aIndex )
+    {
+	DEBUG( + CLocSUPLSettingsAdapter::SetSuplUsageL );	
+    CSuplSettings::TSuplSettingsUsage value = CSuplSettings::ESuplUsageAlwaysAsk;
+    switch ( aIndex )
+        {
+        case ELocSuplAutomatic:
+            {
+            value = CSuplSettings::ESuplUsageAutomatic;
+            break;
+            }
+        case ELocSuplAutomaticatHome:
+            {
+            value = CSuplSettings::ESuplUsageHomeAutomatic;
+            break;
+            }
+        case ELocSuplAlwaysAsk:
+            {
+            value = CSuplSettings::ESuplUsageAlwaysAsk;
+            break;
+            }
+        case ELocSuplDisable:
+            {
+            value = CSuplSettings::ESuplUsageDisabled;
+            break;
+            }
+        default:
+            {
+            User::Leave( KErrNotFound );
+            break;    
+            }
+        }
 
+    // Write back to the SUPL settings API
+    TInt ret = iSUPLSettings->SetSuplUsage( value );            
+            
+    // If the Set failed, then Leave with the corresponding Error code
+    if( ret )
+        {
+        User::Leave ( ret );
+        }
+	DEBUG( - CLocSUPLSettingsAdapter::SetSuplUsageL );	
+    }
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsAdapter::GetSuplUsageL
+// ---------------------------------------------------------------------------
+//  
+void CLocSUPLSettingsAdapter::GetSuplUsageL( TDes&    aSuplUsage )
+    {
+	DEBUG( + CLocSUPLSettingsAdapter::GetSuplUsageL );	
+    CSuplSettings::TSuplSettingsUsage value = CSuplSettings::ESuplUsageAlwaysAsk;
+    User::LeaveIfError( iSUPLSettings->GetSuplUsage( value ));
+
+    switch ( value )
+        {
+        case CSuplSettings::ESuplUsageAutomatic:
+            {
+            if ( aSuplUsage.MaxLength() < iAutomatic->Des().Length())
+                {
+                User::Leave( KErrNoMemory );
+                }
+            aSuplUsage.Copy( *iAutomatic );
+            break;
+            }
+        case CSuplSettings::ESuplUsageHomeAutomatic:
+            {
+            if ( aSuplUsage.MaxLength() < iAutomaticatHome->Des().Length())
+                {
+                User::Leave( KErrNoMemory );
+                }
+            aSuplUsage.Copy( *iAutomaticatHome );          
+            break;
+            }
+        case CSuplSettings::ESuplUsageAlwaysAsk:
+            {
+            if ( aSuplUsage.MaxLength() < iAsk->Des().Length())
+                {
+                User::Leave( KErrNoMemory );
+                }            
+            aSuplUsage.Copy( *iAsk );
+            break;
+            }
+        case CSuplSettings::ESuplUsageDisabled:
+            {
+            if ( aSuplUsage.MaxLength() < iDisable->Des().Length())
+                {
+                User::Leave( KErrNoMemory );
+                }
+            aSuplUsage.Copy( *iDisable );
+            break;
+            }
+        default:
+            {
+            User::Leave( KErrNotSupported );
+            break;
+            }
+        }
+	DEBUG( - CLocSUPLSettingsAdapter::GetSuplUsageL );	
+    }
+
+// ---------------------------------------------------------------------------
+// TLocSuplUsage CLocSUPLSettingsAdapter::GetSuplUsage
+// ---------------------------------------------------------------------------
+// 
+TInt CLocSUPLSettingsAdapter::GetSuplUsage()
+    {
+	DEBUG( + CLocSUPLSettingsAdapter::GetSuplUsage TInt );	
+    CSuplSettings::TSuplSettingsUsage value = CSuplSettings::ESuplUsageAlwaysAsk;
+    TInt error = iSUPLSettings->GetSuplUsage( value );
+    if ( error )
+        {
+        // If there is an error then return the default value
+        return CSuplSettings::ESuplUsageAlwaysAsk;
+        }
+	DEBUG( - CLocSUPLSettingsAdapter::GetSuplUsage TInt );	
+    return value;
+    }
+
+// ---------------------------------------------------------------------------
+// TLocSuplUsage CLocSUPLSettingsAdapter::GetSuplUsageIndex
+// ---------------------------------------------------------------------------
+// 
+CLocSUPLSettingsAdapter::TLocSuplUsage CLocSUPLSettingsAdapter::GetSuplUsageIndex()
+    {    
+	DEBUG( + CLocSUPLSettingsAdapter::GetSuplUsageIndex );	
+    TLocSuplUsage index = ELocSuplAutomatic;
+    CSuplSettings::TSuplSettingsUsage value = CSuplSettings::ESuplUsageAlwaysAsk;
+    if ( iSUPLSettings->GetSuplUsage( value ))
+        {
+        // If there is an error then return the default value.
+        return index;
+        }
+        
+    switch ( value )
+        {
+        case CSuplSettings::ESuplUsageAutomatic:
+            {
+            index = ELocSuplAutomatic;
+            break;
+            }
+        case CSuplSettings::ESuplUsageHomeAutomatic:
+            {
+            index = ELocSuplAutomaticatHome;         
+            break;
+            }
+        case CSuplSettings::ESuplUsageAlwaysAsk:
+            {
+            index = ELocSuplAlwaysAsk;
+            break;
+            }
+        case CSuplSettings::ESuplUsageDisabled:
+            {
+            index = ELocSuplDisable;
+            break;
+            }
+        default:
+            {
+            break;
+            }
+        }
+    return index;   
+    }
+    
+// ---------------------------------------------------------------------------
+// const TDesC& CLocSUPLSettingsAdapter::Automatic
+// ---------------------------------------------------------------------------
+// 
+const TDesC& CLocSUPLSettingsAdapter::Automatic()
+    {
+    return *iAutomatic;
+    }
+
+// ---------------------------------------------------------------------------
+// const TDesC& CLocSUPLSettingsAdapter::AutomaticAtHome
+// ---------------------------------------------------------------------------
+//
+const TDesC& CLocSUPLSettingsAdapter::AutomaticAtHome()
+    {
+    return *iAutomaticatHome;  
+    }
+
+// ---------------------------------------------------------------------------
+// const TDesC& CLocSUPLSettingsAdapter::AlwaysAsk
+// ---------------------------------------------------------------------------
+//
+const TDesC& CLocSUPLSettingsAdapter::AlwaysAsk()
+    {
+    return *iAsk;   
+    }
+
+// ---------------------------------------------------------------------------
+// const TDesC& CLocSUPLSettingsAdapter::Disable
+// ---------------------------------------------------------------------------
+//
+const TDesC& CLocSUPLSettingsAdapter::Disable()
+    {
+    return *iDisable; 
+    }
                    
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsAdapter::HandleSuplSettingsChangeL
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingscontainer.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingscontainer.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -283,7 +283,16 @@
         case EEventEnterKeyPressed:
         case EEventItemSingleClicked: //case EEventItemDoubleClicked:
             {
-            iSettingsView.HandleCommandL(ELocSuplMSKOpen);
+            // Settings element has been selected. Command has to be issued to
+            // change the settings configuration
+            if ( SelectedItemIndex() == 0 )
+                {
+                iSettingsView.HandleCommandL( ELocSuplMSKChange );
+                }
+            else if ( SelectedItemIndex() == 1 || SelectedItemIndex() == 2 )
+                {
+                iSettingsView.HandleCommandL( ELocSuplMSKOpen );
+                }
             break;	
             }
         default:
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingslbmodel.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingslbmodel.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -68,10 +68,14 @@
 	delete iServerDetailTitle;
 	iServerDetailTitle = NULL;
 	
+	delete iSuplUsageTitle;
+	iSuplUsageTitle = NULL;
 	
 	delete iSuplServerDetail;
 	iSuplServerDetail = NULL;
 
+	delete iDefaultSuplUsage;
+	iDefaultSuplUsage = NULL;
 	DEBUG( - CLocSUPLSettingsLBModel::~CLocSUPLSettingsLBModel );	
 	}
 	
@@ -144,7 +148,32 @@
     	ptr.Copy( KDefaultServerIPAddress );		       
 	    }
     
-
+    // Reinitializing the flag value
+    flagValue = 0;
+    TRAPD( error, repository = CRepository::NewL( KCRUidOMASuplConfiguration ) );
+    if ( !error )
+        {
+        error = repository->Get( KOMASuplConfigurationSuplPermissionQueryUsage, flagValue );
+        if ( error || flagValue < 0 )
+            {
+            flagValue = 0;
+            }
+    	delete repository;
+    	repository = NULL;
+        }	
+	    	    
+	// Check for SUPL Setting usage variationing.
+	if( flagValue )
+	    {
+	    iSuplUsagePresent = ETrue;
+	       
+     	// Allocate and set the server ip address title field
+    	iSuplUsageTitle = StringLoader::LoadL( R_LOC_SUPL_USE );
+    	
+    	iDefaultSuplUsage =  StringLoader::LoadL( R_AVKON_SELEC_SETT_VAL_FIELD_NONE );
+    	// Default value can be used for this field as well
+    	// So no need to have another variable.		       
+	    }
 	    	
 	DEBUG( - CLocSUPLSettingsLBModel::ConstructL );	
 	}
@@ -160,16 +189,21 @@
     CLocSUPLSettingsLBModel::ResolveSettingsItem( TInt aListboxIndex ) const
     {
  	DEBUG( + CLocSUPLSettingsLBModel::ResolveSettingsItem );	
-   	TSUPLSettingsItemId selectedItem = ESUPLSettingsServersDetail;
+   	TSUPLSettingsItemId selectedItem = ESUPLSettingsUsage;
     
     switch ( aListboxIndex )
         {
         case 0:
             {
+            selectedItem = ESUPLSettingsUsage;
+            break;
+            }        
+        case 1:
+            {
             selectedItem = ESUPLSettingsServersDetail;
             break;
             }
-        case 1:
+        case 2:
             {
             selectedItem = ESUPLSettingsActiveSessions;
             break;   
@@ -193,15 +227,27 @@
 //
 TInt CLocSUPLSettingsLBModel::MdcaCount() const
 	{
-	DEBUG( + CLocSUPLSettingsLBModel::MdcaCount );
-    // Initialize the count to 0 
-    TInt itemCount = 0;
-
-    // Check for Server address
-    iServerAddressPresent ? itemCount++ : itemCount;
-    itemCount++; // For the third entry "Active sessions"
-    DEBUG( - CLocSUPLSettingsLBModel::MdcaCount );
-    return itemCount;
+	DEBUG( + CLocSUPLSettingsLBModel::MdcaCount );	
+	// Initialize the count to 0 
+	TInt itemCount = 0;
+	
+	// Check for SUPL usage.
+	if ( iSuplUsagePresent )
+	    {
+	    itemCount++;
+	    // Check if the usage value is disabled
+	    if ( iEngine.GetSuplUsage() == CSuplSettings::ESuplUsageDisabled )
+	        {
+	        return itemCount;
+	        }
+		// Check for Server address
+		iServerAddressPresent ? itemCount++ : itemCount;	
+	    }
+	itemCount++; // For the third entry "Active sessions"
+	// Check if the SUPL Usage value is Disabled
+	// If that is the case then only SUPL usage will be displayed
+	DEBUG( - CLocSUPLSettingsLBModel::MdcaCount );	
+	return itemCount;
 	}
 
 // ---------------------------------------------------------------------------
@@ -229,6 +275,11 @@
 	TSUPLSettingsItemId index = ResolveSettingsItem( aIndex );		
 	switch( index )
 	    {
+	    case ESUPLSettingsUsage:
+	        {
+	        AppendSuplUsage( ptr );
+	        break;
+	        }
 	    case ESUPLSettingsServersDetail:
 	        {
 	        AppendSuplServerDetail( ptr );
@@ -252,7 +303,41 @@
 	return iBuffer->Des();
 	}
 
-
+// ---------------------------------------------------------------------------
+// TPtrC16 CLocSUPLSettingsLBModel::AppendSuplServerDetail()
+// Packs the server address to the end of the buffer passed.
+//
+// @param  aPtr Buffer to which the server address needs to be appended.
+// ---------------------------------------------------------------------------
+//	
+void CLocSUPLSettingsLBModel::AppendSuplUsage( TDes& aPtr ) const
+    {
+	DEBUG( + CLocSUPLSettingsLBModel::AppendSuplUsage );	
+    // Append the Title text
+    aPtr.Append( iSuplUsageTitle->Des() );
+    
+    // Append the second tab
+	aPtr.Append( EKeyTab ); 
+	
+	// Append the third tab
+	aPtr.Append( EKeyTab );
+	
+	// Obtain the SUPL usage from the SUPL Settings Engine. If
+	// the settings is not set then a Not defined value would be 
+	// displayed to the user
+    TPtr16 suplUsagePtr( NULL, 0 );
+    TRAPD( error, suplUsagePtr.Set( iEngine.GetSuplUsageL() ) );         
+    if( error || !suplUsagePtr.Length() )
+        {
+        // Using the same string as SUPL settings AP
+        aPtr.Append( iDefaultSuplUsage->Des() );
+        }
+    else
+        {
+        aPtr.Append( suplUsagePtr );              
+        }    
+	DEBUG( - CLocSUPLSettingsLBModel::AppendSuplUsage );	
+    }    
 
 // ---------------------------------------------------------------------------
 // TPtrC16 CLocSUPLSettingsLBModel::AppendSuplServerDetail()
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsuiengine.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -51,6 +51,7 @@
 #include "locsuplservereditor.h"
 #include "locsuplsessioneditor.h"
 #include "locsupldebug.h"
+#include "locsettingsuiclient.h"   // For the Launch parameter values
 
 // Constants
 const TInt KMaxBufferLength 		= 0x100;
@@ -63,9 +64,13 @@
 //
 CLocSUPLSettingsUiEngine::CLocSUPLSettingsUiEngine( 
                             MLocSUPLSettingsUiEngObserver&      aObserver )
-	: 	iObserver( aObserver ),
+	: CActive( EPriorityStandard ), 
+	iObserver( aObserver ),
 	iConversionBufferPtr( NULL, 0 ),
-	iEditorDlg(NULL),
+	iSettingsBufferPtr( NULL, 0 ),
+	iConnectionMgmtQuery( NULL ),
+	iCurrentSlpId( -1 ),
+	iEditorObserver( NULL ),
 	iTempAP(-1)
 	{
 	// No implementation
@@ -79,7 +84,15 @@
 CLocSUPLSettingsUiEngine::~CLocSUPLSettingsUiEngine()	
     {
 	DEBUG( + CLocSUPLSettingsUiEngine::~CLocSUPLSettingsUiEngine );	
+    Cancel(); 
     
+    // Delete the Confirmation query
+    delete iConfirmQuery;
+    iConfirmQuery = NULL;
+    
+    // Delete the ConnectionMgmt query
+    delete iConnectionMgmtQuery;
+    iConnectionMgmtQuery = NULL;
     
 	delete iSUPLSettingsAdapter;
 	iSUPLSettingsAdapter = NULL;	
@@ -88,6 +101,8 @@
 	delete iConversionBuffer;
 	iConversionBuffer = NULL;
 	
+	delete iSettingsBuffer;
+	iSettingsBuffer = NULL;
 	
 	// Delete the Error handling utilities
 	delete iTextResolver;
@@ -142,12 +157,15 @@
     iConversionBuffer = HBufC16::NewL( KMaxBufferLength );
     iConversionBufferPtr.Set( iConversionBuffer->Des() );
     
+    iSettingsBuffer = HBufC::NewL( KMaxBufferLength );
+    iSettingsBufferPtr.Set( iSettingsBuffer->Des());
     
     iTextResolver = CTextResolver::NewL( *( CCoeEnv::Static() ) );
     
     // Create the SUPL Settings API adapter. 
     iSUPLSettingsAdapter = CLocSUPLSettingsAdapter::NewL( *this ); 
     
+    CActiveScheduler::Add( this );
 	DEBUG( - CLocSUPLSettingsUiEngine::ConstructL );	
      
 	}
@@ -165,8 +183,244 @@
 	DEBUG( - CLocSUPLSettingsUiEngine::Initalize );	
     }
             
+void CLocSUPLSettingsUiEngine::SelectConnectionL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::SelectConnectionL );	
+    if( iDialogActive || IsActive() || iConfirmQuery || iConnectionMgmtQuery )
+        {
+        User::Leave( KErrInUse );
+        }
+    
+    // set the Launch type
+    iLaunchParams = ELocSUPLIAPSelection;
+        
+    // In the case of a framework launching SUPL UI, the user is ignorant 
+    // of the action. Hence, a confirmation dialog is popped up to intimate
+    // the user that he needs to configure SUPL settings.
+    
+    iConfirmQuery = CAknGlobalConfirmationQuery::NewL();
 
+    CAknSDData* secondaryData = CAknSDData::NewL( KCatUidLocationSuplSettingsUi,
+                                                  ECmdSuplSettingsMissing,
+                                                  KNullDesC8 );
+ 
+    // Send the Confirmation query information to the Secondary display
+    // The ownership of 'secondaryData' is taken up by the Global confirmation query
+    iConfirmQuery->SetSecondaryDisplayData( secondaryData );
+     
+    // Load the SUPL IAP confirmation query prompt text from the resource file
+	HBufC* promptText = StringLoader::LoadL( R_LOC_SUPL_IAP_QUERY );
+		
+	// Display the Confirmation query.  
+    iConfirmQuery->ShowConfirmationQueryL( iStatus,
+                                           *promptText,
+                                           R_AVKON_SOFTKEYS_YES_NO__YES,
+                                           R_QGN_NOTE_QUERY_ANIM );
+                                               
+    SetActive();  
+    delete promptText; //    
+    promptText = NULL;
+	DEBUG( - CLocSUPLSettingsUiEngine::SelectConnectionL );	
+    }
 
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::LaunchApConfiguratorL
+// Launches the Access Point Configurator dialog
+//
+// ---------------------------------------------------------------------------
+//
+void CLocSUPLSettingsUiEngine::LaunchApConfiguratorL( TInt64 aSlpId, 
+		MSuplServerEditorObserver* aEditorObserver )
+    {     
+	DEBUG( + CLocSUPLSettingsUiEngine::LaunchApConfiguratorL );	
+	iCurrentSlpId =  aSlpId;
+	iEditorObserver = aEditorObserver;
+
+    if( iDialogActive )
+        {
+        User::Leave( KErrInUse );
+        }
+        
+    // Zeroing the Temporary buffers so that it doesn't contain any
+    // left over value from the previous access
+    iSettingsBufferPtr.Zero();
+    
+    // Obtain the UID for the selected Access point so that the configurator
+    // can be highlighted
+    TUint32 highlightUid( 0 );
+    
+    // if AP value is NULL, or zero, no temp AP, all previous changes have been frozen.
+    TInt32 tempAP = GetTempAPValue();
+    if ( tempAP == -1)
+        {
+        // Obtain the Server address value from the SUPL settings
+        // API. If the value is set then it has to be shown to the user
+        // as the existing value when he tries to configure the UI
+        TRAP_IGNORE( iSUPLSettingsAdapter->GetIapNameL( iCurrentSlpId, iSettingsBufferPtr ) );
+     
+        TRAPD( error, highlightUid = ConvertIAPNameToIdL( iSettingsBufferPtr ) ); 
+        
+        if( error == KErrNotFound )
+            {
+            highlightUid = 0;
+            }
+        }
+    else
+        {
+        highlightUid = tempAP;
+        }
+    
+ 	iConnectionMgmtQuery =  CCmApplicationSettingsUi::NewL();
+ 	
+ 	iDialogActive = ETrue;
+    TBool ret = EFalse;
+    TCmSettingSelection selectionUid;
+    selectionUid.iId = highlightUid;
+    selectionUid.iResult = CMManager::EConnectionMethod ;
+    TBearerFilterArray filter;
+	CleanupClosePushL( filter );
+	
+	// Need access points for bearer type CSD and Packet data only
+	filter.AppendL( KUidCSDBearerType );
+	filter.AppendL( KUidPacketDataBearerType );
+
+	// Run CCmApplicationSettingsUi dialog only for Access points (Connection methods)
+	// selectionUid contains UID to be highlighted, on return it will contain UID of selected CM
+    TRAPD( error, ret = 
+    	iConnectionMgmtQuery->RunApplicationSettingsL( 
+    			selectionUid , CMManager::EShowConnectionMethods, filter 
+    ) ); // | CMManager::EShowAlwaysAsk
+    
+    iDialogActive = EFalse;  
+    if( error == CMManager::KErrConnectionNotFound )
+        {
+        // No AP defined, Show Note                
+        TRAP_IGNORE( ShowNoteL(); )
+        //User::Leave( error );    
+        }   
+    CleanupStack::PopAndDestroy( &filter );   
+    delete iConnectionMgmtQuery;
+    iConnectionMgmtQuery = NULL;  
+    
+    if( ret )
+        {
+        SetTempAPValue(selectionUid.iId);
+        RCmManager cmManager;
+		cmManager.OpenLC();
+	
+		RArray< TUint32 > cmArray;
+		HBufC* cmName = NULL;
+		RCmConnectionMethod method;
+		// Get all the CMs into cmArray
+		cmManager.ConnectionMethodL( cmArray, ETrue, EFalse );
+		CleanupClosePushL( cmArray );
+		
+		// Get name of selected CM
+		TInt count = cmArray.Count();
+		for ( TInt i = 0; i < count; i++ )
+		    {
+		    if (selectionUid.iId == cmArray[i] )
+		    	{
+		    	method = cmManager.ConnectionMethodL( cmArray[i] );
+		    	CleanupClosePushL( method );
+		    	cmName = method.GetStringAttributeL( CMManager::ECmName );
+		    	CleanupStack::PushL( cmName );
+		    	iSettingsBufferPtr.Copy( cmName->Des() );
+		    	CleanupStack::PopAndDestroy( cmName );
+		    	CleanupStack::PopAndDestroy( &method );
+		    	break;
+		    	}		    
+		    }
+		CleanupStack::PopAndDestroy( &cmArray );    
+    	CleanupStack::PopAndDestroy( &cmManager );          	
+
+		if( iEditorObserver )
+	       	{
+	       	iEditorObserver->UpdateIapL( iSettingsBufferPtr );		       	
+	       	}
+        }
+           
+	DEBUG( - CLocSUPLSettingsUiEngine::LaunchApConfiguratorL );	
+    }  
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL
+// Launches the SUPL Usage Configurator
+//
+// ---------------------------------------------------------------------------    
+//
+void CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL );	
+    if( iDialogActive )
+        {
+        User::Leave( KErrInUse );
+        }
+        
+    // Allocate the descriptor array for Text settings for System
+    // of measurement
+    CDesCArrayFlat* items = new( ELeave ) CDesCArrayFlat( KNoofUsageSettings );
+    CleanupStack::PushL( items );
+
+    // Allocate all the Settings usage string
+    
+    // Append the radio-button list items
+    items->AppendL( iSUPLSettingsAdapter->Automatic() );
+    items->AppendL( iSUPLSettingsAdapter->AutomaticAtHome() );
+    items->AppendL( iSUPLSettingsAdapter->AlwaysAsk() );
+    items->AppendL( iSUPLSettingsAdapter->Disable() );
+      
+    // Obtain the current value for SUPL settings usage
+    // This would be used for setting the default value for 
+    // the text settings page               
+    TInt currentSettings = iSUPLSettingsAdapter->GetSuplUsageIndex();
+        
+    CAknRadioButtonSettingPage* dlg = 
+                        new ( ELeave )CAknRadioButtonSettingPage( R_LOC_SUPLUSAGE_SETTINGS,
+                                                                  currentSettings, 
+                                                                  items );
+    // Settings Outstanding flag is marked True to enable dismissal incase
+    // of a Cancel event                                                                  
+    iDialogActive = ETrue;                                                                  
+    if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) )
+        {
+        CLocSUPLSettingsAdapter::TLocSuplUsage newValue = 
+                    static_cast<CLocSUPLSettingsAdapter::TLocSuplUsage>( currentSettings );
+                    
+        iSUPLSettingsAdapter->SetSuplUsageL( newValue );
+        }
+    
+    iDialogActive = EFalse;           
+    
+    // Free the items resource
+    CleanupStack::PopAndDestroy( items );   
+	DEBUG( - CLocSUPLSettingsUiEngine::LaunchSuplUsageConfiguratorL );	
+    }
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::LaunchIAPDialogL
+// Launches the IAP Dialog
+//
+// ---------------------------------------------------------------------------    
+//
+void CLocSUPLSettingsUiEngine::LaunchIAPDialogL( )
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::LaunchIAPDialogL );	
+    if( iDialogActive || IsActive() || iConfirmQuery || iConnectionMgmtQuery )
+        {
+        User::Leave( KErrInUse );
+        }
+    
+    // set the Launch type
+    iLaunchParams = ELocSuplIAPDialog;
+     
+    // Self complete
+    SetActive();
+    TRequestStatus* status = &iStatus;
+    User::RequestComplete(status, KErrNone);
+        
+	DEBUG( - CLocSUPLSettingsUiEngine::LaunchIAPDialogL );	
+    }
     
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::Close
@@ -176,14 +430,59 @@
 void CLocSUPLSettingsUiEngine::Close()
     {
 	DEBUG( + CLocSUPLSettingsUiEngine::Close );	
+    Cancel();   
     
     // Cancel the Initalization request. This call Cancels if there is an 
     // outstanding request. If not, does nothing
     iSUPLSettingsAdapter->CancelInitialize();
      
+    // If any of the dialogs are active then issue a cancel event on the 
+    // dialogs
+    if( iDialogActive )
+        {
+        TKeyEvent   keyEvent;
+        keyEvent.iCode          = EKeyCBA2;
+        keyEvent.iScanCode      = EStdKeyDevice1;         
+        keyEvent.iModifiers     = EAllModifiers;
+        keyEvent.iRepeats       = 0;
+        CCoeEnv* cCoeEnv = CCoeEnv::Static();
+        
+        // Simulate a Cancel event on the running dialogs. The Simulated event
+        // is for the Left Soft Key.
+        // Ignore the error incase of a leave
+        
+        TRAP_IGNORE( cCoeEnv->SimulateKeyEventL( keyEvent, EEventKey ) );
+        }      
 	DEBUG( - CLocSUPLSettingsUiEngine::Close );	
     }
 
+// ---------------------------------------------------------------------------
+// TPtr16 CLocSUPLSettingsAdapter::GetSuplUsage
+// ---------------------------------------------------------------------------
+//  
+TPtr16 CLocSUPLSettingsUiEngine::GetSuplUsageL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::GetSuplUsageL );	
+    // Zeroing the Temporary buffers so that it doesn't contain any
+    // left over value from the previous access
+    iSettingsBufferPtr.Zero();
+    iConversionBufferPtr.Zero();
+    
+    // Obtain the Settings values from the SUPL settings API
+    iSUPLSettingsAdapter->GetSuplUsageL( iSettingsBufferPtr );
+    iConversionBufferPtr.Copy( iSettingsBufferPtr );
+	DEBUG( - CLocSUPLSettingsUiEngine::GetSuplUsageL );	
+    return iConversionBufferPtr;
+    }
+    
+// ---------------------------------------------------------------------------
+// TInt CLocSUPLSettingsAdapter::GetSuplUsage
+// ---------------------------------------------------------------------------
+//
+TInt CLocSUPLSettingsUiEngine::GetSuplUsage()
+    {
+    return iSUPLSettingsAdapter->GetSuplUsage();
+    }
             				
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::HandleSuplSettingsChangeL
@@ -201,6 +500,92 @@
     }
                                        
 // ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::RunL()
+//
+// ---------------------------------------------------------------------------
+//
+void CLocSUPLSettingsUiEngine::RunL()
+    {    
+	DEBUG( + CLocSUPLSettingsUiEngine::RunL );	
+    // If the Confirmation query is present then we have to Pop up the 
+    // IAP Selection dialog based on User Action
+    if( iConfirmQuery && iLaunchParams == ELocSUPLIAPSelection )
+        {        
+        // Incase there has been a response from the User then the Key pressed
+        // is present in the iStatus variable 
+        if( EAknSoftkeyYes == iStatus.Int() )
+            {
+	        iObserver.HandleSettingsEventL( 
+	                MLocSUPLSettingsUiEngObserver::EIAPSelectionComplete );                       
+            }
+        else
+            {
+            iObserver.HandleSettingsEventL( 
+                    MLocSUPLSettingsUiEngObserver::EIAPSelectionCancelled );
+            }
+        
+        // Destroy the IAP confirmation query handle    
+        delete iConfirmQuery;
+        iConfirmQuery = NULL;
+        }
+    else if( iLaunchParams == ELocSuplIAPDialog )    // Launch IAP Dialog
+        {
+        // Launch Access Point dialog to get the access point
+        TRAPD(err, LaunchApConfiguratorL(KErrNotFound, NULL) );
+        
+        // Update the Access points for all the Slp whose AP is missing.
+        if( KErrNone == err )
+            TRAP(err, UpdateMissingIAPL( iSettingsBufferPtr ) );
+            
+        // Incase of any errors.
+        if( KErrNone == err )
+            {
+	        iObserver.HandleSettingsEventL( 
+	                MLocSUPLSettingsUiEngObserver::EIAPSelectionComplete );                       
+            }
+        else
+            {
+            iObserver.HandleSettingsEventL( 
+                    MLocSUPLSettingsUiEngObserver::EIAPSelectionCancelled );
+            }
+        }
+     else
+        {
+          iObserver.HandleSettingsEventL( 
+                      MLocSUPLSettingsUiEngObserver::EIAPSelectionCancelled );
+        }
+        
+	DEBUG( - CLocSUPLSettingsUiEngine::RunL );	
+    }
+
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::DoCancel()
+//
+// ---------------------------------------------------------------------------
+//    
+void CLocSUPLSettingsUiEngine::DoCancel()    
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::DoCancel );	
+    if( iConfirmQuery )
+        {
+        // If the confirmation query is running Cancel the query
+        iConfirmQuery->CancelConfirmationQuery();
+        
+        delete iConfirmQuery;
+        iConfirmQuery = NULL;
+        
+        }
+        
+    if( iConnectionMgmtQuery )
+        {
+        delete iConnectionMgmtQuery;
+        iConnectionMgmtQuery = NULL;
+        }
+        
+	DEBUG( - CLocSUPLSettingsUiEngine::DoCancel );	
+    }
+    
+// ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::GenerateHslpAddressFromImsi()
 //
 // ---------------------------------------------------------------------------
@@ -212,6 +597,56 @@
 	DEBUG( - CLocSUPLSettingsUiEngine::DoCancel );	
     }
 
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::UpdateMissingIAPL()
+// Updates Access point for ALL SLPs which do not have AP defined.
+// 
+// ---------------------------------------------------------------------------
+//
+void CLocSUPLSettingsUiEngine::UpdateMissingIAPL(const TDesC& aAccessPoint )
+    {
+    // return if there is no access point in aAccessPoint
+    if( aAccessPoint.Length() <=0 )
+        return;
+        
+    RPointerArray<CServerParams> serverParamValues;
+    CleanupClosePushL( serverParamValues );
+    
+    GetAllSlpL( serverParamValues );
+    
+    HBufC* hslpAddr = HBufC::NewLC( KMaxHSLPAddrLen );    
+    HBufC* iapName 	= HBufC::NewLC( KMaxIAPLen );
+    TInt64 slpId;
+    TBool enabledFlag, simChangeFlag, usageInHomeNwFlag, editFlag;    
+    
+    TInt count = serverParamValues.Count();
+    for( TInt i=0; i<count; i++ )
+	    {
+	    // Zero the buffer contents
+	    hslpAddr->Des().Zero();
+	    iapName->Des().Zero();
+        
+	    // Get Server detils
+        TInt errParams = serverParamValues[i]->Get(
+        							slpId, 
+        							hslpAddr->Des(), 
+        							iapName->Des(), 
+        							enabledFlag, 
+        							simChangeFlag, 
+        							usageInHomeNwFlag, 
+        							editFlag
+        						);
+        				
+        // Update IAP name if it is not present.		
+        if( errParams == KErrNone && iapName->Length() <= 0 )
+            {
+            SetIapNameL( slpId, aAccessPoint );
+            }
+	    }
+    
+    CleanupStack::PopAndDestroy(2); // hslpAddr, iapName
+    CleanupStack::PopAndDestroy( &serverParamValues ); // serverParamValues
+    }
 
 // ---------------------------------------------------------------------------
 // TUint CLocSUPLSettingsUiEngine::ConvertIAPNameToIdL()
@@ -289,6 +724,33 @@
 	DEBUG( - CLocSUPLSettingsUiEngine::DisplayErrorL );	
     }
     
+// ---------------------------------------------------------------------------
+// void CLocSUPLSettingsUiEngine::ShowNoteL()
+// Displays No access point defined note
+//
+// @param None
+// ---------------------------------------------------------------------------
+//
+TInt CLocSUPLSettingsUiEngine::ShowNoteL()
+    {
+	DEBUG( + CLocSUPLSettingsUiEngine::ShowNoteL );	
+    // Show Info Note "No Access Points Defined"       
+    HBufC* tmp = StringLoader::LoadL( R_LOC_NO_AP_DEFINED );
+    CleanupStack::PushL( tmp );    
+    CAknNoteDialog* dlg =
+        new ( ELeave ) CAknNoteDialog
+                (
+                 REINTERPRET_CAST( CEikDialog**, &dlg ),
+                 CAknNoteDialog::ENoTone,
+                 CAknNoteDialog::EShortTimeout
+                );
+    dlg->PrepareLC( R_GENERAL_NOTE );  
+    dlg->SetTextL( *tmp );
+    TInt retval = dlg->RunLD();
+    CleanupStack::PopAndDestroy( tmp );  // temp    
+	DEBUG( - CLocSUPLSettingsUiEngine::ShowNoteL );	
+    return retval;
+    }
 
 // ---------------------------------------------------------------------------
 // void CLocSUPLSettingsUiEngine::EditServerL()
@@ -300,43 +762,21 @@
 //
 void CLocSUPLSettingsUiEngine::EditServerL( TBool iIsEditable, TInt64 aSlpId )
     {
-    DEBUG( + CLocSUPLSettingsUiEngine::EditServerL );
-    if (iEditorDlg)
-        {
-        delete iEditorDlg;
-        iEditorDlg = NULL;
-        }
-    iEditorDlg = CLocSUPLServerEditor::NewL(iIsEditable, *this, aSlpId);
-    if (aSlpId > 0)
+	DEBUG( + CLocSUPLSettingsUiEngine::EditServerL );		
+	if( iEditorDlg )
+		{		
+		delete iEditorDlg;
+		iEditorDlg = NULL;
+		}
+    iEditorDlg = CLocSUPLServerEditor::NewL( iIsEditable, *this, aSlpId );
+    TInt error = iEditorDlg->ExecuteLD();
+    if ( EEikCmdExit == error )
         {
-        CServerParams *params = CServerParams::NewL();
-        CleanupStack::PushL(params);
-        GetSlpInfoFromIdL(aSlpId, params);
-
-        HBufC* hslpAddr = HBufC::NewLC(KMaxHSLPAddrLen);
-        HBufC* iapName = HBufC::NewLC(KMaxIAPLen);
-        TInt64 slpId;
-        TBool enabledFlag, simChangeFlag, usageInHomeNwFlag, editFlag;
-
-        TInt errParams = params->Get(slpId, hslpAddr->Des(), iapName->Des(),
-                enabledFlag, simChangeFlag, usageInHomeNwFlag, editFlag);
-        if (iapName->Length() > 0)
-            {
-            iEditorDlg->SetAccessPointEnabled(ETrue);
-            }
-
-        CleanupStack::PopAndDestroy(3, params);
-        }
+        ( ( CAknViewAppUi* ) CEikonEnv::Static()->EikAppUi())->HandleCommandL( EEikCmdExit );
+        }        
+    iEditorDlg = NULL;                     	
     
-    TInt error = iEditorDlg->ExecuteLD();
-    if (EEikCmdExit == error)
-        {
-        ((CAknViewAppUi*) CEikonEnv::Static()->EikAppUi())->HandleCommandL(
-                EEikCmdExit);
-        }
-    iEditorDlg = NULL;
-
-    DEBUG( - CLocSUPLSettingsUiEngine::EditServerL );
+	DEBUG( - CLocSUPLSettingsUiEngine::EditServerL );	
     }
     
 // ---------------------------------------------------------------------------
--- a/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsview.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/locsuplsettingsui/src/locsuplsettingsview.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -292,33 +292,42 @@
 			ChangeMSKL();
 			break;
 			}        
-
+        // Handle all the internal view specific commands here
+        case ELocSuplChange:
+        case ELocSuplMSKChange:
+            {
+            // Launch the SUPL Settings usage configurator.
+            // The error code is ignored since the necessary UI 
+            // notification would be convveyed by the Engine
+            TRAP_IGNORE( iEngine.LaunchSuplUsageConfiguratorL() );
+            break;
+            }
     	case ELocSuplOpen:
     	case ELocSuplMSKOpen:
             {
             TInt index = SelectedItemIndex();
             switch( index )
     	    {
-		      case 0:
-                    {
-                    // Launch the Supl Server List.
-                    // The error code is ignored since the necessary UI 
-                    // notification would be convveyed by the Engine
-                    iViewLaunched = 0;
-                    TRAP_IGNORE( AppUi()->ActivateLocalViewL ( KLocSUPLServerUiViewId ) );
-                    break;
-                    }
-            case 1:
-               {
-                    TInt sessionCount = iContainer->ActiveSessionCount();
-                    if (sessionCount)
-                        {
-                        iViewLaunched = 1;
-                        // Launch the Supl sessions view.
-                        TRAP_IGNORE( AppUi()->ActivateLocalViewL ( KLocSUPLSessionUiViewId ) );
-                        }
-                    break;
-                    }
+		      case 1:
+			    {      
+                // Launch the Supl Server List.
+                // The error code is ignored since the necessary UI 
+                // notification would be convveyed by the Engine
+                iViewLaunched = 1;
+                TRAP_IGNORE( AppUi()->ActivateLocalViewL ( KLocSUPLServerUiViewId ) );
+                break; 
+                }
+             case 2:
+                {
+                TInt sessionCount = iContainer->ActiveSessionCount();
+                if( sessionCount )
+                  {
+                  iViewLaunched = 2;
+                  // Launch the Supl sessions view.
+                  TRAP_IGNORE( AppUi()->ActivateLocalViewL ( KLocSUPLSessionUiViewId ) );
+                  }
+                  break;
+                }
              default:
 			    break; 
             }
@@ -435,27 +444,37 @@
 			{
 			case 0:
 				{
-	        	aMenuPane->SetItemDimmed( ELocSuplOpen, EFalse );
+        		//aMenuPane->SetItemDimmed( ELocSuplChange, EFalse );
+	        	//aMenuPane->SetItemDimmed( ELocSuplOpen, ETrue );
 	        	aMenuPane->SetItemDimmed( ELocSuplClearSession, ETrue );
 	        	aMenuPane->SetItemDimmed( ELocSuplClearSessions, ETrue );
 				break;
 				}
 			case 1:
 				{
+        		//aMenuPane->SetItemDimmed( ELocSuplChange, ETrue );
+	        	//aMenuPane->SetItemDimmed( ELocSuplOpen, EFalse );
+	        	aMenuPane->SetItemDimmed( ELocSuplClearSession, ETrue );
+	        	aMenuPane->SetItemDimmed( ELocSuplClearSessions, ETrue );
+				break;
+				}
+			case 2:
+				{
+        		aMenuPane->SetItemDimmed( ELocSuplChange, ETrue );
 				TInt sessionCount = iContainer->ActiveSessionCount();
 				
 				switch( sessionCount )
 					{
 					case 0:
 						{
-	        			aMenuPane->SetItemDimmed( ELocSuplOpen, ETrue );
+	        			//aMenuPane->SetItemDimmed( ELocSuplOpen, ETrue );
 	        			aMenuPane->SetItemDimmed( ELocSuplClearSession, ETrue );
 	        			aMenuPane->SetItemDimmed( ELocSuplClearSessions, ETrue );
 					break;
 						}
 					case 1:
 						{
-	        			aMenuPane->SetItemDimmed( ELocSuplOpen, EFalse );
+	        			//aMenuPane->SetItemDimmed( ELocSuplOpen, EFalse );
 	        			aMenuPane->SetItemDimmed( ELocSuplClearSession, EFalse );
 					aMenuPane->SetItemSpecific(ELocSuplClearSession, ETrue);
 	        			aMenuPane->SetItemDimmed( ELocSuplClearSessions, ETrue );
@@ -463,7 +482,7 @@
 						}
 					default:
 						{
-	        			aMenuPane->SetItemDimmed( ELocSuplOpen, EFalse );
+	        			//aMenuPane->SetItemDimmed( ELocSuplOpen, EFalse );
 		        		aMenuPane->SetItemDimmed( ELocSuplClearSession, ETrue );
 		        		aMenuPane->SetItemDimmed( ELocSuplClearSessions, EFalse );
 					aMenuPane->SetItemSpecific(ELocSuplClearSessions, ETrue);
--- a/locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosPrivacyNotifierExtension.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosPrivacyNotifierExtension.h	Wed Oct 13 15:01:35 2010 +0300
@@ -30,7 +30,7 @@
 //  INCLUDES
 #include <eiknotapi.h>
 #include <lbs/epos_rposrequestorstack.h>
-#include <lbs/EPos_TPosQNInputData.h>
+#include <lbs/epos_tposqninputdata.h>
 #include <EPos_CPosPrivacyNotifier.h>
 // FORWARD DECLARATIONS
 class CPosRequestHandler;
--- a/locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosRequestHandler.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locationsystemui/locationsysui/queryandnotification/inc/EPos_CPosRequestHandler.h	Wed Oct 13 15:01:35 2010 +0300
@@ -29,7 +29,7 @@
 
 //  INCLUDES
 #include <e32base.h>
-#include <lbs/EPos_TPosQNInputData.h>
+#include <lbs/epos_tposqninputdata.h>
 #include <EPos_CPosPrivacyNotifier.h>
 
 // FORWARD DECLARATIONS
--- a/locsrv_plat/location_settings_launch_api/inc/locsettingsuiclient.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locsrv_plat/location_settings_launch_api/inc/locsettingsuiclient.h	Wed Oct 13 15:01:35 2010 +0300
@@ -66,7 +66,8 @@
     ELocSUPLDefault         = KDefaultParamValue,   // Default Settings View
     ELocSUPLIAPSelection    = 0x00000001,           // IAP Selection dialog
     ELocSUPLStateSelection  = 0x00000002,           // State enable dialog 
-    ELocSuplSettingsPage    = 0x00000010            // SUPL settings page
+    ELocSuplSettingsPage    = 0x00000010,           // SUPL settings page
+    ELocSuplIAPDialog       = 0x00000020            // SUPL IAP dialog
     };
     
  
--- a/locsrv_plat/query_and_notification_api/inc/EPos_CPosPrivacyNotifier.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/locsrv_plat/query_and_notification_api/inc/EPos_CPosPrivacyNotifier.h	Wed Oct 13 15:01:35 2010 +0300
@@ -23,7 +23,7 @@
 //  INCLUDES
 #include <e32base.h>
 #include <lbs/epos_privacy.h>
-#include <lbs/EPos_TPosQNInputData.h>
+#include <lbs/epos_tposqninputdata.h>
 
 // DATA TYPES
 
--- a/supl/group/bld.inf	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/group/bld.inf	Wed Oct 13 15:01:35 2010 +0300
@@ -17,11 +17,10 @@
 
 
 PRJ_PLATFORMS
-WINSCW ARMV5
+WINSCW ARMV5 GCCE
 
 #include "../locationsuplfw/group/bld.inf"
 #include "../locationomasuplprotocolhandler/group/bld.inf"
 //#include "../locationomasuplpostester/group/bld.inf"
 #include "../supltiapiimplementation/group/bld.inf"
-//#include "../locationsupllocinfoconverter/group/bld.inf"
 // End of File
--- a/supl/locationomasuplprotocolhandler/group/bld.inf	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/group/bld.inf	Wed Oct 13 15:01:35 2010 +0300
@@ -44,5 +44,6 @@
 #include "../waplistener/group/bld.inf"
 #include "../syncmlprovhandler/group/bld.inf"
 #include "../provisioninghandler/group/bld.inf"
+#include "../notifier/group/bld.inf"
 
 // End of File
--- a/supl/locationomasuplprotocolhandler/notifier/notifier/data/epos_omasuplnotifier.rss	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/notifier/notifier/data/epos_omasuplnotifier.rss	Wed Oct 13 15:01:35 2010 +0300
@@ -29,7 +29,7 @@
 #include <avkon.loc>
 
 // User Includes
-#include <sc/epos_omasuplnotifier.loc>
+#include <epos_omasuplnotifier.loc>
 
 //  RESOURCE IDENTIFIER
 NAME SUNO   // 4 Letter Identifier
--- a/supl/locationomasuplprotocolhandler/protocolhandler/bwins/eposomasuplprotocolhandleru.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/bwins/eposomasuplprotocolhandleru.def	Wed Oct 13 15:01:35 2010 +0300
@@ -15,24 +15,24 @@
 	??1COMASuplSettings@@UAE@XZ @ 14 NONAME ; COMASuplSettings::~COMASuplSettings(void)
 	?IsHslpNull@COMASuplSettings@@QAEHXZ @ 15 NONAME ; int COMASuplSettings::IsHslpNull(void)
 	?NotifyTriggerFiredL@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@AAVTRequestStatus@@AAVTSuplTriggerFireInfo@@@Z @ 16 NONAME ; void COMASUPLProtocolManager::NotifyTriggerFiredL(class CSuplSessionBase *, class TRequestStatus &, class TSuplTriggerFireInfo &)
-	?MakeLocationConversionRequestL@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@AAVTGeoCellInfo@@AAVTRequestStatus@@@Z @ 17 NONAME ; void COMASUPLProtocolManager::MakeLocationConversionRequestL(class CSuplSessionBase *, class TGeoCellInfo &, class TRequestStatus &)
-	?IAPId@COMASuplSettings@@QBEHXZ @ 18 NONAME ; int COMASuplSettings::IAPId(void) const
-	?CancelLocationConversionRequest@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@@Z @ 19 NONAME ; void COMASUPLProtocolManager::CancelLocationConversionRequest(class CSuplSessionBase *)
-	?DeInitialize@COMASUPLProtocolManager@@UAEXAAVTRequestStatus@@@Z @ 20 NONAME ; void COMASUPLProtocolManager::DeInitialize(class TRequestStatus &)
-	?RunSuplTriggerSessionL@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@AAVTRequestStatus@@AAVTSuplTerminalPeriodicTrigger@@ABVTDesC16@@HHH@Z @ 21 NONAME ; void COMASUPLProtocolManager::RunSuplTriggerSessionL(class CSuplSessionBase *, class TRequestStatus &, class TSuplTerminalPeriodicTrigger &, class TDesC16 const &, int, int, int)
-	?ConvertIAPNameToIdL@COMASuplSettings@@QAEHABVTDesC16@@AAK@Z @ 22 NONAME ; int COMASuplSettings::ConvertIAPNameToIdL(class TDesC16 const &, unsigned long &)
-	?CreateNewSessionL@COMASUPLProtocolManager@@UAEPAVCSuplSessionBase@@W4TSuplReqType@CSUPLProtocolManagerBase@@HW4TSuplServiceType@RSuplTerminalSubSession@@@Z @ 23 NONAME ; class CSuplSessionBase * COMASUPLProtocolManager::CreateNewSessionL(enum CSUPLProtocolManagerBase::TSuplReqType, int, enum RSuplTerminalSubSession::TSuplServiceType)
-	?SetIAPId@COMASuplSettings@@QAEXH@Z @ 24 NONAME ; void COMASuplSettings::SetIAPId(int)
-	?ReadOMASuplSettingsL@COMASuplCommonConfig@@QAEXXZ @ 25 NONAME ; void COMASuplCommonConfig::ReadOMASuplSettingsL(void)
-	?CancelRunSession@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@@Z @ 26 NONAME ; void COMASUPLProtocolManager::CancelRunSession(class CSuplSessionBase *)
-	??1COMASUPLProtocolManager@@UAE@XZ @ 27 NONAME ; COMASUPLProtocolManager::~COMASUPLProtocolManager(void)
-	?HandleSuplMessageL@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@AAVTRequestStatus@@PAVHBufC8@@@Z @ 28 NONAME ; void COMASUPLProtocolManager::HandleSuplMessageL(class CSuplSessionBase *, class TRequestStatus &, class HBufC8 *)
-	?GetSUPLMessageVersionL@COMASUPLProtocolManager@@UAEHAAHABVTDesC8@@@Z @ 29 NONAME ; int COMASUPLProtocolManager::GetSUPLMessageVersionL(int &, class TDesC8 const &)
-	?ConstructL@COMASuplSettings@@AAEXXZ @ 30 NONAME ; void COMASuplSettings::ConstructL(void)
-	?NewL@COMASUPLProtocolManager@@SAPAV1@XZ @ 31 NONAME ; class COMASUPLProtocolManager * COMASUPLProtocolManager::NewL(void)
-	?HandlePacket@COMASUPLProtocolManager@@UAEXABVTDesC8@@I@Z @ 32 NONAME ; void COMASUPLProtocolManager::HandlePacket(class TDesC8 const &, unsigned int)
-	?CancelSuplTriggerSession@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@@Z @ 33 NONAME ; void COMASUPLProtocolManager::CancelSuplTriggerSession(class CSuplSessionBase *)
-	?InitializeL@COMASUPLProtocolManager@@UAEXPAVCSuplCommunicationManager@@AAVTRequestStatus@@@Z @ 34 NONAME ; void COMASUPLProtocolManager::InitializeL(class CSuplCommunicationManager *, class TRequestStatus &)
+	?IAPId@COMASuplSettings@@QBEHXZ @ 17 NONAME ; int COMASuplSettings::IAPId(void) const
+	?DeInitialize@COMASUPLProtocolManager@@UAEXAAVTRequestStatus@@@Z @ 18 NONAME ; void COMASUPLProtocolManager::DeInitialize(class TRequestStatus &)
+	?RunSuplTriggerSessionL@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@AAVTRequestStatus@@AAVTSuplTerminalPeriodicTrigger@@ABVTDesC16@@HHH@Z @ 19 NONAME ; void COMASUPLProtocolManager::RunSuplTriggerSessionL(class CSuplSessionBase *, class TRequestStatus &, class TSuplTerminalPeriodicTrigger &, class TDesC16 const &, int, int, int)
+	?ConvertIAPNameToIdL@COMASuplSettings@@QAEHABVTDesC16@@AAK@Z @ 20 NONAME ; int COMASuplSettings::ConvertIAPNameToIdL(class TDesC16 const &, unsigned long &)
+	?CreateNewSessionL@COMASUPLProtocolManager@@UAEPAVCSuplSessionBase@@W4TSuplReqType@CSUPLProtocolManagerBase@@HW4TSuplServiceType@RSuplTerminalSubSession@@@Z @ 21 NONAME ; class CSuplSessionBase * COMASUPLProtocolManager::CreateNewSessionL(enum CSUPLProtocolManagerBase::TSuplReqType, int, enum RSuplTerminalSubSession::TSuplServiceType)
+	?SetIAPId@COMASuplSettings@@QAEXH@Z @ 22 NONAME ; void COMASuplSettings::SetIAPId(int)
+	?ReadOMASuplSettingsL@COMASuplCommonConfig@@QAEXXZ @ 23 NONAME ; void COMASuplCommonConfig::ReadOMASuplSettingsL(void)
+	?CancelRunSession@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@@Z @ 24 NONAME ; void COMASUPLProtocolManager::CancelRunSession(class CSuplSessionBase *)
+	?SetSUPLUsage@COMASuplSettings@@QAEXAAW4TSuplSettingsUsage@CSuplSettings@@@Z @ 25 NONAME ; void COMASuplSettings::SetSUPLUsage(enum CSuplSettings::TSuplSettingsUsage &)
+	??1COMASUPLProtocolManager@@UAE@XZ @ 26 NONAME ; COMASUPLProtocolManager::~COMASUPLProtocolManager(void)
+	?HandleSuplMessageL@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@AAVTRequestStatus@@PAVHBufC8@@@Z @ 27 NONAME ; void COMASUPLProtocolManager::HandleSuplMessageL(class CSuplSessionBase *, class TRequestStatus &, class HBufC8 *)
+	?GetSUPLMessageVersionL@COMASUPLProtocolManager@@UAEHAAHABVTDesC8@@@Z @ 28 NONAME ; int COMASUPLProtocolManager::GetSUPLMessageVersionL(int &, class TDesC8 const &)
+	?ConstructL@COMASuplSettings@@AAEXXZ @ 29 NONAME ; void COMASuplSettings::ConstructL(void)
+	?NewL@COMASUPLProtocolManager@@SAPAV1@XZ @ 30 NONAME ; class COMASUPLProtocolManager * COMASUPLProtocolManager::NewL(void)
+	?HandlePacket@COMASUPLProtocolManager@@UAEXABVTDesC8@@I@Z @ 31 NONAME ; void COMASUPLProtocolManager::HandlePacket(class TDesC8 const &, unsigned int)
+	?CancelSuplTriggerSession@COMASUPLProtocolManager@@UAEXPAVCSuplSessionBase@@@Z @ 32 NONAME ; void COMASUPLProtocolManager::CancelSuplTriggerSession(class CSuplSessionBase *)
+	?InitializeL@COMASUPLProtocolManager@@UAEXPAVCSuplCommunicationManager@@AAVTRequestStatus@@@Z @ 33 NONAME ; void COMASUPLProtocolManager::InitializeL(class CSuplCommunicationManager *, class TRequestStatus &)
+	?SUPLUsage@COMASuplSettings@@QBE?AW4TSuplSettingsUsage@CSuplSettings@@XZ @ 34 NONAME ; enum CSuplSettings::TSuplSettingsUsage COMASuplSettings::SUPLUsage(void) const
 	?NewL@COMASuplCommonConfig@@SAPAV1@XZ @ 35 NONAME ; class COMASuplCommonConfig * COMASuplCommonConfig::NewL(void)
 	?SLPAddress@COMASuplSettings@@QBEABVTDesC8@@XZ @ 36 NONAME ; class TDesC8 const & COMASuplSettings::SLPAddress(void) const
 	?HandlePacketError@COMASUPLProtocolManager@@UAEXH@Z @ 37 NONAME ; void COMASUPLProtocolManager::HandlePacketError(int)
--- a/supl/locationomasuplprotocolhandler/protocolhandler/eabi/eposomasuplprotocolhandleru.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/eabi/eposomasuplprotocolhandleru.def	Wed Oct 13 15:01:35 2010 +0300
@@ -3,40 +3,40 @@
 	_ZN16COMASuplSettings10ConstructLEv @ 2 NONAME
 	_ZN16COMASuplSettings10IsHslpNullEv @ 3 NONAME
 	_ZN16COMASuplSettings11SetUIActiveEi @ 4 NONAME
-	_ZN16COMASuplSettings14SetHSLPAddressERK7TDesC16 @ 5 NONAME
-	_ZN16COMASuplSettings19ConvertIAPNameToIdLERK7TDesC16Rm @ 6 NONAME
-	_ZN16COMASuplSettings22SetHSLPAddressFromIMSIERK7TDesC16 @ 7 NONAME
-	_ZN16COMASuplSettings4NewLEv @ 8 NONAME
-	_ZN16COMASuplSettings8SetIAPIdEi @ 9 NONAME
-	_ZN20COMASuplCommonConfig20ReadOMASuplSettingsLEv @ 10 NONAME
-	_ZN20COMASuplCommonConfig4NewLEv @ 11 NONAME
-	_ZN23COMASUPLProtocolManager11InitializeLEP25CSuplCommunicationManagerR14TRequestStatus @ 12 NONAME
-	_ZN23COMASUPLProtocolManager11RunSessionLEP16CSuplSessionBaseR14TRequestStatusRK7TDesC16iiiR16TSuplTerminalQopi @ 13 NONAME
-	_ZN23COMASUPLProtocolManager11RunSessionLEP16CSuplSessionBaseR14TRequestStatusRK7TDesC16iiii @ 14 NONAME
-	_ZN23COMASUPLProtocolManager12HandlePacketERK6TDesC8j @ 15 NONAME
-	_ZN23COMASUPLProtocolManager14DestroySessionEP16CSuplSessionBase @ 16 NONAME
-	_ZN23COMASUPLProtocolManager15SetCommonConfigERP20COMASuplCommonConfig @ 17 NONAME
-	_ZN23COMASUPLProtocolManager16CancelInitializeEv @ 18 NONAME
-	_ZN23COMASUPLProtocolManager16CancelRunSessionEP16CSuplSessionBase @ 19 NONAME
-	_ZN23COMASUPLProtocolManager17CreateNewSessionLEN24CSUPLProtocolManagerBase12TSuplReqTypeEiN23RSuplTerminalSubSession16TSuplServiceTypeE @ 20 NONAME
-	_ZN23COMASUPLProtocolManager17HandlePacketErrorEi @ 21 NONAME
-	_ZN23COMASUPLProtocolManager18HandleSuplMessageLEP16CSuplSessionBaseR14TRequestStatusP6HBufC8 @ 22 NONAME
-	_ZN23COMASUPLProtocolManager19NotifyTriggerFiredLEP16CSuplSessionBaseR14TRequestStatusR20TSuplTriggerFireInfo @ 23 NONAME
-	_ZN23COMASUPLProtocolManager22GetSUPLMessageVersionLERiRK6TDesC8 @ 24 NONAME
-	_ZN23COMASUPLProtocolManager22RunSuplTriggerSessionLEP16CSuplSessionBaseR14TRequestStatusR28TSuplTerminalPeriodicTriggerRK7TDesC16iii @ 25 NONAME
-	_ZN23COMASUPLProtocolManager24CancelSuplTriggerSessionEP16CSuplSessionBase @ 26 NONAME
-	_ZN23COMASUPLProtocolManager30MakeLocationConversionRequestLEP16CSuplSessionBaseR12TGeoCellInfoR14TRequestStatus @ 27 NONAME
-	_ZN23COMASUPLProtocolManager31CancelLocationConversionRequestEP16CSuplSessionBase @ 28 NONAME
-	_ZN23COMASUPLProtocolManager4NewLEv @ 29 NONAME
-	_ZN23COMASUPLProtocolManagerC1Ev @ 30 NONAME
-	_ZN23COMASUPLProtocolManagerC2Ev @ 31 NONAME
-	_ZN23COMASUPLProtocolManagerD0Ev @ 32 NONAME
-	_ZN23COMASUPLProtocolManagerD1Ev @ 33 NONAME
-	_ZN23COMASUPLProtocolManagerD2Ev @ 34 NONAME
-	_ZNK16COMASuplSettings10IsUIActiveEv @ 35 NONAME
-	_ZNK16COMASuplSettings10SLPAddressEv @ 36 NONAME
-	_ZNK16COMASuplSettings18SLPAddressfromImsiEv @ 37 NONAME
-	_ZNK16COMASuplSettings5IAPIdEv @ 38 NONAME
+	_ZN16COMASuplSettings12SetSUPLUsageERN13CSuplSettings18TSuplSettingsUsageE @ 5 NONAME
+	_ZN16COMASuplSettings14SetHSLPAddressERK7TDesC16 @ 6 NONAME
+	_ZN16COMASuplSettings19ConvertIAPNameToIdLERK7TDesC16Rm @ 7 NONAME
+	_ZN16COMASuplSettings22SetHSLPAddressFromIMSIERK7TDesC16 @ 8 NONAME
+	_ZN16COMASuplSettings4NewLEv @ 9 NONAME
+	_ZN16COMASuplSettings8SetIAPIdEi @ 10 NONAME
+	_ZN20COMASuplCommonConfig20ReadOMASuplSettingsLEv @ 11 NONAME
+	_ZN20COMASuplCommonConfig4NewLEv @ 12 NONAME
+	_ZN23COMASUPLProtocolManager11InitializeLEP25CSuplCommunicationManagerR14TRequestStatus @ 13 NONAME
+	_ZN23COMASUPLProtocolManager11RunSessionLEP16CSuplSessionBaseR14TRequestStatusRK7TDesC16iiiR16TSuplTerminalQopi @ 14 NONAME
+	_ZN23COMASUPLProtocolManager11RunSessionLEP16CSuplSessionBaseR14TRequestStatusRK7TDesC16iiii @ 15 NONAME
+	_ZN23COMASUPLProtocolManager12HandlePacketERK6TDesC8j @ 16 NONAME
+	_ZN23COMASUPLProtocolManager14DestroySessionEP16CSuplSessionBase @ 17 NONAME
+	_ZN23COMASUPLProtocolManager15SetCommonConfigERP20COMASuplCommonConfig @ 18 NONAME
+	_ZN23COMASUPLProtocolManager16CancelInitializeEv @ 19 NONAME
+	_ZN23COMASUPLProtocolManager16CancelRunSessionEP16CSuplSessionBase @ 20 NONAME
+	_ZN23COMASUPLProtocolManager17CreateNewSessionLEN24CSUPLProtocolManagerBase12TSuplReqTypeEiN23RSuplTerminalSubSession16TSuplServiceTypeE @ 21 NONAME
+	_ZN23COMASUPLProtocolManager17HandlePacketErrorEi @ 22 NONAME
+	_ZN23COMASUPLProtocolManager18HandleSuplMessageLEP16CSuplSessionBaseR14TRequestStatusP6HBufC8 @ 23 NONAME
+	_ZN23COMASUPLProtocolManager19NotifyTriggerFiredLEP16CSuplSessionBaseR14TRequestStatusR20TSuplTriggerFireInfo @ 24 NONAME
+	_ZN23COMASUPLProtocolManager22GetSUPLMessageVersionLERiRK6TDesC8 @ 25 NONAME
+	_ZN23COMASUPLProtocolManager22RunSuplTriggerSessionLEP16CSuplSessionBaseR14TRequestStatusR28TSuplTerminalPeriodicTriggerRK7TDesC16iii @ 26 NONAME
+	_ZN23COMASUPLProtocolManager24CancelSuplTriggerSessionEP16CSuplSessionBase @ 27 NONAME
+	_ZN23COMASUPLProtocolManager4NewLEv @ 28 NONAME
+	_ZN23COMASUPLProtocolManagerC1Ev @ 29 NONAME
+	_ZN23COMASUPLProtocolManagerC2Ev @ 30 NONAME
+	_ZN23COMASUPLProtocolManagerD0Ev @ 31 NONAME
+	_ZN23COMASUPLProtocolManagerD1Ev @ 32 NONAME
+	_ZN23COMASUPLProtocolManagerD2Ev @ 33 NONAME
+	_ZNK16COMASuplSettings10IsUIActiveEv @ 34 NONAME
+	_ZNK16COMASuplSettings10SLPAddressEv @ 35 NONAME
+	_ZNK16COMASuplSettings18SLPAddressfromImsiEv @ 36 NONAME
+	_ZNK16COMASuplSettings5IAPIdEv @ 37 NONAME
+	_ZNK16COMASuplSettings9SUPLUsageEv @ 38 NONAME
 	_ZTI13COMASuplTrace @ 39 NONAME
 	_ZTI16COMASuplSettings @ 40 NONAME
 	_ZTI20COMASuplCommonConfig @ 41 NONAME
--- a/supl/locationomasuplprotocolhandler/protocolhandler/group/omasuplprotocolhandler.mmp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/group/omasuplprotocolhandler.mmp	Wed Oct 13 15:01:35 2010 +0300
@@ -72,7 +72,7 @@
 LIBRARY insock.lib
 LIBRARY lbs.lib
 LIBRARY eposnwprv.lib
-
+LIBRARY locsettingsuiclient.lib
 LIBRARY hash.lib
 LIBRARY bafl.lib  //logging
 LIBRARY flogger.lib
--- a/supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplprotocolmanager.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplprotocolmanager.h	Wed Oct 13 15:01:35 2010 +0300
@@ -254,32 +254,6 @@
      */
 	IMPORT_C virtual TInt GetSUPLMessageVersionL(TInt& aMajorVersion, const TDesC8& aReceivedMessage);
 	
-	/**
-     * Function:     CancelLocationConversionRequest
-	 * @since S60 v5.2
-     * @Description: Cancels the location conversion request
-     * @Param:       aSuplSession, session object
-     * @Returns:     None
-     *
-     */
-	
-	IMPORT_C  void CancelLocationConversionRequest(CSuplSessionBase* aSuplSession);
-	    
-	/**
-     * Function:     MakeLocationConversionRequestL
-	 * @since S60 v5.2
-     * @Description: issues the location conversion request
-     * @Param:       aSuplSession, session object
-     * @Param:       aCellInfo, cell information
-     * @Param:       aStatus, request status
-     * @Returns:     None
-     *
-     */
-	
-	IMPORT_C  void MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-	                                                  TGeoCellInfo& aCellInfo,
-	                                                  TRequestStatus& aStatus );
-	
 protected: // Construction
 	/**
 	 * COMASUPLProtocolManager,Perform the first phase of two phase construction
--- a/supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplsettings.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/inc/epos_comasuplsettings.h	Wed Oct 13 15:01:35 2010 +0300
@@ -90,7 +90,13 @@
 	*/
   IMPORT_C void SetIAPId(TInt aIAPId);
 
-	
+	/**
+	* SetSUPLUsage Method.
+	* @since S60 v3.2
+	* @param aSUPLUsage 
+	* @return None 
+	*/
+  IMPORT_C void SetSUPLUsage(CSuplSettings::TSuplSettingsUsage& aSUPLUsage );
 	
 	/**
 	* SetUIActive Method.
@@ -125,7 +131,13 @@
 	*/
   IMPORT_C TInt IAPId() const;
 
-
+	/**
+	* SUPL Usage Method.
+	* @since S60 v3.2
+	* @param None
+	* @return SUPL Usage
+	*/
+  IMPORT_C CSuplSettings::TSuplSettingsUsage SUPLUsage() const;
 	
 	/**
 	* IAPId Method.
@@ -153,7 +165,8 @@
 	// IAP Id 
 	TInt  	 iIAPId;
 
-   
+    // SUPL Usage
+    CSuplSettings::TSuplSettingsUsage iSUPLUsage; 
 	// Flag indicating the activation of settings UI
 	TBool    iSettingsUIActive;
 };
--- a/supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplprotocolmanager.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplprotocolmanager.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -577,7 +577,7 @@
 	else
 		{
 		iTrace->Trace(_L("COMASUPLProtocolManager::DeInitialize ph1 not present"), KTraceFileName, __LINE__);
-		TRAP_IGNORE(DeInitilizationCompletedL( KErrNotFound )); //ph1 is not present.
+		DeInitilizationCompletedL( KErrNotFound ); //ph1 is not present.
 		}
 	
     }            
@@ -804,39 +804,6 @@
 	return GetSuplVersion(aMajorVersion,aReceivedMessage);
 	}
 
-// -----------------------------------------------------------------------------
-// COMASUPLProtocolManager::MakeLocationConversionRequestL
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void COMASUPLProtocolManager::MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,TGeoCellInfo& aCellInfo,TRequestStatus& aStatus )
-    {
-     iTrace->Trace(_L("COMASUPLProtocolManager::MakeLocationConversionRequestL"), KTraceFileName, __LINE__);
-     if(iOMASuplProtocolHandler1)
-        {
-         iTrace->Trace(_L("COMASUPLProtocolManager::MakeLocationConversionRequestL if condition true"), KTraceFileName, __LINE__);
-        COMASUPLProtocolManager* ph1= (COMASUPLProtocolManager*) (iOMASuplProtocolHandler1);
-        ph1->MakeLocationConversionRequestL(aSuplSessn,aCellInfo,aStatus);
-        };
-    }
-
-// -----------------------------------------------------------------------------
-// COMASUPLProtocolManager::CancelLocationConversionRequest
-// 
-// 
-// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void COMASUPLProtocolManager::CancelLocationConversionRequest(CSuplSessionBase* aSuplSession)
-    {
-     if(iOMASuplProtocolHandler1)
-        {
-        COMASUPLProtocolManager* ph1= (COMASUPLProtocolManager*) (iOMASuplProtocolHandler1);
-        ph1->CancelLocationConversionRequest(aSuplSession);
-        };
-    }
 
 // -----------------------------------------------------------------------------
 // COMASUPLProtocolManager::DeInitilizationCompletedL
--- a/supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplsettings.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandler/src/epos_comasuplsettings.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -127,6 +127,27 @@
 	return iIAPId;
 	}
 
+// -----------------------------------------------------------------------------
+// COMASuplSettings::SetSUPLUsage
+// Sets the SUPL Usage
+// 
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void COMASuplSettings::SetSUPLUsage(CSuplSettings::TSuplSettingsUsage& aSUPLUsage ) 
+	{
+    iSUPLUsage = aSUPLUsage;
+	}
+
+// -----------------------------------------------------------------------------
+// COMASuplSettings::SUPLUsage() 
+// Gets the SUPL Usage
+// 
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CSuplSettings::TSuplSettingsUsage COMASuplSettings::SUPLUsage() const
+	{
+		return iSUPLUsage;
+	}
 
 
 // -----------------------------------------------------------------------------
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/eabi/eposomasuplprotocolhandler1u.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/eabi/eposomasuplprotocolhandler1u.def	Wed Oct 13 15:01:35 2010 +0300
@@ -36,27 +36,29 @@
 	_ZTI23COMASuplFallBackHandler @ 35 NONAME
 	_ZTI24COMASUPLProtocolManager1 @ 36 NONAME
 	_ZTI24COMASuplEcomEventWatcher @ 37 NONAME
-	_ZTI29COMASuplCompleteSelfRequestor @ 38 NONAME
-	_ZTV12COMASuplETel @ 39 NONAME
-	_ZTV13COMASuplState @ 40 NONAME
-	_ZTV13COMASuplTrace @ 41 NONAME
-	_ZTV15COMASuplSession @ 42 NONAME
-	_ZTV16COMASuplEndState @ 43 NONAME
-	_ZTV16COMASuplPosState @ 44 NONAME
-	_ZTV17COMASuplInitState @ 45 NONAME
-	_ZTV18COMASuplStartState @ 46 NONAME
-	_ZTV19COMASuplDialogTimer @ 47 NONAME
-	_ZTV19COMASuplIapNotifier @ 48 NONAME
-	_ZTV20COMASuplETelNotifier @ 49 NONAME
-	_ZTV20COMASuplPOSRequestor @ 50 NONAME
-	_ZTV20COMASuplPosInitState @ 51 NONAME
-	_ZTV20COMASuplTimeoutTimer @ 52 NONAME
-	_ZTV21COMASuplConnRequestor @ 53 NONAME
-	_ZTV21COMASuplResponseState @ 54 NONAME
-	_ZTV23COMASuplFallBackHandler @ 55 NONAME
-	_ZTV24COMASUPLProtocolManager1 @ 56 NONAME
-	_ZTV24COMASuplEcomEventWatcher @ 57 NONAME
-	_ZTV29COMASuplCompleteSelfRequestor @ 58 NONAME
-	_ZThn4_N24COMASUPLProtocolManager112HandlePacketERK6TDesC8j @ 59 NONAME
-	_ZThn4_N24COMASUPLProtocolManager117HandlePacketErrorEi @ 60 NONAME
+	_ZTI24COMASuplSettingsLauncher @ 38 NONAME
+	_ZTI29COMASuplCompleteSelfRequestor @ 39 NONAME
+	_ZTV12COMASuplETel @ 40 NONAME
+	_ZTV13COMASuplState @ 41 NONAME
+	_ZTV13COMASuplTrace @ 42 NONAME
+	_ZTV15COMASuplSession @ 43 NONAME
+	_ZTV16COMASuplEndState @ 44 NONAME
+	_ZTV16COMASuplPosState @ 45 NONAME
+	_ZTV17COMASuplInitState @ 46 NONAME
+	_ZTV18COMASuplStartState @ 47 NONAME
+	_ZTV19COMASuplDialogTimer @ 48 NONAME
+	_ZTV19COMASuplIapNotifier @ 49 NONAME
+	_ZTV20COMASuplETelNotifier @ 50 NONAME
+	_ZTV20COMASuplPOSRequestor @ 51 NONAME
+	_ZTV20COMASuplPosInitState @ 52 NONAME
+	_ZTV20COMASuplTimeoutTimer @ 53 NONAME
+	_ZTV21COMASuplConnRequestor @ 54 NONAME
+	_ZTV21COMASuplResponseState @ 55 NONAME
+	_ZTV23COMASuplFallBackHandler @ 56 NONAME
+	_ZTV24COMASUPLProtocolManager1 @ 57 NONAME
+	_ZTV24COMASuplEcomEventWatcher @ 58 NONAME
+	_ZTV24COMASuplSettingsLauncher @ 59 NONAME
+	_ZTV29COMASuplCompleteSelfRequestor @ 60 NONAME
+	_ZThn4_N24COMASUPLProtocolManager112HandlePacketERK6TDesC8j @ 61 NONAME
+	_ZThn4_N24COMASUPLProtocolManager117HandlePacketErrorEi @ 62 NONAME
 
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/group/omasuplprotocolhandler1.mmp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/group/omasuplprotocolhandler1.mmp	Wed Oct 13 15:01:35 2010 +0300
@@ -51,7 +51,7 @@
 SOURCE      epos_comasuplinitstate.cpp
 SOURCE      epos_comasuplposrequestor.cpp
 SOURCE	    epos_comasuplecomeventwatcher.cpp
-
+SOURCE      epos_comasuplsettingslauncher.cpp
 SOURCE      epos_comasupltrace.cpp
 SOURCE      epos_comasupldialogtimer.cpp
 SOURCE      epos_comasuplfallbackhandler.cpp
@@ -83,7 +83,7 @@
 LIBRARY insock.lib
 LIBRARY lbs.lib
 LIBRARY eposnwprv.lib
-
+LIBRARY locsettingsuiclient.lib
 LIBRARY hash.lib
 LIBRARY bafl.lib  //logging
 LIBRARY flogger.lib
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplconnrequestor.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplconnrequestor.h	Wed Oct 13 15:01:35 2010 +0300
@@ -33,7 +33,6 @@
 class COMASuplFallBackHandler;
 class COMASUPLProtocolManager1;
 class COMASuplDialogTimer;
-class CRepository;
 /**
  *  Class for doing asynchronous service  i.e. used for Sending Packet to Socket.	
  *
@@ -41,7 +40,9 @@
  *  @since S60 v3.1
  */
  
-class COMASuplConnRequestor : public CActive
+class COMASuplConnRequestor : public CActive, 
+                              public MOMASuplUICompletionObserver,  
+                              public MOMASuplDialogTimeOutNotifier
 {
 
 	enum TConnState
@@ -93,18 +94,6 @@
 		 */ 
 		void CreateConnectionL(TInt aDialogTimeOutDelay);
 		
-		
-		/**
-		* CreateConnection Method Overload. Creates the Socket required to
-		* communicate with the SLP. Called in case of NI case.
-		* @since 
-		* @param aPrompt used to show connection dialog using OCC Api's.
-		* @param aWlanOnly used to connect server using wlan only.
-		* @return None
-		* Added CreateConnectionL with aPrompt and aWLANOnly for OCC.
-		*/ 
-		void CreateConnectionL(TBool aPrompt,TBool aWlanOnly);
-		
 		/**
 		* SendPacket Method.
 		* @since Series 60 3.1
@@ -183,7 +172,9 @@
         
         void GetUsedServerAddress(TDes& aHSLPAddressUsed);
         
-       
+        void SettingsUICompletedL(TInt aError);
+        void SettingsUsageUICompletedL(TInt /*aError*/) {}
+        void SettingsTimeOutUICompletedL(TInt /*aError*/) {}
         TBool ConvertIAPNameToIdL(const TDesC& aIAPName, TUint32& aIAPId);
         void UpdateNetInfo(const TTime& aLastTimeUsed,TInt& aMcc,TInt& aMnc,
 							              TInt& aCid,TInt& aLac,TInt& aType,TInt& aErrorCode);
@@ -217,7 +208,13 @@
 		
 		void SaveAccessPoint(const TDesC& aIapName);
 
-		
+		/**
+		 * Dialog Timeout Notifier Method.
+		 * @since Series 60 9.1 TB
+		 * @param None
+		 * @return None
+		 */
+		virtual void DialogTimerExpiredL();	
   	protected :  // Functions from CActive
       /**
       * From CActive 
@@ -274,28 +271,29 @@
 			//For trying for once with newly generated HSLP.
 			TBool iTLSAuthenticationFailed;
 			
-			//SUPLSettings,Ownership is with the object
+			//SUPLSettings
 			CSuplSettingsInternal *iSuplSettings;
 			
-			CRepository*            iRepository;//Ownership is with the object
-			
 			//Trace Utility
-			COMASuplTrace* iTrace; //Ownership is with the object
+			COMASuplTrace* iTrace;
 			TBool iIsHSLPGenerated;
             TBool iHslpAddrFromImsiUsed;
             
             TInt iLastConnectionError;
             
-            COMASuplFallBackHandler* iFallBackHandler;//Ownership is with the object
+            COMASuplFallBackHandler* iFallBackHandler;
             
             TBool iIsSettingInitilized;
             
             TInt64 iCurrentSLPId;
-            TBool iPrompt;
+            
+            COMASuplDialogTimer* iDialogTimer;
             
-            TBool iWlanOnly;
+            TBool iIapDialogShown;
             
-            TBool iIsStaleLocIdPresent;
+            TBool iIapDlgTimerExpired;
+            
+            TBool iIsTimeoutDialogTimerStarted;
 
 };
 
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplfallbackhandler.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplfallbackhandler.h	Wed Oct 13 15:01:35 2010 +0300
@@ -88,6 +88,8 @@
 		
 		void UpdateSLPListForHomeUsage(TBool aHomeNetwork);
 		
+		void UpdateSLPListWithAccessPoint(const TDesC& aIapName);
+		
 		
 	private : 
 	
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplprotocolmanager1.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplprotocolmanager1.h	Wed Oct 13 15:01:35 2010 +0300
@@ -81,6 +81,7 @@
 								public MSuplEcomEventObserver,
 								public MSuplSettingsObserver,
 								public MOMASuplTimeOutNotifier,
+						        public MOMASuplUISettingsObserver,
                                 public MOMASuplETelNotifierObserver
     {
     
@@ -271,12 +272,40 @@
 	
 public: 
 
+	// For setting UI observer    
+	TInt LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp);
+	TInt LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming);
+	TInt LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver );
+	void UpdateAllSubSessnsInSameSession(TInt aIpcSessionId);
 	
-	void UpdateAllSubSessnsInSameSession(TInt aIpcSessionId);
+	void CancelUiLaunch();
 
 	void SettingsChanged();
 
-	
+	TInt GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId);
+	/** 
+	* This callback method is used to notify the client about 
+	* the completion of UI launch
+	* @param aError - Error during Launch
+	* @return None
+	*/
+	void SettingsUICompletedL(TInt aError);
+
+	/** 
+	* This callback method is used to notify the client about 
+	* the completion of UI launch
+	* @param aError - Error during Launch
+	* @return None
+	*/
+	void SettingsUsageUICompletedL(TInt aError);
+
+	/** 
+	* This callback method is used to notify the client about 
+	* the completion of UI completion
+	* @param aError - Error during Launch
+	* @return None
+	*/
+	void SettingsTimeOutUICompletedL(TInt aError);
 	
 public: //From base class MSuplSettingsObserver
 
@@ -429,7 +458,13 @@
 	void ProcessInvalidSessionL(COMASuplAsnMessageBase* aDecodedMsg);
 
     
-    
+    /**
+     * ReadSuplUsage, Reads OMA Supl Usage.
+     * @since S60 v3.1u          
+     * @param      None. 
+     * @return     None.
+     */
+    void ReadSuplUsage();
 	
     
     /**
@@ -477,28 +512,6 @@
 public:  // COMASUPLProtocolManager
     void SetCommonConfig(COMASuplCommonConfig*& aCommmonConfig);
 
-public:
-    /*
-     * Method used to make conversion request for retrieving position of a location id.
-     * 
-     * @since S60 v5.2
-     * @param aSuplSessn session object on which processing will start,ownership is not transferred
-     * @param aCellInfo contains cell id information and cell id type
-     * @param aStatus On return, the status of the request
-     * 
-     */
-    void MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-                                                      TGeoCellInfo& aCellInfo,               
-                                                      TRequestStatus& aStatus );
-    /*
-     * Method used to make cancel a conversion request for retrieving position of a location id,,ownership is not transferred.
-     * 
-     * @since S60 v5.2
-     * @param aSuplSessn session object which is to be cancelled
-     * 
-     */
-    void CancelLocationConversionRequest(CSuplSessionBase* aSuplSession);
-    
 private: // Data Members
 
 	//Holds all session objects created by CreateNewSession
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplsession.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplsession.h	Wed Oct 13 15:01:35 2010 +0300
@@ -95,13 +95,15 @@
 
 class COMASuplSession : public CSuplSessionBase,
 						public MOMASuplConnObserver,
+                        public MOMASuplUICompletionObserver,
 						public MCompleteSelfRequest,
 						public MOMASuplMsgStateObserver,
 						public MOMASuplObserver,
 						public MOMASuplPrivacyObserver,
 						public MOMASuplTimeOutNotifier,
                         public MOMASuplEtelCompletionObserver,
-                        public MOMASuplIapChangeNotifierObserver
+                        public MOMASuplIapChangeNotifierObserver,
+                        public MOMASuplDialogTimeOutNotifier
 {
 
   public:  // Constructors and destructor
@@ -207,6 +209,27 @@
 	        */
 			void GetPositionComplete(TInt aError);
 			
+        	/** 
+            * This callback method is used to notify the client about 
+            * the completion of UI launch
+            * @param aError - Error during Launch
+            * @return None
+            */
+        	void SettingsUICompletedL(TInt aError);
+		
+            /** 
+            * This callback method is used to notify the client about 
+            * the completion of UI
+            * @return None
+            */
+			void SettingsUsageUICompletedL(TInt aError);
+			
+            /** 
+            * This callback method is used to notify the client about 
+            * the completion of UI 
+            * @return None
+            */
+			void SettingsTimeOutUICompletedL(TInt aError);
 			
 	public: 			 
 			/**
@@ -232,14 +255,10 @@
 			* @param aAllowedCapabilities, Capabilities of SET
 			* @param aSessionIdSeed, seed value of session
 			* @param aRequestID, Request Identification number.
-			* @param aIsStaleCellId, indicates if this session is for a stale cell id conversion
-			* @param aLocationId , contains cell id parameters for which position is to be retrieved,ownership is transferred to this object
-			* @param aPrompt indicates if the user is to be prompted when making location requests
-			* @param aWlanOnly ,request to connect server using wlan connection only using OCC Api's
 			* @return None
 			*/
 			virtual void RunSuplSessionL(TRequestStatus& aStatus, TBool aFirstReq, const TDesC& aHslpAddress, TBool aFallBack, TInt aAllowedCapabilities, 
-										 TInt aSessionIdSeed, TInt aRequestID = 0,TBool aIsStaleCellId = EFalse,COMASuplLocationId* aLocationId = NULL,TBool aPrompt = EFalse,TBool aWlanOnly = EFalse);
+										 TInt aSessionIdSeed, TInt aRequestID = 0);
 										 
 			/**
 			* RunSessionL, Starts the SUPL Sesssion for Terminal Initiated Location Request
@@ -906,7 +925,13 @@
 			*/
 			virtual void TimerExpiredL();
             
-			
+			/**
+			* Dialog Timeout Notifier Method.
+			* @since Series 60 9.1 TB
+			* @param None
+			* @return None
+			*/
+            virtual void DialogTimerExpiredL();
     public:  // Usage dialog
             void SetSuplUsageFlag();
             void ReSetSuplUsageFlag();
@@ -914,7 +939,6 @@
             void StartUsageDialogLaunchL();
             TBool IsEtelNotifySet();
             TBool IsEtelRoamingSet();
-            TBool HasMeLaunchedUsageDialog();
 			TUint GetPortNumUsed();
 	 private:
 	 
@@ -1061,7 +1085,8 @@
 			
 			//Timeout Timer
 			COMASuplTimeoutTimer* iTimer;
-	
+
+			COMASuplDialogTimer* iDialogTimer;
             //Roaming indicator
             TBool iRoaming;
 
@@ -1110,20 +1135,9 @@
             
             COMASuplAsnHandlerBase* iOMASuplAsnHandlerBaseImpl; 
             
-            // Network privacy handle.Ownership is with this object
             CPosNetworkPrivacy* iNetworkPrivacy;
-            //Stale cell id which for which position is to be retrieved.Ownership is with this object
-            COMASuplLocationId* iStaleLocationId;
-			//indicates if this session is for a stale cell id conversion
-            TBool   iIsStaleLocIdPresent;
-			//indicates if the user needs to be prompted when making a location request
-            TBool   iStaleLocIdPrompt;
-            TBool iIhaveLaunchedUsagedialog;
 
             TUint iPortNum;
-            
-            //To indicate WLAN connection for OCC
-            TBool iWlanOnly; 
     };
 
 #endif      // C_COMASUPLSESSION_H
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplsettingslauncher.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplsettingslauncher.h	Wed Oct 13 15:01:35 2010 +0300
@@ -151,12 +151,7 @@
 	    TBuf8<256>	buffer1;
 	    TBuf8<256>  buffer2;
         TBool iRoaming;
-        
-		/**
-		* IAP Selector Handle
-		*/
-	    RGenConAgentDialogServer    	iIapSelector;
-	    
+    
 		/**
 		* Selected IAP ID
 		*/
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplstartstate.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplstartstate.h	Wed Oct 13 15:01:35 2010 +0300
@@ -108,17 +108,6 @@
 			* @return None
 			*/
 			void SetQop(TSuplTerminalQop& aQop);
-			
-			/*
-			 * SetStaleCellIdToUse Method is used to set the Stale Cell id to use in case of
-			 *                     retrieving position for an already retrieved cell id.
-			 *                     For example : in case of Geo Tagged Images 
-			 * @since S60 v5.2
-			 * @param aLocationId This is the locatiod id parameter containing the stale cell id
-			 * @return None                     
-			 */
-
-	            void SetStaleCellIdToUse(COMASuplLocationId* aLocationId);
 	
 	public: //MOMASuplETelObserver
 	
@@ -295,9 +284,6 @@
 			TOMASuplECellInfo iMmCellInfo;
 			
 			COMASuplAsnHandlerBase* iOMASuplAsnHandlerBase;
-			
-			//Indicates whether we need to create start message with Stale Cell Id
-			TBool iIsStaleCellId;
 
 };
 
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplstate.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/inc/epos_comasuplstate.h	Wed Oct 13 15:01:35 2010 +0300
@@ -25,6 +25,8 @@
 #define PRINT_MESSAGE
 #endif        
 
+//#undef PRINT_MESSAGE
+
 	/** 
 	MOMASuplMsgStateObserver Notifies about complaetion of operation with or without error.
 	*  @lib eposomasuplprotocolhandler.lib
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplconnrequestor.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplconnrequestor.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -16,23 +16,21 @@
  */
 
 
-#include <centralrepository.h>
 
 #include "epos_comasuplprotocolmanager1.h"
 #include "epos_csuplcommunicationmanager.h"
 #include "epos_csuplsettingsinternal.h"
-
+#include "epos_csuplsettingparams.h"
 #include "epos_omasuplconstants.h"
 #include "epos_comasuplconnrequestor.h"
 #include "epos_momasuplconnobserver.h"
 #include "epos_comasupltrace.h"
 #include "epos_comasuplfallbackhandler.h"
-#include "epos_csuplsettingsinternalcrkeys.h"
-
 
 #include "epos_comasupldialogtimer.h"
 _LIT(KTraceFileName,"SUPL_OMA_SESSION::epos_comasuplconnrequestor.cpp");
 
+const TInt KStringLength = 100;
 
 
 // ============================ MEMBER FUNCTIONS ===============================
@@ -42,18 +40,17 @@
 // C++ constructor can NOT contain any code, that might leave.
 // -----------------------------------------------------------------------------
 //
-COMASuplConnRequestor::COMASuplConnRequestor(CSuplCommunicationManager& aCommMgr,
-        COMASUPLProtocolManager1& aProtoMgr, 
-        TUint aPort, 
-        MOMASuplConnObserver& aObserver):
-        CActive( EPriorityStandard ),
-        iCommMgr(aCommMgr), 
-        iProtocolManager(aProtoMgr),
-        iPort(aPort),
-        iObserver( aObserver),iPrompt(EFalse),iWlanOnly(EFalse),iIsStaleLocIdPresent(EFalse)
-        {
+COMASuplConnRequestor::COMASuplConnRequestor(
+        CSuplCommunicationManager& aCommMgr,
+        COMASUPLProtocolManager1& aProtoMgr, TUint aPort,
+        MOMASuplConnObserver& aObserver) :
+    CActive(EPriorityStandard), iCommMgr(aCommMgr), iProtocolManager(
+            aProtoMgr),iConnection(NULL), iPort(aPort), iObserver(aObserver), iIapDialogShown(
+            EFalse), iIapDlgTimerExpired(EFalse),
+            iIsTimeoutDialogTimerStarted(EFalse)
+    {
 
-        }
+    }
 
 // -----------------------------------------------------------------------------
 // COMASuplConnRequestor::ConstructL
@@ -72,11 +69,12 @@
     iHslpAddrFromImsiUsed = EFalse;
 
     iFallBackHandler = COMASuplFallBackHandler::NewL(*iSuplSettings);
-    iRepository = CRepository::NewL(KCRUidSuplSettings);
+
     iLastConnectionError = KErrNone;
 
     iCurrentSLPId = KErrNotFound;
 
+    iDialogTimer = COMASuplDialogTimer::NewL(*this);
     }
 
 // -----------------------------------------------------------------------------
@@ -106,12 +104,15 @@
 COMASuplConnRequestor::~COMASuplConnRequestor()
     {
     Cancel();
-  
+    if(iDialogTimer)
+        {
+        iDialogTimer->Cancel();
+        delete iDialogTimer;
+        iDialogTimer = NULL;
+        }
     delete iSuplSettings;
     delete iTrace;
     delete iFallBackHandler;
-    delete iRepository;
-        iRepository = NULL;
     }
 
 // -----------------------------------------------------------------------------
@@ -135,73 +136,57 @@
 		
 		if(errorCode == KErrNone)
 			{
-				TBool ret = ConvertIAPNameToIdL(iapName,iIAPId);
-				if(!ret)
-					{
-						buffer.Copy(_L("No access point configured for "));
-						buffer.Append(iHostAddress);
-						iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
-						buffer.Copy(_L("Calling CreateConnection with no IAP"));
-						iTrace->Trace(buffer,KTraceFileName, __LINE__);
-						iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,-1);
-						OpenConnection();
-						
-					}
-        else
-            {
-            buffer.Copy(_L("Connecting to "));
-            buffer.Append(iHostAddress);
-            iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
-            iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,iIAPId);
-            OpenConnection();
-            }	
-        }
-    else
-        {
-        iHostAddress.Zero();
-        iObserver.OperationCompleteL(errorCode);
-        }
+			TBool ret = ConvertIAPNameToIdL(iapName,iIAPId);
+			if(!ret)
+				{
+					buffer.Copy(_L("No access point configured for "));
+					buffer.Append(iHostAddress);
+					iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
+					if( isIapDialogShown )
+						{
+						TInt err = iProtocolManager.LaunchSettingsUI(this,iHostAddress);
+						if(err != KErrNone)
+							{
+							buffer.Copy(_L("Error in launching UI : "));
+							buffer.AppendNum(err);
+							iTrace->Trace(buffer,KTraceFileName, __LINE__);                 
+							iHostAddress.Zero();
+							iObserver.OperationCompleteL(err);
+							}
+							else
+							iIapDialogShown = ETrue;
+						}
+					
+					
+				}
+			else
+	            {
+	            iIsTimeoutDialogTimerStarted = EFalse;
+	            iDialogTimer->Cancel();
+	            buffer.Copy(_L("Connecting to "));
+	            buffer.Append(iHostAddress);
+	            iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
+	            iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,iIAPId);
+	            OpenConnection();
+	            }	
+			}
+	    else
+	        {
+	        iHostAddress.Zero();
+	        iObserver.OperationCompleteL(errorCode);
+	        }
 		}
     }
-    
- 
- // -----------------------------------------------------------------------------
-// COMASuplConnRequestor::CreateConnection for OCC
-// -----------------------------------------------------------------------------
-//    
-void COMASuplConnRequestor::CreateConnectionL(TBool aPrompt,TBool aWlanOnly)
-    {
-        TBuf<30> GeoTagServerName;
-        TBuf<128> buffer;
-        iState = EConnecting;  
-       
-        iPrompt = aPrompt;
-        iWlanOnly = aWlanOnly;
-        iIsStaleLocIdPresent = ETrue;
-               
-        TInt err;
-        err = iRepository->Get(KSuplGeoInfoConvServerName, GeoTagServerName);
-        User::LeaveIfError(err);
-        buffer.Copy(_L("Connecting to"));
-        buffer.Append(GeoTagServerName);
-        iTrace->Trace(buffer,KTraceFileName, __LINE__);                 
-        iTls = ETrue;
-        iPskTls = EFalse;
-        iIAPId = 0;
-        
-        
-        iConnection = iCommMgr.CreateConnectionL(GeoTagServerName,iTls,iPskTls,iPort,iIAPId);
-       
-        OpenConnection();
-        
-    }
 
 // -----------------------------------------------------------------------------
 // COMASuplConnRequestor::OpenConnection
 // -----------------------------------------------------------------------------
- 
-void COMASuplConnRequestor::CreateConnectionL(TInt /*aDialogTimeOutDelay*/)
+//    
+void COMASuplConnRequestor::CreateConnectionL(TInt aDialogTimeOutDelay)
     {
+    iIsTimeoutDialogTimerStarted = ETrue;
+
+    iDialogTimer->StartTimer(aDialogTimeOutDelay); 
     CreateConnectionL();
     }
 // -----------------------------------------------------------------------------
@@ -245,17 +230,8 @@
         if(iConnection)
             {
             iState = EConnecting;
-            if(iIsStaleLocIdPresent)
-                {
-                iTrace->Trace(_L("OpenConnection OCC"),KTraceFileName, __LINE__);
-                iConnection->Connect(iStatus,iPrompt,iWlanOnly);
-                }
-            else
-                {
-                iConnection->Connect(iStatus);
-                }
-           SetActive();
-           
+            iConnection->Connect(iStatus);
+            SetActive();
             }
         }
     else
@@ -324,17 +300,7 @@
                 {
                 iHostAddress.Zero();
                 CloseConnection();
-                if(iIsStaleLocIdPresent)
-                    {
-                    iTrace->Trace(_L("Request completed with error..."), KTraceFileName, __LINE__);       
-                    iObserver.OperationCompleteL(iLastConnectionError);
-                    }
-                else
-                    {
-                    iTrace->Trace(_L("Setting API Initilizing Completed..."), KTraceFileName, __LINE__);       
-                    CreateConnectionL();
-                    }
-                
+                CreateConnectionL();
                 }
             else
                 {
@@ -429,7 +395,6 @@
 void COMASuplConnRequestor::InitilizeSetting()
     {
     iTrace->Trace(_L("Intilizing Setting API..."), KTraceFileName, __LINE__); 				
-    
     iSuplSettings->Initialize(iStatus);
     SetActive();
     }
@@ -453,13 +418,15 @@
     }	
 
 TUint COMASuplConnRequestor::GetPortNumber()
-	{
-	if(iConnection)
-		return iConnection->GetPortNumberUsed();
-	else 
-		return 0;
-	}
-	
+    {
+    if (iConnection)
+        {
+        return iConnection->GetPortNumberUsed();
+        }
+    else
+        return 0;
+    }
+
 // -----------------------------------------------------------------------------
 // COMASuplConnRequestor::SetDefaultParametersL
 // -----------------------------------------------------------------------------
@@ -507,7 +474,106 @@
     return result;
     }
 
+// -----------------------------------------------------------------------------
+// COMASuplConnRequestor::SettingsUICompleted
+// 
+// -----------------------------------------------------------------------------
 
+void COMASuplConnRequestor::SettingsUICompletedL(TInt aError)
+    {
+		TBuf<128> buffer(_L("COMASuplConnRequestor:SettingsUICompleted Error: "));
+    buffer.AppendNum(aError);
+    iTrace->Trace(buffer,KTraceFileName, __LINE__); 
+
+    if (iIsTimeoutDialogTimerStarted)
+        {                
+        iTrace->Trace(_L("COMASuplSession::SettingsUICompleted, stopping timer "), KTraceFileName, __LINE__);
+        iIsTimeoutDialogTimerStarted = EFalse;                    
+        iDialogTimer->StopTimer();
+        }
+    if (iIapDlgTimerExpired)
+        {
+        iIapDlgTimerExpired = EFalse;
+        iIapDialogShown = EFalse;
+        iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+        iObserver.OperationCompleteL(KErrNone);
+        return;
+        }
+    if(aError == KErrNone)
+        {
+        TInt err = KErrGeneral;
+        iTrace->Trace(
+                _L("COMASuplConnRequestor::SettingsUICompletedL KErrNone"),
+                KTraceFileName, __LINE__);
+        TBuf<100> IapName, buffer;
+        CServerParams* params = CServerParams::NewL();
+
+        err = iSuplSettings->GetSlpInfoAddress(iHostAddress, params);
+        iTrace->Trace(_L("iSuplSettings->GetSlpInfoAddress returned : "),
+                KTraceFileName, __LINE__);
+        buffer.AppendNum(err);
+        iTrace->Trace(buffer, KTraceFileName, __LINE__);
+
+        // Fix for ou1cimx#475026 and ou1cimx#471138
+        // When there are no access points defined for any SUPL server, the user is asked to
+        // select the access point only once and same access point is used for the following servers.
+        if (err == KErrNone)
+            {
+            HBufC* aServerAddress = HBufC::NewL(KStringLength);
+            HBufC* aIapName = HBufC::NewL(KStringLength);
+            TInt64 aSlpId;
+            TBool aServerEnabled, aSimChangeRemove, aUsageInHomeNw, aEditable;
+
+            err = params->Get(aSlpId, aServerAddress->Des(), aIapName->Des(),
+                    aServerEnabled, aSimChangeRemove, aUsageInHomeNw,
+                    aEditable);
+
+            iTrace->Trace(_L("params->Get() returned: "), KTraceFileName,
+                    __LINE__);
+            buffer.Zero();
+            buffer.AppendNum(err);
+            iTrace->Trace(buffer, KTraceFileName, __LINE__);
+            IapName.Copy(*aIapName);
+            IapName.LowerCase();
+
+            //converting the iap name to id.
+            ConvertIAPNameToIdL(IapName, iIAPId);
+            //updating the list of SLP with the chosen access point
+            iFallBackHandler->UpdateSLPListWithAccessPoint(IapName);
+
+            delete aServerAddress;
+            delete aIapName;
+            delete params;
+
+            // if the getting the list parameters is success opening the connection with the chosen access point
+            if (err == KErrNone)
+                {
+                buffer.Copy(_L("Connecting to "));
+                buffer.Append(iHostAddress);
+                buffer.Append(_L(" using IAP "));
+                buffer.Append(IapName);
+                iTrace->Trace(buffer, KTraceFileName, __LINE__);
+                iConnection = iCommMgr.CreateConnectionL(iHostAddress, iTls,
+                        iPskTls, iPort, iIAPId);
+                OpenConnection();
+                }
+            else
+                {
+                iObserver.OperationCompleteL(err);
+                }
+            }
+        else
+            {
+            delete params;
+            iObserver.OperationCompleteL(err);
+            }
+        }
+    else
+        {
+        iObserver.OperationCompleteL(aError);
+        }
+
+    }
 
 // -----------------------------------------------------------------------------
 // COMASuplConnRequestor::SaveAccessPoint
@@ -573,5 +639,19 @@
     iFallBackHandler->UpdateSLPListForHomeUsage(aHomeNetwork);
     }
 
+// -----------------------------------------------------------------------------
+// COMASuplConnRequestor::DialogTimerExpiredL
+// Checks whether UI is displayed or not previously
+// 
+// -----------------------------------------------------------------------------
+void COMASuplConnRequestor::DialogTimerExpiredL()
+    {
+    iTrace->Trace(_L("COMASuplConnRequestor:Timer Expired for SUPL IAP Dialog"), KTraceFileName, __LINE__); 
 
+    if (!iIapDialogShown)
+        iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+    else
+        iIapDlgTimerExpired = ETrue;  
+    return; 
+    }
 //  End of File
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplendstate.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplendstate.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -259,15 +259,10 @@
 	{
 		return ETrue;
 	}
-	
+
 	if(iEncodedSuplInit && (iEncodedSuplInit->Length()) > 0 &&
 	iHSLPAddress && iHSLPAddress->Length() > 0)
 	{
-		TBuf<64> serverCheck;
-	serverCheck.Copy(*iHSLPAddress);
-	iTrace->Trace(_L("Server Address for VER : "), KTraceFileName, __LINE__); 
-	iTrace->Trace(serverCheck, KTraceFileName, __LINE__); 
-	
 		TInt blockSize = 64;
 	    TChar ipad = 0x36;
 	    TChar opad = 0x5c;
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasupletel.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasupletel.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:   Implementation of COMASuplEtel Class
-*  Version     : %version: 3.1.1 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 3 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -524,7 +524,7 @@
 	 				
 						for(TInt k = 0; k < KOMASUPLMaxTimeSlotIscpAmount; k++ )	 				
 							{
-								iOMASuplwcdmaCellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k] = iCustomWCDMACellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k];
+								iOMASuplwcdmaCellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k] = iOMASuplwcdmaCellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k];
 							}
 	 					
 	 			}
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplfallbackhandler.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplfallbackhandler.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -804,6 +804,31 @@
 }
 
 // -----------------------------------------------------------------------------
+// COMASuplFallBackHandler::UpdateSLPListWithAccessPoint
+// -----------------------------------------------------------------------------
+//    
+void COMASuplFallBackHandler::UpdateSLPListWithAccessPoint(const TDesC& aIapName)
+{
+		iTrace->Trace(_L("UpdateSLPListWithAccessPoint Start"),KTraceFileName, __LINE__); 	
+	
+				TInt TotalServers = iSLPList->Count();	
+				TInt cnt = 0;
+				while( cnt < TotalServers )
+				{
+					if (((*iSLPList)[cnt].iIapName.Length() == 0)) ;
+					{
+						(*iSLPList)[cnt].iIapName.Copy(aIapName);
+					}
+					cnt++;
+				}
+				
+		iTrace->Trace(_L("UpdateSLPListWithAccessPoint End"),KTraceFileName, __LINE__);
+			
+		PrintSLPList();
+		
+}
+
+// -----------------------------------------------------------------------------
 // COMASuplFallBackHandler::GetFirstEnabledSLPL
 // -----------------------------------------------------------------------------
 //    
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplinitstate.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplinitstate.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -257,7 +257,7 @@
 		// Notify Network Privacy of the request information
 		// Synchronous call 
 		TInt RequestId;
-		TRAP_IGNORE(iNetworkPrivacy->NotifyLocationRequestL(*suplReqInfo,RequestId);)
+		iNetworkPrivacy->NotifyLocationRequestL(*suplReqInfo,RequestId);
 		
 		if(iIsNotificationOnly)
 		{
@@ -304,6 +304,7 @@
 	if(!clientError)
 		{
 		// Set name of Client
+			
 		if(client)
 			{
 				suplReqInfo->SetLCSClientL(*client,iIdType);	
@@ -320,12 +321,8 @@
 			// what decision the GSM Network will make if the user won't answer before 
 			// a timeout comes in from GSM Network. In this case verification will 
 			// be rejected.
-			iTrace->Trace(_L("Calling iNetworkPrivacy->VerifyLocationRequestL"), KTraceFileName, __LINE__); 					
-			
-			
-			TRAP_IGNORE(iNetworkPrivacy->VerifyLocationRequestL(*suplReqInfo, 
-				iGSMRequestId, *this, aTimeOutStrategy);) 					
-				
+			iNetworkPrivacy->VerifyLocationRequestL(*suplReqInfo, 
+				iGSMRequestId, *this, aTimeOutStrategy);
 	        TBuf<64> msg;
 	        msg.Copy(_L("1.0 Privacy Fw Generated Verification Request id:"));
 	        msg.AppendNum(iGSMRequestId);
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplposinitstate.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplposinitstate.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -242,10 +242,7 @@
 		iVerPresent = ComputeSuplInitVerL();
 		if(iVerPresent)
 			{
-			if(!iIsStaleCellId) // if this request is for a stale cell id conversion then do not retrieve current location id
-				iLocationIDRequestor->GetLocationID();
-			else
-			    iMsgStateObserver->OperationCompleteL(KErrNone);
+				iLocationIDRequestor->GetLocationID();		
 			}
 		else
 			{
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplprotocolmanager1.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplprotocolmanager1.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -46,9 +46,6 @@
 #include "epos_comasupltimeouttimer.h"
 #include "epos_omasuplconstants.h"
 #include "epos_comasuplcommonconfig.h"
-#include "epos_suplgeocellinfo.h"
-
-#include "epos_comasupllocationid.h"
 
 _LIT(KTraceFileName,"SUPL_OMA_PH::EPos_COMASUPLProtocolManager1.cpp");
 
@@ -105,7 +102,11 @@
 // Destructor.
 EXPORT_C COMASUPLProtocolManager1::~COMASUPLProtocolManager1()
 	{
-
+	if(iSettingsLauncher)		
+		{
+			iSettingsLauncher->CancelLaunch();
+		}
+	
 	if(iSuplSettings)
 		{
 		iSuplSettings->SetUIActive( EFalse );
@@ -134,7 +135,7 @@
 	
 	delete iSuplEcomEventWatcher;
 	
-    
+    delete iSettingsLauncher;
     delete iNotifier;
 	iMobilePhone.Close(); 
 	iTelServer.Close();
@@ -172,7 +173,7 @@
 	iSuplStorageSettings = CSuplSettingsInternal::NewL();
 	iSuplStorageSettings->SetObserverL(*this);
 
-   	
+   	iSettingsLauncher = COMASuplSettingsLauncher::NewL( *this );
 	
    	iIMSI.CreateL( KMaxIMSILen );
 	iIsPreviouslyDecodingFailed = EFalse;
@@ -249,7 +250,7 @@
 	//Connect to ETel
 	User::LeaveIfError(ConnectToETelL());
   
-    
+    ReadSuplUsage();    
 	 
 	if(iSuplEcomEventWatcher)
 		{
@@ -527,11 +528,6 @@
 	iTrace->Trace(_L("COMASUPLProtocolManager1::DestroySession Destroy Session"), KTraceFileName, __LINE__);
 
 	COMASuplSession* OMASession =  static_cast<COMASuplSession*>(aSuplSession);
-	  if (OMASession->HasMeLaunchedUsageDialog())
-    {
-    		iTrace->Trace(_L("Setting NULL."), KTraceFileName, __LINE__);
-        iSessnUIObserver = NULL;
-    }   
     if (OMASession->GetSessionUIFlag())
     	{
 	    OMASession->DestroySession();
@@ -1042,14 +1038,6 @@
 		iTrace->Trace(_L("Cannot found Supl session."), KTraceFileName, __LINE__);
 		return;
 		}
-	
-		COMASuplSession* OMASession =  static_cast<COMASuplSession*>(aSuplSession);
-    if (OMASession->HasMeLaunchedUsageDialog())
-    {
-    		iTrace->Trace(_L("Setting NULL."), KTraceFileName, __LINE__);
-        iSessnUIObserver = NULL;
-    }   
-             
 		aSuplSession->CancelRunSession();	
 		return ;
 	}
@@ -1199,6 +1187,7 @@
     if( aEvent == MSuplSettingsObserver::ESuplSettingsEventSuplUsageChange)
         {
         iTrace->Trace(_L("Setting Changed.SUPL Usage changed.. Reeading once again..."), KTraceFileName, __LINE__);
+        ReadSuplUsage();
 		}
 	else if( aEvent == MSuplSettingsObserver::ESuplSettingsEventCommParameterChange)
 		{
@@ -1625,6 +1614,68 @@
 	}
 	
 	
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::LaunchSettingsUI
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager1::LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp)
+    {        
+	iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchSettingsUI"), KTraceFileName, __LINE__);
+
+    if(iUIRequestArray.Count() <= 0 )
+    	{
+		iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchSettingsUI"), KTraceFileName, __LINE__);
+		iUIRequestArray.Append(aObserver);
+		iSuplSettings->SetUIActive(ETrue);
+		iCurrentlyUsedHslp.Copy(aForHslp);
+		return iSettingsLauncher->LaunchSettings();	
+    	}
+    else if(iCurrentlyUsedHslp.Compare(aForHslp) == KErrNone)
+    	{
+		iUIRequestArray.Append(aObserver);
+    	}
+    else
+    	{
+		return KErrInUse;                
+    	}
+    		
+	return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::SettingsUICompletedL
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager1::SettingsUICompletedL(TInt aError)
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUICompletedL"), KTraceFileName, __LINE__);
+    iSuplSettings->SetUIActive(EFalse);
+
+    if (iDeInitDone)
+        {
+	    iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUICompletedL, de-init done.  Completing request"), KTraceFileName, __LINE__);
+        iDeInitDone = EFalse;
+        User::RequestComplete(iDeInitRequestStatus,KErrNone);
+        }                
+    else
+        {
+    	for(TInt i = 0; i < iUIRequestArray.Count(); i++)
+    		{
+    			iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUICompletedL,Forwarding ConnRerquestor "), KTraceFileName, __LINE__);
+    			MOMASuplUICompletionObserver* observer = iUIRequestArray[i];
+    			observer->SettingsUICompletedL(aError);
+    		}
+
+        }
+        
+    iCurrentlyUsedHslp.Copy(_L(""));	
+    iUIRequestArray.Reset();
+    }
+
 
 // -----------------------------------------------------------------------------
 // COMASUPLProtocolManager1::DeInitialize
@@ -1678,11 +1729,72 @@
     return networkMode;
 	}
 
-
-
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::LaunchSuplUsageSettingsUI
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager1::LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming)	
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchSuplUsageSettingsUI"), KTraceFileName, __LINE__);
+    if (iSuplSettings->IsUIActive() && !iTimeOutDialogPresent)
+        return KErrInUse;                
+    // If timeout dialog is present, close it
+    if (iTimeOutDialogPresent)
+        {
+        iTimeOutDialogPresent = EFalse;
+        iSuplSettings->SetUIActive(EFalse);
+        iSettingsLauncher->Cancel();
+        }                
+    iSessnUIObserver = aObserver;            
+    iSuplSettings->SetUIActive(ETrue);
+    return iSettingsLauncher->LaunchSuplUsageSettingsUI(aRoaming);
+	}
 
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::SettingsUsageUICompletedL
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager1::SettingsUsageUICompletedL(TInt aError)
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUsageUICompletedL"), KTraceFileName, __LINE__);
+    iSuplSettings->SetUIActive(EFalse);
 
+    if (iDeInitDone)
+        {
+	    iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsUsageUICompletedL, de-init done.  Completing request"), KTraceFileName, __LINE__);
+        iDeInitDone = EFalse;
+        User::RequestComplete(iDeInitRequestStatus,KErrNone);
+        }                
+    else
+        {
+        if (iSessnUIObserver)                
+        	iSessnUIObserver->SettingsUsageUICompletedL(aError);
+        }
 
+    CheckOutstandingUsageUIRequestsL();
+	}
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::ReadSuplUsage
+// Reads Supl Usage from Central Repository
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager1::ReadSuplUsage()
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager1::ReadSuplUsage start"), KTraceFileName, __LINE__);	
+	CSuplSettings::TSuplSettingsUsage suplUsage;
+	TInt err = iSuplStorageSettings->GetSuplUsage(suplUsage);		
+	if(err == KErrNone ) 
+		{
+			iSuplSettings->SetSUPLUsage(suplUsage);
+		}
+	iTrace->Trace(_L("COMASUPLProtocolManager1::ReadSuplUsage end"), KTraceFileName, __LINE__);	
+	}
 
 void COMASUPLProtocolManager1::UpdateAllSubSessnsInSameSession(TInt aIpcSessionId)
     {
@@ -1722,7 +1834,8 @@
 			OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]);
 
             if (OMAsuplSession->GetSuplUsageFlag())
-                {                      
+                {                        
+                OMAsuplSession->StartUsageDialogLaunchL();
                 break;
                 }
 		}
@@ -1806,7 +1919,62 @@
         }            
     }            
 
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::LaunchSuplDialogTimeoutUI
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager1::LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver )
+    {
+    iTrace->Trace(_L("COMASUPLProtocolManager1::LaunchTimeOutUI"), KTraceFileName, __LINE__);
+    
+    iSessnUIObserver = aObserver;            
+    if (iSuplSettings->IsUIActive())
+        {
+        iSuplSettings->SetUIActive(EFalse);
+        iSettingsLauncher->Cancel();
+        }                
 
+    iSuplSettings->SetUIActive(ETrue);
+    iTimeOutDialogPresent = ETrue;
+    return iSettingsLauncher->LaunchSessionTimeOutDialog();		
+    }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::SettingsTimeOutUICompletedL
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager1::SettingsTimeOutUICompletedL(TInt aError)
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsTimeOutUICompletedL"), KTraceFileName, __LINE__);
+    iSuplSettings->SetUIActive(EFalse);
+    iTimeOutDialogPresent = EFalse;
+
+    if (iDeInitDone)
+        {
+	    iTrace->Trace(_L("COMASUPLProtocolManager1::SettingsTimeOutUICompletedL, Completing request"), KTraceFileName, __LINE__);
+        iDeInitDone = EFalse;
+        User::RequestComplete(iDeInitRequestStatus,KErrNone);
+        }                
+    else
+        {
+        if (iSessnUIObserver)                
+        	iSessnUIObserver->SettingsTimeOutUICompletedL(aError);
+        }
+	}
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::GetLastUsedAccessPoint
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager1::GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId)
+	{
+	return iSettingsLauncher->GetIAPName(aLastlyUsedAccessPoint,iIAPId);
+	}
 
 // -----------------------------------------------------------------------------
 // COMASUPLProtocolManager1::PrintHex
@@ -1904,100 +2072,17 @@
     iSuplInitTimeOut = aCommmonConfig->iSuplInitTimeOut;
     iPersistFailTimer = aCommmonConfig->iPersistFailTimer;
     }
-	
-	
-// -----------------------------------------------------------------------------
-// COMASUPLProtocolManager1::MakeLocationConversionRequestL
+    
+    // -----------------------------------------------------------------------------
+// COMASUPLProtocolManager1::CancelUiLaunch
 // 
-// To make conversion request to retrieve position for a given cell id
+// 
 // -----------------------------------------------------------------------------
 //
-void COMASUPLProtocolManager1::MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-        TGeoCellInfo& aCellInfo,
-        TRequestStatus& aStatus )
+void COMASUPLProtocolManager1::CancelUiLaunch()
     {
-    iTrace->Trace(_L("COMASUPLProtocolManager1::MakeLocationConversionRequestL"), KTraceFileName, __LINE__);
-    TBuf<64> tempBuf;
-
-    if ( iSuplSessions.Find(aSuplSessn) == KErrNotFound )
-        {
-        TRequestStatus *status = &aStatus; 
-        User::RequestComplete(status,KErrNotFound ); 
-        return;
-        }
-
-    CheckForSessionCount();
-    iRunningSessionCount++;
-
-    COMASuplLocationId* locationId =   COMASuplLocationId::NewL();
-    COMASuplLocationId::TOMASuplStatus status = COMASuplLocationId::EStale;
-    switch(aCellInfo.iGeoCellType)
-        {
-        case EGeoGsmCell:
-            {
-            iTrace->Trace(_L("COMASUPLProtocolManager1::MakeLocationConversionRequestL - Setting GSM Cell Info"), KTraceFileName, __LINE__);
-            COMASuplGSMCellInfo* cellInfo = COMASuplGSMCellInfo::NewL();
-            cellInfo->SetSuplGSMCellInfo(aCellInfo.iMNC,aCellInfo.iMCC,aCellInfo.iCid,aCellInfo.iLac);
-            locationId->SetSuplLocationId(cellInfo,status);
-            }
-            break;
-        case EGeoWcdmaCell:
-            {
-            iTrace->Trace(_L("COMASUPLProtocolManager1::MakeLocationConversionRequestL - Setting WCDMA Cell Info"), KTraceFileName, __LINE__);
-            COMASuplCellInfo* cellInfo = COMASuplCellInfo::NewL();
-            cellInfo->SetSuplCellInfo(aCellInfo.iMNC,aCellInfo.iMCC,aCellInfo.iCid);
-            locationId->SetSuplLocationId(cellInfo,status);
-            }
-            break;
-        }
-   
-    tempBuf.Copy(_L("MCC = "));
-    tempBuf.AppendNum(aCellInfo.iMCC);
-    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
-    tempBuf.Copy(_L("MNC = "));
-    tempBuf.AppendNum(aCellInfo.iMNC);
-    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
-    tempBuf.Copy(_L("LAC = "));
-    tempBuf.AppendNum(aCellInfo.iLac);
-    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
-    tempBuf.Copy(_L("CId = "));
-    tempBuf.AppendNum(aCellInfo.iCid);
-    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
-    tempBuf.Copy(_L("Prompt = "));
-    tempBuf.AppendNum(aCellInfo.iConnectionPrompt);
-    iTrace->Trace(tempBuf, KTraceFileName, __LINE__);
-
-    TInt allowedCapabilities = KECID|KCID;
-    TInt requestID = 1000; 
-    COMASuplSession* OMASession =  static_cast<COMASuplSession*>(aSuplSessn);
-    OMASession->SetConfigurationParameters(iUT1_StartTimer,iUT2_PosInitTimer, iUT3_PosTimer,iPrivacyTimer,iSETMode,
-            iSuplUsage, iPersistFailTimer,iSuplInitTimeOut);
-    OMASession->RunSuplSessionL(aStatus,ETrue, KNullDesC,EFalse, allowedCapabilities,iRunningSessionCount,requestID,ETrue,locationId,aCellInfo.iConnectionPrompt,aCellInfo.iWlanOnly);
-
+    iTrace->Trace(_L("COMASUPLProtocolManager1::CancelUiLaunch"), KTraceFileName, __LINE__);
+    iSettingsLauncher->CancelLaunch();
     }
-
-// -----------------------------------------------------------------------------
-// COMASUPLProtocolManager1::CancelLocationConversionRequest
-// 
-// Cancel an ongoing conversion request 
-// -----------------------------------------------------------------------------
-//
-void COMASUPLProtocolManager1::CancelLocationConversionRequest(CSuplSessionBase* aSuplSession)
-    {
-    // Log
-    iTrace->Trace(_L("COMASUPLProtocolManager1::CancelLocationConversionRequest"), KTraceFileName, __LINE__);
-
-    // Check if the Session is valid
-    TInt index = iSuplSessions.Find(aSuplSession);
-
-    if(KErrNotFound == index)
-        {
-        iTrace->Trace(_L("Cannot find Supl session."), KTraceFileName, __LINE__);
-        return;
-        }
-    aSuplSession->CancelRunSession();   
-    return ;
-    }
-	
     
 // end of file
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsession.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -128,7 +128,7 @@
 																iEtelRoamingCheck(EFalse),
 																iIapDialogShown(EFalse),
 																iIapDlgTimerExpired(EFalse),
-																iOMASuplAsnHandlerBaseImpl(aOMASuplAsnHandlerBase),iWlanOnly(EFalse)
+																iOMASuplAsnHandlerBaseImpl(aOMASuplAsnHandlerBase)
 																
     { 
     }
@@ -193,6 +193,8 @@
 
     	iIapNotifier = COMASuplIapNotifier::NewL(*this);
 
+			
+		iDialogTimer = COMASuplDialogTimer::NewL(*this);
 		
 		iIsQoPPresent = EFalse;	
 		iIsFirstPOSMessage = ETrue;
@@ -251,6 +253,7 @@
 			SessionEnd();
 			CompleteSession(KErrCancel);
 		}
+		iProtocolManager.CancelUiLaunch();
 		delete this;
 	}
 
@@ -310,14 +313,9 @@
     	delete iTimer;
         delete iIapNotifier;
     	iIMSI.Close();
+        delete iDialogTimer;
         
         delete iNetworkPrivacy;
-
-	if(iStaleLocationId)
-    	  {
-    	  delete iStaleLocationId;
-    	  iStaleLocationId = NULL;
-    	  }  
     	
     	if(iTrace)
     		iTrace->Trace(_L("End of ~COMASuplSession::COMASuplSession"), KTraceFileName, __LINE__); 
@@ -426,7 +424,7 @@
 //
  void COMASuplSession::RunSuplSessionL(TRequestStatus& aStatus, TBool aFirstReq, const TDesC& aHslpAddress, 
                                        TBool aFallBack, TInt aAllowedCapabilities,
- 									  TInt aSessionIdSeed,TInt aRequestID,TBool aIsStaleCellId,COMASuplLocationId* aLocationId,TBool aPrompt,TBool aWlanOnly)
+ 									  TInt aSessionIdSeed,TInt aRequestID)
     {
 	    iRunRequestStatus = & aStatus;
 	    *iRunRequestStatus = KRequestPending;
@@ -434,32 +432,7 @@
         iRequestID = aRequestID;
 
     	iTrace->Trace(_L("Start COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); 
-
-    	if(aIsStaleCellId)
-    	    {
-    	    iTrace->Trace(_L("Start COMASuplSession::RunSuplSession for Stale Cell Id"), KTraceFileName, __LINE__); 
-    	    iIsStaleLocIdPresent = ETrue;
-
-     	    
-    	    if(iStaleLocationId)
-    	        {
-    	        delete iStaleLocationId;
-    	        iStaleLocationId = NULL;
-    	        }   	        
-
-    	    iStaleLocationId = aLocationId;
-    	    iStaleLocIdPrompt = aPrompt;
-    	    iWlanOnly = aWlanOnly; //OCC
-    	    
-    	    iTrace->Trace(_L("Deleting pos requestor as session is for Stale Cell Id"), KTraceFileName, __LINE__); 
-            delete iOMASuplPOSRequestor;
-             iOMASuplPOSRequestor = NULL;
-             
-    	    // Delete the POS Session
-    	     delete iPOSSession;
-    	     iPOSSession = NULL;    	     
-
-    	    }
+    	
     	// Log Session Id
     	TBuf<64> id;
     	id.Append(_L("Session  Id is "));
@@ -472,27 +445,23 @@
     	iTrace->Trace(id,KTraceFileName, __LINE__); 
     	
     	iSETSessionUniqueId = aSessionIdSeed;
-    	
-		iIhaveLaunchedUsagedialog = EFalse;
+
 		
 		TInt networkMode = 1;
 		networkMode = GetNetworkModeL();
 		
-	 if(!iWlanOnly)	//OCC	
-            {
-            if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed )
-                {
-                    id.Copy(_L("The device is in OFFLINE mode."));
-                    iTrace->Trace(id,KTraceFileName, __LINE__); 
-                    iSessionObserver.TerminateSession(this, KErrGeneral);
-                    return;
-                }
-            else
-                {
-                    id.Copy(_L("The device is in ON LINE mode."));
-                    iTrace->Trace(id,KTraceFileName, __LINE__); 
-                }
-            } //OCC
+		if ( networkMode == ECoreAppUIsNetworkConnectionNotAllowed )
+			{
+				id.Copy(_L("The device is in OFFLINE mode."));
+				iTrace->Trace(id,KTraceFileName, __LINE__); 
+				iSessionObserver.TerminateSession(this, KErrGeneral);
+				return;
+			}
+		else
+			{
+				id.Copy(_L("The device is in ON LINE mode."));
+				iTrace->Trace(id,KTraceFileName, __LINE__); 
+			}
 
     	if(aAllowedCapabilities == 0)
     		{
@@ -507,41 +476,17 @@
 		iSuplSessionId->SetSLPSessionID(NULL); 	
 		
 		iConnRequestor->SetDefaultParametersL(aHslpAddress,aFallBack);
-		
-		 id.Copy(_L("aFallBack value is "));
-		 id.AppendNum(aFallBack);
-		 iTrace->Trace(id,KTraceFileName, __LINE__);
-
-       if(!iWlanOnly) //OCC
-		    {
-            iTrace->Trace(_L("iWLANOnly false COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__);
-           
-            id.Copy(_L("aFirstReq value is "));
-            id.AppendNum(aFirstReq);
-            iTrace->Trace(id,KTraceFileName, __LINE__);
-            
-            if (aFirstReq)
-                {
-                iTrace->Trace(_L("start CheckForSuplUsageL COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__);
-                CheckForSuplUsageL();
-                }
-            else
-                {
-                iTrace->Trace(_L("start CheckForPreviousResultL COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__);
-                CheckForPreviousResultL();  
-                }
-            }
-		else
-		    {
-		    iTrace->Trace(_L("iWLANOnly true COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); 
-            InitializeL(iRequestID);
-		    } //OCC     
+
+        if (aFirstReq)
+            CheckForSuplUsageL();
+        else
+            CheckForPreviousResultL();        
 
 	    
 		// Clear  Position....
 		delete iPosition;
 		iPosition = NULL;
-
+		
 	    
 		iTrace->Trace(_L("End of COMASuplSession::RunSuplSession"), KTraceFileName, __LINE__); 
     }
@@ -560,7 +505,6 @@
   										TSuplTerminalQop& aQop, TInt aRequestID)
   	{
   	
-        iIhaveLaunchedUsagedialog = EFalse;
   		
 	  	iClientQop = aQop;
 	  	
@@ -709,18 +653,11 @@
 				COMASuplStartState* startSuplState =  static_cast <COMASuplPosInitState *>(iSuplState);
 				startSuplState->SetQop(iClientQop);
 			}
-		if(iIsStaleLocIdPresent)
-		    {
-		    iTrace->Trace(_L("GenerateSuplStartL setting stale location id in supl start"), KTraceFileName, __LINE__);
-		    COMASuplStartState* startSuplState =  static_cast <COMASuplPosInitState *>(iSuplState);
-		    startSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL());
-		    }
-        iSuplSessionState = ESUPL_GENERATE;
-        iSuplMsgType = ESUPL_START;
+		//SMP Changes
+		iSuplMsgType = ESUPL_START;
+		SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating); 	
 		TInt err = iSuplState->GenerateMessageL();
-	
-
-		SetPOSMsgPluginState(COMASuplPosSessionBase::EOMASuplCreating);	
+
 	}  
 	 
 
@@ -763,12 +700,6 @@
 			iTrace->Trace(msg, KTraceFileName, __LINE__);
 			iSuplState = COMASuplPosInitState::NewL(iSETCapabilities, iMobilePhone, iUT2_PosInitTimer,
  						 iOMASuplPOSRequestor,iAllowedCapabilities,iRequestType, iPosMethod,iOMASuplAsnHandlerBaseImpl);
-			if(iIsStaleLocIdPresent)
-			    {
-			    iTrace->Trace(_L("COMASuplSession::GenerateSuplPosInitL() Setting Stale Location Id "), KTraceFileName, __LINE__);
-			    COMASuplPosInitState* posInitSuplState =  static_cast <COMASuplPosInitState *>(iSuplState);
-			    posInitSuplState->SetStaleCellIdToUse(iStaleLocationId->CloneL());
-			    }
 		
 		}
 		iSuplState->SetMsgStateObserver(this);
@@ -884,7 +815,6 @@
 //
 void COMASuplSession::OperationCompleteL(TInt aErrorCode)
 	{
-	iTrace->Trace(_L("COMASuplSession::OperationCompleteL"), KTraceFileName, __LINE__); 
 	TBuf<256> msg;
 	if(KErrNone != aErrorCode)
 		{
@@ -897,10 +827,6 @@
 			HandleSuplErrorL(aErrorCode);
 			return;
 		}
-	
-	msg.Copy(_L("iSuplSessionState : "));
-	msg.AppendNum(iSuplSessionState);
-	iTrace->Trace(msg, KTraceFileName, __LINE__); 
 		
 	TInt err = KErrNone;
 	
@@ -962,15 +888,7 @@
 				 }
 		     else //terminal initiated case
 		         {
-                 iTrace->Trace(_L("Connection block."), KTraceFileName, __LINE__);
-            	if(iIsStaleLocIdPresent)
-                     {
-                     TRAP( err, iConnRequestor->CreateConnectionL(iStaleLocIdPrompt,iWlanOnly) );
-                     }
-                 else
-                     {
-                     TRAP( err, iConnRequestor->CreateConnectionL() );
-                     }
+            	TRAP( err, iConnRequestor->CreateConnectionL() );
 		         }
 			        if(KErrNone != err)
 				        {
@@ -2056,7 +1974,15 @@
 		iTrace->Trace(msg,KTraceFileName, __LINE__); 
 		}
 
-   
+    CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+
+    if (usage == CSuplSettings::ESuplUsageDisabled)
+        {                
+		msg.Copy(_L("SUPL Usage is disabled"));
+		iTrace->Trace(msg,KTraceFileName, __LINE__); 
+	    iSessionObserver.TerminateSession(this, KErrGeneral);	
+		return;
+        }
 	    
 	COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType();
 	    
@@ -3808,6 +3734,16 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// COMASuplSession::SettingsUICompleted
+// 
+// -----------------------------------------------------------------------------
+
+void COMASuplSession::SettingsUICompletedL(TInt /*aError*/)
+	{
+	
+	}
+
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::HandleInvalidMessageL
@@ -4109,7 +4045,56 @@
     OperationCompleteL(KErrTimedOut);
 }
 
-
+// -----------------------------------------------------------------------------
+// COMASuplSession::SettingsUsageUICompletedL
+// 
+// -----------------------------------------------------------------------------
+void COMASuplSession::SettingsUsageUICompletedL(TInt aError)
+	{
+	iUIFlag = EFalse;
+    TBuf<64> msg;	
+    msg.Copy(_L("SUPL Usage UI completed with ... "));
+    msg.AppendNum(aError);
+    iTrace->Trace(msg,KTraceFileName, __LINE__); 
+
+    iPrevUsageResult = aError;                    
+
+
+    if (aError == KErrNone)
+        {
+        iProtocolManager.UpdateAllSubSessnsInSameSession(iIpcSessionId);                
+
+        if (isTimeoutDialogTimerStarted)
+            {                
+		    iTrace->Trace(_L("COMASuplSession::SettingsUsageUICompletedL, stopping timer "), KTraceFileName, __LINE__);
+            isTimeoutDialogTimerStarted = EFalse;                    
+            iDialogTimer->StopTimer();
+
+            //Compute how log the dialog was on
+            TTime nowTime;
+            nowTime.HomeTime();
+            nowTime.SecondsFrom(iDlgStartTime, iDiffTime);	
+            }
+        if (iNwInitError)
+            {
+            iNwInitError = EFalse;                    
+            HandleSuplInitErrorL(iNwInitCompletionCode);                             
+            }                
+        else
+	        InitializeL(iRequestID); 
+        }            
+    else if (aError == KErrCompletion)
+        CheckForSuplUsageL();
+    else 
+		{
+			TBuf<64> msg;	
+			msg.Copy(_L("Error after SUPL Usage Popup... "));
+			msg.AppendNum(aError);
+			iTrace->Trace(msg,KTraceFileName, __LINE__); 
+			iSessionObserver.TerminateSession(this, KErrGeneral);	
+			return;
+		}
+	}
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::CheckForSuplUsageL
@@ -4118,23 +4103,37 @@
 void COMASuplSession::CheckForSuplUsageL()
     {
 
-             
+    if (iSuplUsage >= 1)
+        {            
+        CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+        if (usage == CSuplSettings::ESuplUsageDisabled)
+            {            
+	        iSessionObserver.TerminateSession(this, KErrGeneral);	
+            }
+        else if (usage == CSuplSettings::ESuplUsageAutomatic)
+            {            
             if (iNwInitError)
                 {
                 iNwInitError = EFalse;                    
                 HandleSuplInitErrorL(iNwInitCompletionCode);                             
                 }                
             else
-            	{
-            		if (iRoaming)                
+	            InitializeL(iRequestID); 
+            }
+
+            else if (usage == CSuplSettings::ESuplUsageHomeAutomatic || usage == CSuplSettings::ESuplUsageAlwaysAsk)
+            {
+                if (iRoaming)                
                     HandleRoamingCheckCompleteL(KErrNone, EFalse);                    
                 else
                     {                        
                     iEtelRoamingCheck = ETrue;
                     iProtocolManager.CheckForRoaming();
                     }
-	          	}
-           
+            }            
+        }            
+        else
+	        InitializeL(iRequestID); 
 
     }        
 
@@ -4217,7 +4216,80 @@
         {            
             iUsageHomeNW = aHomeNw;   
             iConnRequestor->UpdateSLPListForHomeUsage(iUsageHomeNW);             
-                 
+            CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+            
+            if (usage == CSuplSettings::ESuplUsageAlwaysAsk)
+                {
+                TInt err;                
+                    if (!aHomeNw)
+                        {                            
+                        iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+                        err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
+                        }
+                    else
+                        {                            
+                        iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is not roaming"), KTraceFileName, __LINE__);
+                        err = iProtocolManager.LaunchSuplUsageSettingsUI(this, EFalse);        
+                        }
+
+                if(KErrNone != err && KErrInUse == err)
+                    {
+                        iTrace->Trace(_L("Dialog in use, setting flag"), KTraceFileName, __LINE__);
+                        SetSuplUsageFlag();                            
+                    }
+                if( KErrNone == err  && iRequestType == ESUPL_NETWORK )
+                    {
+                    iTrace->Trace(_L("Network Session , starting timer"), KTraceFileName, __LINE__);
+                    COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                    TOMASuplQop qop;
+                    TInt retVal = suplInit->Qop(qop);
+                    TInt delay;
+                    qop.Delay(delay);
+                    //if delay is > 7, it is not valid
+                    if (delay > 7)
+                        delay = 0;                                
+                    if(retVal == KErrNone && delay > 0)
+                        {
+                        TReal delayReal;
+                        Math::Pow(delayReal, 2, (TReal)delay);
+                        delay = (TInt) delayReal;
+                        TBuf<128> msg(_L("Delay present in message, value is = "));
+                        msg.AppendNum(delay);
+                        iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                        isTimeoutDialogTimerStarted = ETrue;
+                        iDialogTimer->StartTimer(delay);
+                        }  	
+                    else
+                        {
+                        if (iSuplInitTimeOut > 0)
+                            {                                                        
+                            TBuf<256> msg(_L("Delay value in CR is"));
+                            msg.AppendNum(iSuplInitTimeOut);
+                            iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                            iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                            isTimeoutDialogTimerStarted = ETrue;
+                            }
+                        else
+                            iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                        }
+                    iDlgStartTime.HomeTime();
+                    }
+                else if (KErrNone != err)
+                    {
+                    iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+                    HandleSuplErrorL(err);
+                    }
+
+                }
+            else if (usage == CSuplSettings::ESuplUsageHomeAutomatic) 
+            {                
+            if (!aHomeNw)
+                {                
+                TInt err;                
+                //if (!iSuplSettings->IsUIActive() )
+                    {
+                    iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+                    err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
 
                     if(iSuplMsgType == ESUPL_INIT)
                         {
@@ -4240,35 +4312,47 @@
                             msg.AppendNum(delay);
                             iTrace->Trace(msg, KTraceFileName, __LINE__); 
                             isTimeoutDialogTimerStarted = ETrue;
-                            
+                            iDialogTimer->StartTimer(delay);
                             }  	
                         else
                             {
                             if (iSuplInitTimeOut > 0)
                                 {                                                        
                                 isTimeoutDialogTimerStarted = ETrue;
-                                
+                                iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
                                 }
                             else
                                 iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
                             }
                         }
-                                
+                    }
+
+                if(!iSuplSettings->IsUIActive() && KErrNone != err)
+                    {
+                        SetSuplUsageFlag();                            
+                    }
+                else
+                    {
+                    iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+                    HandleSuplErrorL(err);
+                    }
+                }
+            else            
+                {                
                 if (iNwInitError)
                     {
                     iNwInitError = EFalse;                    
                     HandleSuplInitErrorL(iNwInitCompletionCode);                             
                     }                
                 else
-                {
-                	iTrace->Trace(_L("COMASuplSession::InitializeL called after roaming check"), KTraceFileName, __LINE__);
-	                InitializeL(iRequestID);  
-	              }  
+	                InitializeL(iRequestID); 
+                }                
+            }                
         }
-   else
-        {
-      	iSessionObserver.TerminateSession(this, KErrGeneral);	
-        }                
+        else
+            {
+	        iSessionObserver.TerminateSession(this, KErrGeneral);	
+            }                
     }            
 TInt COMASuplSession::SuplIpcSessionID() 
     {
@@ -4333,7 +4417,173 @@
     return iUsageDialog;
     }        
 
-
+void COMASuplSession::StartUsageDialogLaunchL()
+    {
+    iTrace->Trace(_L("COMASuplSession::StartUsageDialogLaunchL"), KTraceFileName, __LINE__);
+    ReSetSuplUsageFlag();            
+    iTrace->Trace(_L("COMASuplSession::StartUsageDialogLaunchL, flag reset done"), KTraceFileName, __LINE__);
+
+    CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+    if (usage == CSuplSettings::ESuplUsageAlwaysAsk)
+        {
+        TInt err;                
+        if (!iUsageHomeNW)
+            {                            
+            iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+            err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
+
+            if(iRequestType == ESUPL_NETWORK && err == KErrNone)
+                {
+                iTrace->Trace(_L("starting Dialog timer "), KTraceFileName, __LINE__);
+				     
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
+                    {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        iTrace->Trace(_L("Delay not present in message"), KTraceFileName, __LINE__);
+                        TBuf<256> msg(_L("Delay value in CR is "));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                }
+            }
+        else
+            {                            
+            iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is not roaming"), KTraceFileName, __LINE__);
+            err = iProtocolManager.LaunchSuplUsageSettingsUI(this, EFalse);        
+
+            if( iRequestType == ESUPL_NETWORK && err == KErrNone)
+                {    
+                iTrace->Trace(_L("starting Dialog timer "), KTraceFileName, __LINE__);
+				     
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
+                    {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        iTrace->Trace(_L("Delay not present in message"), KTraceFileName, __LINE__);
+                        TBuf<256> msg(_L("Delay value in CR is"));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                }
+            }
+
+        if(KErrNone != err)
+            {                        
+            iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+            HandleSuplErrorL(err);
+            }
+        }
+    else if (usage == CSuplSettings::ESuplUsageHomeAutomatic) 
+        {                
+        if (!iUsageHomeNW)
+            {                
+            TInt err;                
+            iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+            err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
+
+            if(KErrNone != err)
+                {
+                iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+                HandleSuplErrorL(err);
+                }
+
+            if(iRequestType == ESUPL_NETWORK && err == KErrNone)
+                {    
+                iTrace->Trace(_L("starting Dialog timer "), KTraceFileName, __LINE__);
+				     
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
+                    {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        iTrace->Trace(_L("Delay not present in message"), KTraceFileName, __LINE__);
+                        TBuf<256> msg(_L("Delay value in CR is"));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                }
+            }
+        else            
+            {                
+            if (iNwInitError)
+                {
+                iNwInitError = EFalse;                    
+                HandleSuplInitErrorL(iNwInitCompletionCode);                             
+                }                
+            else
+	            InitializeL(iRequestID); 
+            }                
+        }                
+    }
 
 TBool COMASuplSession::IsEtelNotifySet()
     {
@@ -4346,13 +4596,39 @@
     iTrace->Trace(_L("COMASuplSession::IsEtelRoamingSet"), KTraceFileName, __LINE__); 
     return iEtelRoamingCheck;
     }        
-	
-TBool COMASuplSession::HasMeLaunchedUsageDialog()
+
+// -----------------------------------------------------------------------------
+// COMASuplSession::DialogTimerExpiredL
+// Checks whether UI is displayed or not previously
+// 
+// -----------------------------------------------------------------------------
+void COMASuplSession::DialogTimerExpiredL()
 {
-	return iIhaveLaunchedUsagedialog; 
+   iTrace->Trace(_L("Timer Expired for SUPL Dialog"), KTraceFileName, __LINE__); 
+  
+    if (!iIapDialogShown)
+	    iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+    else
+        iIapDlgTimerExpired = ETrue;            
+
+    return;	
 }
 
-
+// -----------------------------------------------------------------------------
+// COMASuplSession::SettingsTimeOutUICompletedL
+// 
+// -----------------------------------------------------------------------------
+void COMASuplSession::SettingsTimeOutUICompletedL(TInt aError)
+	{
+	
+	    TBuf<64> msg;	
+	    msg.Copy(_L("SUPL Timeout UI completed with ... "));
+	    msg.AppendNum(aError);
+	    iTrace->Trace(msg,KTraceFileName, __LINE__); 
+	    iSessionObserver.TerminateSession(this, KErrGeneral);	
+	    return;
+	    
+	}
 	
 // -----------------------------------------------------------------------------
 // COMASuplSession::StoreCurrentCellIDL
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsettingslauncher.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplsettingslauncher.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -92,7 +92,6 @@
     delete iSettingsLauncher;	
     iNotifier.Close();
     delete iTrace;
-    iIapSelector.Close();
     }
 
 
@@ -101,10 +100,7 @@
     iTrace = COMASuplTrace::NewL();	
     iTrace->Trace(_L("COMASuplSettingsLauncher::ConstructL"), KTraceFileName, __LINE__);             
     iSettingsLauncher = CLocSettingsUiClient::NewL();
-	User::LeaveIfError(iNotifier.Connect());
-	    // Establish a connection to the RGenConAgentDialogServer
-    User::LeaveIfError( iIapSelector.Connect());
-    
+    User::LeaveIfError(iNotifier.Connect());
     }
 
 // -----------------------------------------------------------------------------
@@ -122,14 +118,21 @@
         {
         return KErrInUse;
         }
-   
-	TRAPD(error,iSettingsLauncher->LaunchSettingsUiL( TUid::Uid( KLocSUPLSettingsUID ),
-													  ELocSUPLIAPSelection,
-													  iStatus ));
-
-	iDialogType = ESUPLYesNoDialog;
-	SetActive();
-	
+    TRAPD(error,iSettingsLauncher->LaunchSettingsUiL( TUid::Uid( KLocSUPLSettingsUID ),
+                    ELocSUPLIAPSelection,
+                    iStatus ));
+    if (error != KErrNone)
+        {
+        iCallback.SettingsUICompletedL(error);
+        }
+    else
+        {
+        iDialogType = ESUPLYesNoDialog;
+        if (!IsActive())
+            {
+            SetActive();
+            }
+        }
     return error;
     }
 
@@ -292,26 +295,36 @@
         
 	iDialogType = ESUPLIAPDialog;   
 
-    TConnectionPrefs    prefs; // filtering conditions for the access points list
-    prefs.iRank         = 1;
-    prefs.iDirection    = ECommDbConnectionDirectionOutgoing;
-    prefs.iBearerSet    = KUidCSDBearerType | KUidPacketDataBearerType;
+    
    
     // Launch the IAP Selector 
     iStatus = KRequestPending;
-    iIapSelector.IapConnection( iSelectedIap, prefs, iStatus );
-    SetActive();
-		return KErrNone;
-	}
-	
-	
-TInt COMASuplSettingsLauncher::GetIAPName(TDes& aIAPName,TUint32& aIAPId)	
-	{
-	    TRAPD( error, ConvertIAPIdtoNameL( iSelectedIap,aIAPName ));
-	    aIAPId = iSelectedIap;
-		return error;
-	}
-	
+    
+    
+    TRAPD(error, iSettingsLauncher->LaunchSettingsUiL( TUid::Uid( KLocSUPLSettingsUID ),
+                    ELocSuplIAPDialog,
+                    iStatus );)
+    if(error != KErrNone)
+        {
+        iCallback.SettingsUICompletedL(error);
+        }
+    else
+        {
+        if (!IsActive())
+            {
+            SetActive();
+            }
+        }
+    return error;
+    }
+
+TInt COMASuplSettingsLauncher::GetIAPName(TDes& aIAPName, TUint32& aIAPId)
+    {
+    TRAPD( error, ConvertIAPIdtoNameL( iSelectedIap,aIAPName ));
+    aIAPId = iSelectedIap;
+    return error;
+    }
+
 // ---------------------------------------------------------------------------
 // TUint CLocSUPLSettingsUiEngine::ConvertIAPIdtoNameL()
 // Convert IAP ID to IAP Name. If a valid name exists for the IAP Id
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplstartstate.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver1/src/epos_comasuplstartstate.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -149,22 +149,8 @@
 //
 TInt COMASuplStartState::GenerateMessageL() 
 	{
-		iTrace->Trace(_L("Start of COMASuplStartState::GenerateMessage"), KTraceFileName, __LINE__);
-		//if no cell stale cell id is available, retrieve current cell id
-		if(!iIsStaleCellId)
-		    {
-		    iTrace->Trace(_L("COMASuplStartState::GenerateMessage stale cell id false"), KTraceFileName, __LINE__);
-		    iLocationIDRequestor->GetLocationID();
-		    iTrace->Trace(_L("COMASuplStartState::GenerateMessage called get location id"), KTraceFileName, __LINE__);
-		    }
-		else // dont retrieve current cell id as cell id was already provided
-		    {
-		    iGenerationStatus = EFalse;
-		    iECId = EFalse;
-		    iTrace->Trace(_L("COMASuplStartState::GenerateMessage stale cell id true"), KTraceFileName, __LINE__);
-		    GetAssistceDataFromPluginL(KErrNone);
-		    }
-		
+		iTrace->Trace(_L("Start of COMASuplStartState::GenerateMessage"), KTraceFileName, __LINE__); 					
+		iLocationIDRequestor->GetLocationID();
 		return KErrNone;
 	}
 	
@@ -1010,15 +996,4 @@
 	aCurrentCellId.iMCC = lRefMCC;
 	aCurrentCellId.iLac = lRefLAC;
 	}
-}	
-void COMASuplStartState::SetStaleCellIdToUse(COMASuplLocationId* aLocationId)
-    {
-    if(iLocationId)
-        {
-        delete iLocationId;
-        iLocationId = NULL;
-        }
-    iLocationId = aLocationId;
-    iIsStaleCellId = ETrue;
-    }
-//  End of File
+}	//  End of File
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/eabi/eposomasuplprotocolhandler2u.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/eabi/eposomasuplprotocolhandler2u.def	Wed Oct 13 15:01:35 2010 +0300
@@ -41,35 +41,37 @@
 	_ZTI23COMASuplFallBackHandler @ 40 NONAME
 	_ZTI24COMASUPLProtocolManager2 @ 41 NONAME
 	_ZTI24COMASuplEcomEventWatcher @ 42 NONAME
-	_ZTI24COMASuplTriggerStopState @ 43 NONAME
-	_ZTI25COMASuplTriggerStartState @ 44 NONAME
-	_ZTI28COMASuplTriggerResponseState @ 45 NONAME
-	_ZTI29COMASuplCompleteSelfRequestor @ 46 NONAME
-	_ZTV12COMASuplETel @ 47 NONAME
-	_ZTV13COMASuplState @ 48 NONAME
-	_ZTV13COMASuplTrace @ 49 NONAME
-	_ZTV15COMASuplSession @ 50 NONAME
-	_ZTV16COMASuplEndState @ 51 NONAME
-	_ZTV16COMASuplPosState @ 52 NONAME
-	_ZTV16COMASuplSettings @ 53 NONAME
-	_ZTV17COMASuplInitState @ 54 NONAME
-	_ZTV18COMASuplStartState @ 55 NONAME
-	_ZTV19COMASuplDialogTimer @ 56 NONAME
-	_ZTV19COMASuplIapNotifier @ 57 NONAME
-	_ZTV19COMASuplReportState @ 58 NONAME
-	_ZTV20COMASuplETelNotifier @ 59 NONAME
-	_ZTV20COMASuplPOSRequestor @ 60 NONAME
-	_ZTV20COMASuplPosInitState @ 61 NONAME
-	_ZTV20COMASuplTimeoutTimer @ 62 NONAME
-	_ZTV21COMASuplConnRequestor @ 63 NONAME
-	_ZTV21COMASuplResponseState @ 64 NONAME
-	_ZTV23COMASuplFallBackHandler @ 65 NONAME
-	_ZTV24COMASUPLProtocolManager2 @ 66 NONAME
-	_ZTV24COMASuplEcomEventWatcher @ 67 NONAME
-	_ZTV24COMASuplTriggerStopState @ 68 NONAME
-	_ZTV25COMASuplTriggerStartState @ 69 NONAME
-	_ZTV28COMASuplTriggerResponseState @ 70 NONAME
-	_ZTV29COMASuplCompleteSelfRequestor @ 71 NONAME
-	_ZThn4_N24COMASUPLProtocolManager212HandlePacketERK6TDesC8j @ 72 NONAME
-	_ZThn4_N24COMASUPLProtocolManager217HandlePacketErrorEi @ 73 NONAME
+	_ZTI24COMASuplSettingsLauncher @ 43 NONAME
+	_ZTI24COMASuplTriggerStopState @ 44 NONAME
+	_ZTI25COMASuplTriggerStartState @ 45 NONAME
+	_ZTI28COMASuplTriggerResponseState @ 46 NONAME
+	_ZTI29COMASuplCompleteSelfRequestor @ 47 NONAME
+	_ZTV12COMASuplETel @ 48 NONAME
+	_ZTV13COMASuplState @ 49 NONAME
+	_ZTV13COMASuplTrace @ 50 NONAME
+	_ZTV15COMASuplSession @ 51 NONAME
+	_ZTV16COMASuplEndState @ 52 NONAME
+	_ZTV16COMASuplPosState @ 53 NONAME
+	_ZTV16COMASuplSettings @ 54 NONAME
+	_ZTV17COMASuplInitState @ 55 NONAME
+	_ZTV18COMASuplStartState @ 56 NONAME
+	_ZTV19COMASuplDialogTimer @ 57 NONAME
+	_ZTV19COMASuplIapNotifier @ 58 NONAME
+	_ZTV19COMASuplReportState @ 59 NONAME
+	_ZTV20COMASuplETelNotifier @ 60 NONAME
+	_ZTV20COMASuplPOSRequestor @ 61 NONAME
+	_ZTV20COMASuplPosInitState @ 62 NONAME
+	_ZTV20COMASuplTimeoutTimer @ 63 NONAME
+	_ZTV21COMASuplConnRequestor @ 64 NONAME
+	_ZTV21COMASuplResponseState @ 65 NONAME
+	_ZTV23COMASuplFallBackHandler @ 66 NONAME
+	_ZTV24COMASUPLProtocolManager2 @ 67 NONAME
+	_ZTV24COMASuplEcomEventWatcher @ 68 NONAME
+	_ZTV24COMASuplSettingsLauncher @ 69 NONAME
+	_ZTV24COMASuplTriggerStopState @ 70 NONAME
+	_ZTV25COMASuplTriggerStartState @ 71 NONAME
+	_ZTV28COMASuplTriggerResponseState @ 72 NONAME
+	_ZTV29COMASuplCompleteSelfRequestor @ 73 NONAME
+	_ZThn4_N24COMASUPLProtocolManager212HandlePacketERK6TDesC8j @ 74 NONAME
+	_ZThn4_N24COMASUPLProtocolManager217HandlePacketErrorEi @ 75 NONAME
 
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/group/omasuplprotocolhandler2.mmp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/group/omasuplprotocolhandler2.mmp	Wed Oct 13 15:01:35 2010 +0300
@@ -52,6 +52,7 @@
 SOURCE      epos_comasuplinitstate.cpp
 SOURCE      epos_comasuplposrequestor.cpp
 SOURCE	    epos_comasuplecomeventwatcher.cpp
+SOURCE      epos_comasuplsettingslauncher.cpp
 SOURCE      epos_comasupltrace.cpp
 SOURCE      epos_comasupldialogtimer.cpp
 SOURCE      epos_comasuplfallbackhandler.cpp
@@ -87,7 +88,7 @@
 LIBRARY insock.lib
 LIBRARY lbs.lib
 LIBRARY eposnwprv.lib
-
+LIBRARY locsettingsuiclient.lib
 LIBRARY hash.lib
 LIBRARY bafl.lib  //logging
 LIBRARY flogger.lib
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplconnrequestor.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplconnrequestor.h	Wed Oct 13 15:01:35 2010 +0300
@@ -40,7 +40,9 @@
  *  @since S60 v3.1
  */
  
-class COMASuplConnRequestor : public CActive
+class COMASuplConnRequestor : public CActive, 
+                              public MOMASuplUICompletionObserver,  
+                              public MOMASuplDialogTimeOutNotifier
 {
 
 	enum TConnState
@@ -170,6 +172,9 @@
         
         void GetUsedServerAddress(TDes& aHSLPAddressUsed);
         
+        void SettingsUICompletedL(TInt aError);
+        void SettingsUsageUICompletedL(TInt /*aError*/) {}
+        void SettingsTimeOutUICompletedL(TInt /*aError*/) {}
         TBool ConvertIAPNameToIdL(const TDesC& aIAPName, TUint32& aIAPId);
         void UpdateNetInfo(const TTime& aLastTimeUsed,TInt& aMcc,TInt& aMnc,
 							              TInt& aCid,TInt& aLac,TInt& aType,TInt& aErrorCode);
@@ -209,7 +214,13 @@
 		
 		void SaveAccessPoint(const TDesC& aIapName);
 
-		
+		/**
+		 * Dialog Timeout Notifier Method.
+		 * @since Series 60 9.1 TB
+		 * @param None
+		 * @return None
+		 */
+		virtual void DialogTimerExpiredL();	
   	protected :  // Functions from CActive
       /**
       * From CActive 
@@ -282,7 +293,15 @@
             
             TInt64 iCurrentSLPId;
             
-            TBool iTriggerSession;
+            COMASuplDialogTimer* iDialogTimer;
+            
+            TBool iIapDialogShown;
+            
+            TBool iIapDlgTimerExpired;
+            
+            TBool iIsTimeoutDialogTimerStarted;
+			
+			TBool iTriggerSession;
 
 };
 
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplprotocolmanager2.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplprotocolmanager2.h	Wed Oct 13 15:01:35 2010 +0300
@@ -81,6 +81,7 @@
 								public MOMASuplSessionObserver,
 								public MSuplSettingsObserver,
 								public MOMASuplTimeOutNotifier,
+						    	public MOMASuplUISettingsObserver,
                 				public MOMASuplETelNotifierObserver,
                 				public MSuplSessionObserver
     {
@@ -275,14 +276,39 @@
 	*/
 	virtual void TerminateSession(CSuplSessionBase *aSession, TInt aErrorCode);
 	
-public: 
-	
+public: // For setting UI observer    
+	TInt LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp);
+	TInt LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming);
+	TInt LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver );
 	void UpdateAllSubSessnsInSameSession(TInt aIpcSessionId);
 
 	void SettingsChanged();
 
-	
-	
+	TInt GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId);
+	/** 
+	* This callback method is used to notify the client about 
+	* the completion of UI launch
+	* @param aError - Error during Launch
+	* @return None
+	*/
+	void SettingsUICompletedL(TInt aError);
+
+	/** 
+	* This callback method is used to notify the client about 
+	* the completion of UI launch
+	* @param aError - Error during Launch
+	* @return None
+	*/
+	void SettingsUsageUICompletedL(TInt aError);
+
+	/** 
+	* This callback method is used to notify the client about 
+	* the completion of UI completion
+	* @param aError - Error during Launch
+	* @return None
+	*/
+	void SettingsTimeOutUICompletedL(TInt aError);
+
 public: //From base class MSuplSettingsObserver
 
 	/**
@@ -445,7 +471,13 @@
      */
 	void ReadOMASuplSettingsL();
 	
-    
+    /**
+     * ReadSuplUsage, Reads OMA Supl Usage.
+     * @since S60 v3.1u          
+     * @param      None. 
+     * @return     None.
+     */
+    void ReadSuplUsage();
 	
     /**
      * ReadOMASuplConfigurationL, Reads OMA Supl Configuration.
@@ -471,7 +503,7 @@
 
 	
 	TInt GetNetworkModeL();
-    
+    void CheckOutstandingUsageUIRequestsL();
     
 	/**
 	* LoadOMASUPLPluginsL, Loads supl protocolhandler plugins
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplsession2.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplsession2.h	Wed Oct 13 15:01:35 2010 +0300
@@ -97,6 +97,7 @@
 
 class COMASuplSession : public CSuplSessionBase,
 						public MOMASuplConnObserver,
+                        public MOMASuplUICompletionObserver,
 						public MCompleteSelfRequest,
 						public MOMASuplMsgStateObserver,
 						public MOMASuplObserver,
@@ -215,7 +216,27 @@
 	        */
 			void GetPositionCompleteL(TInt aError);
 			
-
+        	/** 
+            * This callback method is used to notify the client about 
+            * the completion of UI launch
+            * @param aError - Error during Launch
+            * @return None
+            */
+        	void SettingsUICompletedL(TInt aError);
+		
+            /** 
+            * This callback method is used to notify the client about 
+            * the completion of UI
+            * @return None
+            */
+			void SettingsUsageUICompletedL(TInt aError);
+			
+            /** 
+            * This callback method is used to notify the client about 
+            * the completion of UI 
+            * @return None
+            */
+			void SettingsTimeOutUICompletedL(TInt aError);
 			
 	public: 			 
 			/**
@@ -362,6 +383,13 @@
 			*/
 			TInt SuplIpcSessionID();
 
+			/**
+			* UpdateSuplUsage Method.  Updates SUPL usage 
+			* @since S60 v3.2
+			* @param None
+			* @return None
+			*/
+			void UpdateSuplUsage();
 
 			/**
 			* SettingsChanged Method.  Updates flag to indicate that
@@ -1004,8 +1032,10 @@
 			*/
             virtual void DialogTimerExpiredL();
     public:  // Usage dialog
-            
-            
+            void SetSuplUsageFlag();
+            void ReSetSuplUsageFlag();
+            TBool GetSuplUsageFlag();
+            void StartUsageDialogLaunchL();
             TBool IsEtelNotifySet();
             TBool IsEtelRoamingSet();
 			TUint GetPortNumUsed();
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplsettings.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplsettings.h	Wed Oct 13 15:01:35 2010 +0300
@@ -90,7 +90,13 @@
 	*/
 	void SetIAPId(TInt aIAPId);
 
-	
+	/**
+	* SetSUPLUsage Method.
+	* @since S60 v3.2
+	* @param aSUPLUsage 
+	* @return None 
+	*/
+    void SetSUPLUsage(CSuplSettings::TSuplSettingsUsage& aSUPLUsage );
 	
 	/**
 	* SetUIActive Method.
@@ -125,7 +131,13 @@
 	*/
 	TInt IAPId() const;
 
-	
+	/**
+	* SUPL Usage Method.
+	* @since S60 v3.2
+	* @param None
+	* @return SUPL Usage
+	*/
+    CSuplSettings::TSuplSettingsUsage SUPLUsage() const;
 	
 	/**
 	* IAPId Method.
@@ -153,7 +165,8 @@
 	// IAP Id 
 	TInt  	 iIAPId;
 
-    
+    // SUPL Usage
+    CSuplSettings::TSuplSettingsUsage iSUPLUsage; 
 	// Flag indicating the activation of settings UI
 	TBool    iSettingsUIActive;
 };
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplstate.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/inc/epos_comasuplstate.h	Wed Oct 13 15:01:35 2010 +0300
@@ -25,6 +25,8 @@
 #define PRINT_MESSAGE
 #endif        
 
+//#undef PRINT_MESSAGE
+
 	/** 
 	MOMASuplMsgStateObserver Notifies about complaetion of operation with or without error.
 	*  @lib eposomasuplprotocolhandler.lib
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplconnrequestor.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -47,8 +47,11 @@
     				 						 iCommMgr(aCommMgr), 
     				 						 iProtocolManager(aProtoMgr),
     				 						 iPort(aPort),
-    				 						 iObserver( aObserver),
-    				 						 iTriggerSession(EFalse)
+    				 						 iObserver( aObserver),    				 						  
+    				 						 iIapDialogShown(EFalse),
+    				 						 iIapDlgTimerExpired(EFalse),    				 			            
+    				 			             iIsTimeoutDialogTimerStarted(EFalse),
+											 iTriggerSession(EFalse)
     {
 			
     }
@@ -75,7 +78,7 @@
     	
     	iCurrentSLPId = KErrNotFound;
     	
-    
+    	iDialogTimer = COMASuplDialogTimer::NewL(*this);
     }
 
 // -----------------------------------------------------------------------------
@@ -105,8 +108,13 @@
 COMASuplConnRequestor::~COMASuplConnRequestor()
     {
     	Cancel();
-    
-	  	delete iSuplSettings;
+    	if(iDialogTimer)
+    	    {
+    	    iDialogTimer->Cancel();
+    	    delete iDialogTimer;
+    	    iDialogTimer = NULL;
+    	    }
+    	delete iSuplSettings;
     	delete iTrace;
     	delete iFallBackHandler;
     }
@@ -147,14 +155,27 @@
 						buffer.Copy(_L("No access point configured for "));
 						buffer.Append(iHostAddress);
 						iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
-						buffer.Copy(_L("Calling CreateConnection with no IAP"));
-						iTrace->Trace(buffer,KTraceFileName, __LINE__);
-						iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,-1);
-						OpenConnection();
+						if( isIapDialogShown )
+						    {
+						    TInt err = iProtocolManager.LaunchSettingsUI(this,iHostAddress);
+						    if(err != KErrNone)
+                                {
+                                buffer.Copy(_L("Error in launching UI : "));
+                                buffer.AppendNum(err);
+                                iTrace->Trace(buffer,KTraceFileName, __LINE__);                 
+                                iHostAddress.Zero();
+                                iObserver.OperationCompleteL(err);
+                                }
+						        else
+						        iIapDialogShown = ETrue;
+						    }
+						
 						
 					}
 				else
 				    {
+				    iIsTimeoutDialogTimerStarted = EFalse;
+    			    iDialogTimer->Cancel();
 				    buffer.Copy(_L("Connecting to "));
 				    buffer.Append(iHostAddress);
 				    iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
@@ -174,8 +195,11 @@
 // COMASuplConnRequestor::OpenConnection
 // -----------------------------------------------------------------------------
 //    
-void COMASuplConnRequestor::CreateConnectionL(TInt /*aDialogTimeOutDelay*/, TBool aTriggerSession)
+void COMASuplConnRequestor::CreateConnectionL(TInt aDialogTimeOutDelay, TBool aTriggerSession)
     {
+    iIsTimeoutDialogTimerStarted = ETrue;
+    
+    iDialogTimer->StartTimer(aDialogTimeOutDelay); 
     CreateConnectionL(aTriggerSession);
     }
 // -----------------------------------------------------------------------------
@@ -452,7 +476,57 @@
 		return result;
 	}
 	
+// -----------------------------------------------------------------------------
+// COMASuplConnRequestor::SettingsUICompleted
+// 
+// -----------------------------------------------------------------------------
 
+void COMASuplConnRequestor::SettingsUICompletedL(TInt aError)
+	{
+		TBuf<128> buffer(_L("COMASuplConnRequestor:SettingsUICompleted Error: "));
+		buffer.AppendNum(aError);
+		iTrace->Trace(buffer,KTraceFileName, __LINE__); 
+		
+		if (iIsTimeoutDialogTimerStarted)
+		    {                
+		    iTrace->Trace(_L("COMASuplSession::SettingsUICompleted, stopping timer "), KTraceFileName, __LINE__);
+		    iIsTimeoutDialogTimerStarted = EFalse;                    
+		    iDialogTimer->StopTimer();
+		    }
+		if (iIapDlgTimerExpired)
+		    {
+		    iIapDlgTimerExpired = EFalse;
+		    iIapDialogShown = EFalse;
+		    iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+		    iObserver.OperationCompleteL(KErrNone);
+		    return;
+		    }
+		if(aError == KErrNone)
+			{
+				TBuf<100> IapName;
+				TInt err = iProtocolManager.GetLastUsedAccessPoint(IapName,iIAPId);
+				 if(err == KErrNone)
+					{
+						buffer.Copy(_L("Connecting to "));
+						buffer.Append(iHostAddress);
+						buffer.Append(_L(" using IAP "));
+						buffer.Append(IapName);
+						iTrace->Trace(buffer,KTraceFileName, __LINE__); 				
+						iConnection = iCommMgr.CreateConnectionL(iHostAddress,iTls,iPskTls,iPort,iIAPId);
+						SaveAccessPoint(IapName);
+						OpenConnection();
+					}
+				 else
+				 	{
+				 		iObserver.OperationCompleteL(err);	
+				 	}	
+			}
+		else
+			{
+				iObserver.OperationCompleteL(aError);	
+			}	
+		
+	}
 
 // -----------------------------------------------------------------------------
 // COMASuplConnRequestor::SaveAccessPoint
@@ -520,13 +594,25 @@
 			iFallBackHandler->UpdateSLPListForHomeUsage(aHomeNetwork);
 }
 
+// -----------------------------------------------------------------------------
+// COMASuplConnRequestor::DialogTimerExpiredL
+// Checks whether UI is displayed or not previously
+// 
+// -----------------------------------------------------------------------------
+void COMASuplConnRequestor::DialogTimerExpiredL()
+{
+   iTrace->Trace(_L("COMASuplConnRequestor:Timer Expired for SUPL IAP Dialog"), KTraceFileName, __LINE__); 
+
+    if (!iIapDialogShown)
+        iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+    else
+        iIapDlgTimerExpired = ETrue;  
+    return; 
+}
 
 TUint COMASuplConnRequestor::GetPortNumber()
 	{
-		if(iConnection)
-			return iConnection->GetPortNumberUsed();
-		else 
-			return 0;
+	return iConnection->GetPortNumberUsed();
 	}
 	
 	
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasupletel.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasupletel.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:   Implementation of COMASuplEtel Class
-*  Version     : %version: 3.1.1 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: 3 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -520,7 +520,7 @@
 	 				
 						for(TInt k = 0; k < KOMASUPLMaxTimeSlotIscpAmount; k++ )	 				
 							{
-								iOMASuplwcdmaCellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k] = iCustomWCDMACellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k];
+								iOMASuplwcdmaCellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k] = iOMASuplwcdmaCellInfo.iNwkMeasureReport[i].iCellMeasuredResult[j].iTddInfo.iTimeslotISCP[k];
 							}
 	 					
 	 			}
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplinitstate.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplinitstate.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -383,8 +383,8 @@
 			// what decision the GSM Network will make if the user won't answer before 
 			// a timeout comes in from GSM Network. In this case verification will 
 			// be rejected.
-			TRAP_IGNORE(iNetworkPrivacy->VerifyLocationRequestL(*suplReqInfo, 
-				iGSMRequestId, *this, aTimeOutStrategy);)
+			iNetworkPrivacy->VerifyLocationRequestL(*suplReqInfo, 
+				iGSMRequestId, *this, aTimeOutStrategy);
 	        TBuf<64> msg;
 	        msg.Copy(_L("Privacy Fw Generated Verification Request id : "));
 	        msg.AppendNum(iGSMRequestId);
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplprotocolmanager2.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplprotocolmanager2.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -104,7 +104,10 @@
 // Destructor.
 EXPORT_C COMASUPLProtocolManager2::~COMASUPLProtocolManager2()
 	{
-	
+	if(iSettingsLauncher)		
+		{
+		iSettingsLauncher->CancelLaunch();
+		}
 		
 	if(iSuplSettings)
 		{
@@ -133,7 +136,7 @@
 	}
 	
 	delete iSuplStorageSettings;
-    
+    delete iSettingsLauncher;
     delete iNotifier;
 	iMobilePhone.Close(); 
 	iTelServer.Close();
@@ -166,7 +169,7 @@
 	iSuplStorageSettings->SetObserverL(*this);
 	iSuplStorageSettings->SetSessionObserverL(*this);
 	
-   	
+   	iSettingsLauncher = COMASuplSettingsLauncher::NewL( *this );
    	
     TRAPD(err,iOMASuplAsnHandlerBaseImpl = COMASuplAsnHandlerBase::NewL(2);) 
     TBuf<64> buf(_L("ASN Plugin 2.0 loaded with error : "));                
@@ -254,7 +257,7 @@
 	//Connect to ETel
 	User::LeaveIfError(ConnectToETelL());
   
-   
+    ReadSuplUsage();    
 	 
 	if(iSuplEcomEventWatcher)
 		{
@@ -1248,7 +1251,7 @@
     if( aEvent == MSuplSettingsObserver::ESuplSettingsEventSuplUsageChange)
         {
         iTrace->Trace(_L("Setting Changed.SUPL Usage changed.. Reeading once again..."), KTraceFileName, __LINE__);
-        
+        ReadSuplUsage();
 		}
 	else if( aEvent == MSuplSettingsObserver::ESuplSettingsEventCommParameterChange)
 		{
@@ -1257,9 +1260,6 @@
 		}
 	}
 
-		
-	
-
 // -----------------------------------------------------------------------------
 // COMASUPLProtocolManager2::LogPacket
 // Logs
@@ -1742,6 +1742,72 @@
 	}
 	
 	
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::LaunchSettingsUI
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::LaunchSettingsUI(MOMASuplUICompletionObserver* aObserver,const TDesC& aForHslp)
+    {        
+	iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchSettingsUI"), KTraceFileName, __LINE__);
+    
+    if (iSuplSettings->IsUIActive())
+        return KErrInUse;                
+    iSessnUIObserver = aObserver;            
+    iSuplSettings->SetUIActive(ETrue);
+   
+    if(iUIRequestArray.Count() <= 0 )
+    	{
+		iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchSettingsUI"), KTraceFileName, __LINE__);
+		iUIRequestArray.Append(aObserver);
+		iSuplSettings->SetUIActive(ETrue);
+		iCurrentlyUsedHslp.Copy(aForHslp);
+		return iSettingsLauncher->LaunchSettings();	
+    	}
+    else if(iCurrentlyUsedHslp.Compare(aForHslp) == KErrNone)
+    	{
+		iUIRequestArray.Append(aObserver);
+    	}
+    else
+    	{
+		return KErrInUse;                
+    	}
+    		
+	return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::SettingsUICompletedL
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::SettingsUICompletedL(TInt aError)
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUICompletedL"), KTraceFileName, __LINE__);
+    iSuplSettings->SetUIActive(EFalse);
+
+    if (iDeInitDone)
+        {
+	    iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUICompletedL, de-init done.  Completing request"), KTraceFileName, __LINE__);
+        iDeInitDone = EFalse;
+        User::RequestComplete(iDeInitRequestStatus,KErrNone);
+        }                
+    else
+        {
+    	for(TInt i = 0; i < iUIRequestArray.Count(); i++)
+    		{
+    			iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUICompletedL,Forwarding ConnRerquestor "), KTraceFileName, __LINE__);
+    			MOMASuplUICompletionObserver* observer = iUIRequestArray[i];
+    			observer->SettingsUICompletedL(aError);
+    		}
+        }
+        
+        iCurrentlyUsedHslp.Copy(_L(""));	
+        iUIRequestArray.Reset();
+    }
+
 
 // -----------------------------------------------------------------------------
 // COMASUPLProtocolManager2::DeInitialize
@@ -1798,10 +1864,73 @@
     return networkMode;
 	}
 
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::LaunchSuplUsageSettingsUI
+// 
+// 
+// -----------------------------------------------------------------------------
+//
 
+TInt COMASUPLProtocolManager2::LaunchSuplUsageSettingsUI(MOMASuplUICompletionObserver* aObserver, TBool aRoaming)	
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchSuplUsageSettingsUI"), KTraceFileName, __LINE__);
+    if (iSuplSettings->IsUIActive() && !iTimeOutDialogPresent)
+        return KErrInUse;                
+    // If timeout dialog is present, close it
+    if (iTimeOutDialogPresent)
+        {
+        iTimeOutDialogPresent = EFalse;
+        iSuplSettings->SetUIActive(EFalse);
+        iSettingsLauncher->Cancel();
+        }                
+    iSessnUIObserver = aObserver;            
+    iSuplSettings->SetUIActive(ETrue);
+    return iSettingsLauncher->LaunchSuplUsageSettingsUI(aRoaming);
+	}
 
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::SettingsUsageUICompletedL
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::SettingsUsageUICompletedL(TInt aError)
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUsageUICompletedL"), KTraceFileName, __LINE__);
+    iSuplSettings->SetUIActive(EFalse);
 
+    if (iDeInitDone)
+        {
+	    iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsUsageUICompletedL, de-init done.  Completing request"), KTraceFileName, __LINE__);
+        iDeInitDone = EFalse;
+        User::RequestComplete(iDeInitRequestStatus,KErrNone);
+        }                
+    else
+        {
+        if (iSessnUIObserver)                
+        	iSessnUIObserver->SettingsUsageUICompletedL(aError);
+        }
 
+    CheckOutstandingUsageUIRequestsL();
+	}
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::ReadSuplUsage
+// Reads Supl Usage from Central Repository
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::ReadSuplUsage()
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager2::ReadSuplUsage start"), KTraceFileName, __LINE__);	
+	CSuplSettings::TSuplSettingsUsage suplUsage;
+	TInt err = iSuplStorageSettings->GetSuplUsage(suplUsage);		
+	if(err == KErrNone ) 
+		{
+			iSuplSettings->SetSUPLUsage(suplUsage);
+		}
+	iTrace->Trace(_L("COMASUPLProtocolManager2::ReadSuplUsage end"), KTraceFileName, __LINE__);	
+	}
 
 void COMASUPLProtocolManager2::UpdateAllSubSessnsInSameSession(TInt aIpcSessionId)
     {
@@ -1813,6 +1942,8 @@
 			OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]);
             TInt ipcSessnId = OMAsuplSession->SuplIpcSessionID();
 
+            if (ipcSessnId > 0 && ipcSessnId == aIpcSessionId)
+                OMAsuplSession->UpdateSuplUsage();
 		}
     }        
 
@@ -1828,7 +1959,23 @@
             OMAsuplSession->SettingsChanged();
 		}
     }        
-        
+
+void COMASUPLProtocolManager2::CheckOutstandingUsageUIRequestsL()
+    {
+	TInt TotalSession = iSuplSessions.Count();
+	COMASuplSession* OMAsuplSession = NULL;
+
+	for(TInt cnt = 0; cnt < TotalSession; ++cnt)
+		{
+			OMAsuplSession = static_cast<COMASuplSession*>(iSuplSessions[cnt]);
+
+            if (OMAsuplSession->GetSuplUsageFlag())
+                {                        
+                OMAsuplSession->StartUsageDialogLaunchL();
+                break;
+                }
+		}
+    }        
 
 void COMASUPLProtocolManager2::CheckForRoaming()
     {
@@ -1908,7 +2055,63 @@
         }            
     }            
 
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::LaunchSuplDialogTimeoutUI
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::LaunchSuplDialogTimeoutUI(MOMASuplUICompletionObserver* aObserver )
+    {
+    iTrace->Trace(_L("COMASUPLProtocolManager2::LaunchTimeOutUI"), KTraceFileName, __LINE__);
+    
+    iSessnUIObserver = aObserver;            
+    if (iSuplSettings->IsUIActive())
+        {
+        iSuplSettings->SetUIActive(EFalse);
+        iSettingsLauncher->Cancel();
+        }                
 
+    iSuplSettings->SetUIActive(ETrue);
+    iTimeOutDialogPresent = ETrue;
+    return iSettingsLauncher->LaunchSessionTimeOutDialog();		
+    }
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::SettingsTimeOutUICompletedL
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASUPLProtocolManager2::SettingsTimeOutUICompletedL(TInt aError)
+	{
+	iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsTimeOutUICompletedL"), KTraceFileName, __LINE__);
+    iSuplSettings->SetUIActive(EFalse);
+    iTimeOutDialogPresent = EFalse;
+
+    if (iDeInitDone)
+        {
+	    iTrace->Trace(_L("COMASUPLProtocolManager2::SettingsTimeOutUICompletedL, Completing request"), KTraceFileName, __LINE__);
+        iDeInitDone = EFalse;
+        User::RequestComplete(iDeInitRequestStatus,KErrNone);
+        }                
+    else
+        {
+        if (iSessnUIObserver)                
+        	iSessnUIObserver->SettingsTimeOutUICompletedL(aError);
+        }
+	}
+
+// -----------------------------------------------------------------------------
+// COMASUPLProtocolManager2::GetLastUsedAccessPoint
+// 
+// 
+// -----------------------------------------------------------------------------
+//
+TInt COMASUPLProtocolManager2::GetLastUsedAccessPoint(TDes& aLastlyUsedAccessPoint,TUint32& iIAPId)
+	{
+	return iSettingsLauncher->GetIAPName(aLastlyUsedAccessPoint,iIAPId);
+	}
 
 // -----------------------------------------------------------------------------
 // COMASUPLProtocolManager2::PrintHex
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsession2.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsession2.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -2177,7 +2177,15 @@
         iTrace->Trace(msg,KTraceFileName, __LINE__); 
         }
 
-    
+    CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+
+    if (usage == CSuplSettings::ESuplUsageDisabled)
+        {                
+        msg.Copy(_L("SUPL Usage is disabled"));
+        iTrace->Trace(msg,KTraceFileName, __LINE__); 
+        iSessionObserver.TerminateSession(this, KErrGeneral);	
+        return;
+        }
 
     COMASuplAsnMessageBase::TSuplMessageType messageType = aDecodedAsnMessage->MessageType();
 
@@ -4344,6 +4352,17 @@
     }
 
 
+// -----------------------------------------------------------------------------
+// COMASuplSession::SettingsUICompleted
+// 
+// -----------------------------------------------------------------------------
+
+void COMASuplSession::SettingsUICompletedL(TInt /*aError*/)
+	{
+		iTrace->Trace(_L("COMASuplSession::SettingsUICompleted ..."), KTraceFileName, __LINE__);
+
+	}
+
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::HandleInvalidMessageL
@@ -4675,7 +4694,57 @@
     OperationCompleteL(KErrTimedOut);
     }
 
-
+// -----------------------------------------------------------------------------
+// COMASuplSession::SettingsUsageUICompletedL
+// 
+// -----------------------------------------------------------------------------
+void COMASuplSession::SettingsUsageUICompletedL(TInt aError)
+    {
+    iUIFlag = EFalse;
+    TBuf<64> msg;	
+    msg.Copy(_L("SUPL Usage UI completed with ... "));
+    msg.AppendNum(aError);
+    iTrace->Trace(msg,KTraceFileName, __LINE__); 
+
+    iPrevUsageResult = aError;                    
+
+
+
+    if (aError == KErrNone)
+        {
+        iProtocolManager.UpdateAllSubSessnsInSameSession(iIpcSessionId);                
+
+        if (isTimeoutDialogTimerStarted)
+            {                
+            iTrace->Trace(_L("COMASuplSession::SettingsUsageUICompletedL, stopping timer "), KTraceFileName, __LINE__);
+            isTimeoutDialogTimerStarted = EFalse;                    
+            iDialogTimer->StopTimer();
+
+            //Compute how log the dialog was on
+            TTime nowTime;
+            nowTime.HomeTime();
+            nowTime.SecondsFrom(iDlgStartTime, iDiffTime);	
+            }
+        if (iNwInitError)
+            {
+            iNwInitError = EFalse;                    
+            HandleSuplInitErrorL(iNwInitCompletionCode);                             
+            }                
+        else
+            InitializeL(iRequestID); 
+        }            
+    else if (aError == KErrCompletion)
+        CheckForSuplUsageL();
+    else 
+        {
+        TBuf<64> msg;	
+        msg.Copy(_L("Error after SUPL Usage Popup... "));
+        msg.AppendNum(aError);
+        iTrace->Trace(msg,KTraceFileName, __LINE__); 
+        iSessionObserver.TerminateSession(this, KErrGeneral);	
+        return;
+        }
+    }
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::CheckForSuplUsageL
@@ -4684,24 +4753,42 @@
 void COMASuplSession::CheckForSuplUsageL()
     {
     iTrace->Trace(_L("COMASuplSession::CheckForSuplUsageL Start"), KTraceFileName, __LINE__); 
-          
+
+    if (iSuplUsage >= 1)
+        {            
+        CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+        if (usage == CSuplSettings::ESuplUsageDisabled)
+            {            
+            iTrace->Trace(_L("CheckForSuplUsageL, SUPL disabled"), KTraceFileName, __LINE__); 
+            iSessionObserver.TerminateSession(this, KErrGeneral);	
+            }
+        else if (usage == CSuplSettings::ESuplUsageAutomatic)
+            {            
             if (iNwInitError)
                 {
                 iNwInitError = EFalse;                    
                 HandleSuplInitErrorL(iNwInitCompletionCode);                             
                 }                
             else
-            	{
-            		if (iRoaming)                
-                    HandleRoamingCheckCompleteL(KErrNone, EFalse);                    
-                else
-                    {                        
-                    iEtelRoamingCheck = ETrue;
-                    iProtocolManager.CheckForRoaming();
-                    }
-	            
-	          	}
-            
+                {                    
+                iTrace->Trace(_L("CheckForSuplUsageL, Initializing"), KTraceFileName, __LINE__); 
+                InitializeL(iRequestID); 
+                }
+            }
+
+        else if (usage == CSuplSettings::ESuplUsageHomeAutomatic || usage == CSuplSettings::ESuplUsageAlwaysAsk)
+            {
+            if (iRoaming)                
+                HandleRoamingCheckCompleteL(KErrNone, EFalse);                    
+            else
+                {                        
+                iEtelRoamingCheck = ETrue;
+                iProtocolManager.CheckForRoaming();
+                }
+            }            
+        }            
+    else
+        InitializeL(iRequestID); 
 
     }        
 
@@ -4784,10 +4871,80 @@
         {            
         iUsageHomeNW = aHomeNw;   
         iConnRequestor->UpdateSLPListForHomeUsage(iUsageHomeNW);             
-        
-
-               
+        CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+
+        if (usage == CSuplSettings::ESuplUsageAlwaysAsk)
+            {
+            TInt err;                
+            if (!aHomeNw)
+                {                            
+                iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+                err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
+                }
+            else
+                {                            
+                iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is not roaming"), KTraceFileName, __LINE__);
+                err = iProtocolManager.LaunchSuplUsageSettingsUI(this, EFalse);        
+                }
+
+            if(KErrNone != err && KErrInUse == err)
+                {
+                iTrace->Trace(_L("Dialog in use, setting flag"), KTraceFileName, __LINE__);
+                SetSuplUsageFlag();                            
+                }
+            if( KErrNone == err  && iRequestType == ESUPL_NETWORK )
+                {
+                iTrace->Trace(_L("Network Session , starting timer"), KTraceFileName, __LINE__);
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
                     {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        TBuf<256> msg(_L("Delay value in CR is"));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                iDlgStartTime.HomeTime();
+                }
+            else if (KErrNone != err)
+                {
+                iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+                HandleSuplErrorL(err);
+                }
+
+            }
+        else if (usage == CSuplSettings::ESuplUsageHomeAutomatic) 
+            {                
+            if (!aHomeNw)
+                {                
+                TInt err;                
+                //if (!iSuplSettings->IsUIActive() )
+                {
+                iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+                err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
 
                 if(iSuplMsgType == ESUPL_INIT)
                     {
@@ -4826,15 +4983,27 @@
                 }
 
 
-                       
+                if(!iSuplSettings->IsUIActive() && KErrNone != err)
+                    {
+                    SetSuplUsageFlag();                            
+                    }
+                else
+                    {
+                    iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+                    HandleSuplErrorL(err);
+                    }
+                }
+            else            
+                {                
                 if (iNwInitError)
                     {
                     iNwInitError = EFalse;                    
                     HandleSuplInitErrorL(iNwInitCompletionCode);                             
                     }                
                 else
-	                InitializeL(iRequestID); 
-                                                
+                    InitializeL(iRequestID); 
+                }                
+            }                
         }
     else
         {
@@ -4844,7 +5013,12 @@
 TInt COMASuplSession::SuplIpcSessionID() 
     {
     return iIpcSessionId;
-    }       
+    }    
+
+void COMASuplSession::UpdateSuplUsage()
+    {        
+    iPrevUsageResult = KErrNone;            
+    }    
 
 void COMASuplSession::SettingsChanged()
     {
@@ -4883,9 +5057,189 @@
                 iIapNotifier->NotifyIapSettingsChange();
             }            
         }            
-    }              
-
-
+    }        
+void COMASuplSession::SetSuplUsageFlag()
+    {
+    iUsageDialog = ETrue;            
+    }        
+
+void COMASuplSession::ReSetSuplUsageFlag()
+    {
+    iUsageDialog = EFalse;            
+    }        
+
+TBool COMASuplSession::GetSuplUsageFlag()
+    {
+    return iUsageDialog;
+    }        
+
+void COMASuplSession::StartUsageDialogLaunchL()
+    {
+    iTrace->Trace(_L("COMASuplSession::StartUsageDialogLaunchL"), KTraceFileName, __LINE__);
+    ReSetSuplUsageFlag();            
+    iTrace->Trace(_L("COMASuplSession::StartUsageDialogLaunchL, flag reset done"), KTraceFileName, __LINE__);
+
+    CSuplSettings::TSuplSettingsUsage usage = iSuplSettings->SUPLUsage();
+    if (usage == CSuplSettings::ESuplUsageAlwaysAsk)
+        {
+        TInt err;                
+        if (!iUsageHomeNW)
+            {                            
+            iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+            err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
+
+            if(iRequestType == ESUPL_NETWORK && err == KErrNone)
+                {
+                iTrace->Trace(_L("starting Dialog timer "), KTraceFileName, __LINE__);
+
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
+                    {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        iTrace->Trace(_L("Delay not present in message"), KTraceFileName, __LINE__);
+                        TBuf<256> msg(_L("Delay value in CR is "));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                }
+            }
+        else
+            {                            
+            iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is not roaming"), KTraceFileName, __LINE__);
+            err = iProtocolManager.LaunchSuplUsageSettingsUI(this, EFalse);        
+
+            if( iRequestType == ESUPL_NETWORK && err == KErrNone)
+                {    
+                iTrace->Trace(_L("starting Dialog timer "), KTraceFileName, __LINE__);
+
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
+                    {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        iTrace->Trace(_L("Delay not present in message"), KTraceFileName, __LINE__);
+                        TBuf<256> msg(_L("Delay value in CR is"));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                }
+            }
+
+        if(KErrNone != err)
+            {                        
+            iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+            HandleSuplErrorL(err);
+            }
+        }
+    else if (usage == CSuplSettings::ESuplUsageHomeAutomatic) 
+        {                
+        if (!iUsageHomeNW)
+            {                
+            TInt err;                
+            iTrace->Trace(_L("Invoking LaunchSuplUsageSettingsUI, user is roaming"), KTraceFileName, __LINE__);
+            err = iProtocolManager.LaunchSuplUsageSettingsUI(this, ETrue);        
+
+            if(KErrNone != err)
+                {
+                iTrace->Trace(_L("Invoking HandleSuplErrorL"), KTraceFileName, __LINE__);
+                HandleSuplErrorL(err);
+                }
+
+            if(iRequestType == ESUPL_NETWORK && err == KErrNone)
+                {    
+                iTrace->Trace(_L("starting Dialog timer "), KTraceFileName, __LINE__);
+
+                COMASuplInit* suplInit = static_cast <COMASuplInit*> (iDecodedAsnMessage);
+                TOMASuplQop qop;
+                TInt retVal = suplInit->Qop(qop);
+                TInt delay;
+                qop.Delay(delay);
+                //if delay is > 7, it is not valid
+                if (delay > 7)
+                    delay = 0;                                
+                if(retVal == KErrNone && delay > 0)
+                    {
+                    TReal delayReal;
+                    Math::Pow(delayReal, 2, (TReal)delay);
+                    delay = (TInt) delayReal;
+                    TBuf<128> msg(_L("Delay present in message, value is = "));
+                    msg.AppendNum(delay);
+                    iTrace->Trace(msg, KTraceFileName, __LINE__); 
+                    isTimeoutDialogTimerStarted = ETrue;
+                    iDialogTimer->StartTimer(delay);
+                    }  	
+                else
+                    {
+                    if (iSuplInitTimeOut > 0)
+                        {                                                        
+                        iTrace->Trace(_L("Delay not present in message"), KTraceFileName, __LINE__);
+                        TBuf<256> msg(_L("Delay value in CR is"));
+                        msg.AppendNum(iSuplInitTimeOut);
+                        iDialogTimer->StartTimer(iSuplInitTimeOut * KSecond);
+                        isTimeoutDialogTimerStarted = ETrue;
+                        }
+                    else
+                        iTrace->Trace(_L("Timeout is <= 0"), KTraceFileName, __LINE__);
+                    }
+                }
+            }
+        else            
+            {                
+            if (iNwInitError)
+                {
+                iNwInitError = EFalse;                    
+                HandleSuplInitErrorL(iNwInitCompletionCode);                             
+                }                
+            else
+                InitializeL(iRequestID); 
+            }                
+        }                
+    }
 
 TBool COMASuplSession::IsEtelNotifySet()
     {
@@ -4925,12 +5279,30 @@
         iTrace->Trace(_L("Timer Expired for SUPL Dialog"), KTraceFileName, __LINE__); 
 
 
-                
+        if (!iIapDialogShown)
+            iProtocolManager.LaunchSuplDialogTimeoutUI(this);
+        else
+            iIapDlgTimerExpired = ETrue;            
 
         }
     return;	
     }
 
+// -----------------------------------------------------------------------------
+// COMASuplSession::SettingsTimeOutUICompletedL
+// 
+// -----------------------------------------------------------------------------
+void COMASuplSession::SettingsTimeOutUICompletedL(TInt aError)
+    {
+
+    TBuf<64> msg;	
+    msg.Copy(_L("SUPL Timeout UI completed with ... "));
+    msg.AppendNum(aError);
+    iTrace->Trace(msg,KTraceFileName, __LINE__); 
+    iSessionObserver.TerminateSession(this, KErrGeneral);	
+    return;
+
+    }
 
 // -----------------------------------------------------------------------------
 // COMASuplSession::StoreCurrentCellIDL
@@ -5306,7 +5678,7 @@
 				//Inform UI that ,trigger session has started...
 		InsertActiveSessionL();
 		TInt privacyId;
-		TRAP_IGNORE(iNetworkPrivacy->NotifyLocationRequestL(*iSuplReqInfo, privacyId); )
+		iNetworkPrivacy->NotifyLocationRequestL(*iSuplReqInfo, privacyId); 
 		iTrace->Trace(_L(" Calling InsertActiveSessionL"), KTraceFileName, __LINE__);
          
 	}
@@ -5343,7 +5715,7 @@
 				
 				
 				
-    	TRAP_IGNORE(iNetworkPrivacy->NotifyLocationRequestL(*iSuplReqInfo, iRequestorId);)
+    	iNetworkPrivacy->NotifyLocationRequestL(*iSuplReqInfo, iRequestorId);
     	
     }
     
--- a/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsettings.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/protocolhandlerver2/src/epos_comasuplsettings.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -125,7 +125,27 @@
 	return iIAPId;
 }
 
+// -----------------------------------------------------------------------------
+// COMASuplSettings::SetSUPLUsage
+// Sets the SUPL Usage
+// 
+// -----------------------------------------------------------------------------
+//
+void COMASuplSettings::SetSUPLUsage(CSuplSettings::TSuplSettingsUsage& aSUPLUsage ) 
+{
+    iSUPLUsage = aSUPLUsage;
+}
 
+// -----------------------------------------------------------------------------
+// COMASuplSettings::SUPLUsage() 
+// Gets the SUPL Usage
+// 
+// -----------------------------------------------------------------------------
+//
+CSuplSettings::TSuplSettingsUsage COMASuplSettings::SUPLUsage() const
+	{
+		return iSUPLUsage;
+	}
 
 
 // -----------------------------------------------------------------------------
--- a/supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler.iby	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler.iby	Wed Oct 13 15:01:35 2010 +0300
@@ -64,7 +64,9 @@
 ECOM_PLUGIN(epos_omasuplsyncmldm.dll,epos_omasuplsyncmldm.rsc)
 #endif	// __SYNCML_DM
 
-
+// Notifier
+ECOM_PLUGIN(epos_omasuplnotifierplugin.dll,epos_omasuplnotifierplugin.rsc)
+file=ABI_DIR\BUILD_DIR\epos_omasuplnotifier.dll   SHARED_LIB_DIR\epos_omasuplnotifier.dll
 // Storage Db Backup Registration File
 data=DATAZ_\private\1027509E\backup_registration.xml    \private\1027509E\backup_registration.xml
 #endif //__OMA_SUPL_PLUGINS   
--- a/supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler_resource.iby	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationomasuplprotocolhandler/rom/omasuplprotocolhandler_resource.iby	Wed Oct 13 15:01:35 2010 +0300
@@ -28,8 +28,8 @@
 
 #ifdef __OMA_SUPL_PLUGINS   
 
-
-
+//Resource file for notifier
+data=DATAZ_\resource\epos_omasuplnotifier.rsc      	    resource\epos_omasuplnotifier.rsc
 #endif  //__OMA_SUPL_PLUGINS 
 
 #endif // OMASUPLPROTOCOLHANDLER_RESOURCE_IBY
Binary file supl/locationsuplfw/conf/suplsettings.confml has changed
Binary file supl/locationsuplfw/conf/suplsettings_102073D6.crml has changed
--- a/supl/locationsuplfw/gateway/inc/epos_csuplipcsubsession.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/inc/epos_csuplipcsubsession.h	Wed Oct 13 15:01:35 2010 +0300
@@ -126,19 +126,11 @@
 		void HandlePeriodicTriggerSessionWithServernameL(const RMessage2& aMessage);		
 		void HandleStopTriggerringSessionL(const RMessage2& aMessage);		
 		void HandleNotifyTriggerFiredL(const RMessage2& aMessage);
-		/*
-		 * For GeoTagging
-		 */
-		void HandleLocationConversionL(const RMessage2& aMessage);
-		void HandleCancelLocationConversionL(const RMessage2& aMessage);
 
     private:    // Data
-    	// Supl session handle.Ownership is with this object
     	CSuplSessionBase*		iSuplSession;
-		// Supl session request object.Ownership is with this object
 		CSuplSessionRequest*	iSuplSessnReq;
 		RMessage2               iMessage;
-		// Position buffer.Ownership is with this object
 		HBufC8*                 iPositionBuffer;
 		TInt 					iReqType;
 		RSuplTerminalSubSession::TSuplServiceType iSuplService;
--- a/supl/locationsuplfw/gateway/inc/epos_csuplsessionmanager.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/inc/epos_csuplsessionmanager.h	Wed Oct 13 15:01:35 2010 +0300
@@ -25,7 +25,6 @@
 #include <lbspositioninfo.h>
 #include <epos_suplterminal.h>
 #include <epos_suplterminaltrigger.h>
-#include <epos_suplgeocellinfo.h>
 #include "epos_csuplecomeventwatcher.h"
 #include "epos_csuplsessionretryq.h"
 #include "epos_csuplcommunicationmanager.h"
@@ -96,12 +95,6 @@
 		// from MSuplConnectionMonitor
 		void ConnectionOpened();
 		void ConnectionClosed();
-
-		void MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-		                                     TGeoCellInfo& aCellInfo,
-		                                     TRequestStatus& aStatus
-		                                   );
-		void CancelLocationConversionRequest(CSuplSessionBase *aSessn);
 	
     private:
 
--- a/supl/locationsuplfw/gateway/inc/epos_csuplsessionrequest.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/inc/epos_csuplsessionrequest.h	Wed Oct 13 15:01:35 2010 +0300
@@ -27,7 +27,6 @@
 #include <lbspositioninfo.h>
 #include <epos_suplterminalqop.h>
 #include <epos_suplterminaltrigger.h>
-#include "epos_suplgeocellinfo.h"
 
 // CONSTANT DECLARATIONS
 
@@ -102,10 +101,6 @@
 		void CancelTriggerringRequest();
 		
 		void ProtocolHUnloaded();
-
-		void MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,TGeoCellInfo& aCellInfo );
-		
-		void CancelLocationConversionRequest();
 		void ReIssueRequestL();
 		
     protected:  // From CActive
@@ -139,9 +134,7 @@
             ESuplStopTriggerRequest,
             ESuplTriggerFiredNotifyRequest,
 			ESuplWaitingToRetrySession,
-			ESuplRetryingSession,
-			ESuplLocationConversionRequest,
-            ESuplCancelLocationConversionRequest
+			ESuplRetryingSession
             };
      
 	 TSuplRequestStage           iRequestPhase;
--- a/supl/locationsuplfw/gateway/src/epos_csuplipcsession.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/src/epos_csuplipcsession.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -118,11 +118,7 @@
     TInt dataSize = aMessage.GetDesLength(0);
     if(dataSize>0)
     	{
-    	TRAPD(err,iSuplServer.HandleNewNetSessionL(iSessionManager,aMessage));
-    	if(err != KErrNone)
-    	    {
-            RequestComplete(aMessage,err);
-    	    }
+    	iSuplServer.HandleNewNetSessionL(iSessionManager,aMessage);  
     	}
     else
     	{
--- a/supl/locationsuplfw/gateway/src/epos_csuplipcsubsession.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/src/epos_csuplipcsubsession.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -34,8 +34,6 @@
 #include "epos_csuplsettings.h"
 #include "epos_csuplsettingsinternal.h"
 #include "epos_csuplsettingparams.h"
-#include "epos_suplgeocellinfo.h"
-
 
 // CONSTANTS
 //#ifdef _DEBUG
@@ -228,19 +226,6 @@
         	HandleNotifyTriggerFiredL(aMessage);
         	break;
         	}
-        case ESuplTerminalSubssnLocationConversion:
-                    {
-                    iMessage=aMessage;
-                    iReqType = ESuplTerminalSubssnLocationConversion;
-                    HandleLocationConversionL(aMessage);
-                    break;
-                    }
-                            
-                case ESuplTerminalSubssnCancelLocationConversion:
-                    {
-                    HandleCancelLocationConversionL(aMessage);
-                    break;
-                    }  
 		default:
 			User::Leave(KErrNotSupported);
         }
@@ -743,53 +728,5 @@
 						
 	CleanupStack::Pop(fireInfoBuf);	    		
 	}
-
-// ---------------------------------------------------------
-// CSuplIPCSubSession::HandleLocationConversionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//  
-void CSuplIPCSubSession::HandleLocationConversionL(const RMessage2& aMessage)
-    {
-    DEBUG_TRACE("CSuplIPCSubSession::HandleLocationConversionL", __LINE__)
-
-    if (iSuplSessnReq->IsActive())
-        {
-        SuplGlobal::RequestComplete(aMessage, KErrAlreadyExists);
-        }
-
-    if(iReqType==ESuplTerminalSubssnLocationConversion)
-        {
-        HBufC8* cellBuf = SuplGlobal::CopyClientBuffer8LC(aMessage,0);
-                
-        TGeoCellInfo& cellInfo = reinterpret_cast
-        <TGeoCellInfo&>(const_cast<TUint8&>(*cellBuf->Ptr()));
-                            
-        iSuplSessnReq->MakeLocationConversionRequestL( iSuplSession,cellInfo );
-        
-        CleanupStack::PopAndDestroy(cellBuf);        
-        }
-         
-    }
-
-// ---------------------------------------------------------
-// CSuplIPCSubSession::HandleCancelLocationConversionL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//  
-void CSuplIPCSubSession::HandleCancelLocationConversionL(const RMessage2& aMessage)
-    {
-    DEBUG_TRACE("CSuplIPCSubSession::HandleCancelLocationConversionL", __LINE__)
-
-    if (!iSuplSessnReq->IsActive()||(iReqType!=ESuplTerminalSubssnLocationConversion))
-        {
-        User::Leave(KErrNotFound);
-        }
-    iSuplSessnReq->CancelLocationConversionRequest();
-    SuplGlobal::RequestComplete(aMessage, KErrNone);
-    CompleteRunSession(KErrCancel);            
-    }
 	
 // End of File
--- a/supl/locationsuplfw/gateway/src/epos_csuplserver.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/src/epos_csuplserver.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -142,8 +142,8 @@
     // Settings
     TInt keyValue;
     TInt err = KErrNone;
-    CRepository* repository = NULL;
-    TRAP(err, repository = CRepository::NewL(KCRUidSuplConfiguration));
+    
+    CRepository* repository = CRepository::NewL(KCRUidSuplConfiguration);
     CleanupStack::PushL(repository);
     
     if (err != KErrNone)
@@ -264,7 +264,7 @@
         }
 
     //if secure id is not equal to KSuplWapSecureId or KSuplWapSecureId, then perform capability check
-    if ((aMessage.SecureId() != KSuplWapSecureId && aMessage.SecureId() != KNetworkGatewaySID && aMessage.SecureId() != 0x102869DF))
+    if ((aMessage.SecureId() != KSuplWapSecureId && aMessage.SecureId() != KNetworkGatewaySID))
     	{
         if (!aMessage.HasCapability(ECapabilityCommDD))
             {
@@ -322,11 +322,8 @@
     static _LIT_SECURITY_POLICY_S0(allowSuplWapPolicy, KSuplWapSecureId);
     TBool isSuplWap = allowSuplWapPolicy().CheckPolicy(aMessage); 
     
-    static _LIT_SECURITY_POLICY_S0(allowlocationserverPolicy, 0x102869DF);
-       TBool islocationserver = allowlocationserverPolicy().CheckPolicy(aMessage); 
-       
-       //Check if the request was made by one of the allowed processes else check for required capability
-       if (!isNetworkGateway && !isSuplWap && !islocationserver)
+    //Check if the request was made by one of the allowed processes else check for required capability
+    if (!isNetworkGateway && !isSuplWap )
         {
         if (!aMessage.HasCapability(ECapabilityCommDD))
             {
--- a/supl/locationsuplfw/gateway/src/epos_csuplsessionmanager.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/src/epos_csuplsessionmanager.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -30,7 +30,6 @@
 #include "epos_sessionmanagerlogging.h"
 #include "epos_csuplsessionmanager.h"
 #include "epos_csuplglobal.h"
-#include "epos_suplgeocellinfo.h"
 
 //#ifdef _DEBUG
 _LIT(KTraceFileName, "SUPL_GW::epos_csuplsessionmanager.cpp");
@@ -489,53 +488,5 @@
 	{
 	iSessionRetryQ->RemoveFromQueueL(aSessionRequest);
 	}	
-	
     
-// ---------------------------------------------------------
-// CSuplSessionManager::MakeLocationConversionRequestL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//      
-void CSuplSessionManager::MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-                                                          TGeoCellInfo& aCellInfo,
-                                                          TRequestStatus& aStatus
-                                                        )
-    {
-    DEBUG_TRACE("CSuplSessionManager::MakeLocationConversionRequestL", __LINE__)
-    TInt err = KErrNone;
-    if(iProtocolMgr && aSuplSessn)
-        {
-        DEBUG_TRACE("CSuplSessionManager::MakeLocationConversionRequestL if condition true", __LINE__)
-        TRAP(err,iProtocolMgr->MakeLocationConversionRequestL(aSuplSessn,aCellInfo,aStatus));   
-        DEBUG_TRACE("CSuplSessionManager::MakeLocationConversionRequestL err", __LINE__)
-        if(err!=KErrNone)
-            {
-            DEBUG_TRACE("CSuplSessionManager::MakeLocationConversionRequestL err not KErrNone", __LINE__)
-            TRequestStatus *status = &aStatus;
-            User::RequestComplete(status,KErrNotReady); 
-            }
-        }
-    else
-        {
-        TRequestStatus *status = &aStatus;
-        User::RequestComplete(status,KErrNotReady);
-        }
-    }
-
-// ---------------------------------------------------------
-// CSuplSessionManager::CancelLocationConversionRequest
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CSuplSessionManager::CancelLocationConversionRequest(CSuplSessionBase *aSessn)
-    {
-    DEBUG_TRACE("CSuplSessionManager::CancelLocationConversionRequest", __LINE__)
-    if(iProtocolMgr && aSessn)
-     iProtocolMgr->CancelLocationConversionRequest(aSessn);
-    }
-
-
-
 // End of File
--- a/supl/locationsuplfw/gateway/src/epos_csuplsessionrequest.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/gateway/src/epos_csuplsessionrequest.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -97,7 +97,7 @@
 CSuplSessionRequest::~CSuplSessionRequest()
     {
     DEBUG_TRACE("CSuplSessionRequest::~CSuplSessionRequest", __LINE__)
-    //iSessnMgr.RemoveFromQueueForReIssueRequest(*this);
+    iSessnMgr.RemoveFromQueueForReIssueRequest(*this);
     
     if (iParamExtendedFallback)
 		{
@@ -317,17 +317,6 @@
 	        	iNetObserver->CompleteForwardMessageL(iHandle);
 	        	break;
 	        	}
-				
-			case ESuplLocationConversionRequest:
-			case ESuplCancelLocationConversionRequest:
-            {
-            iRequestPhase = ESuplReqInactive;
-            iObserver->CompleteRunSession(err);
-            break;
-            }
-
-			
-
 
 	        default :
 	            DebugPanic(EPosSuplServerPanicRequestInconsistency);
@@ -500,38 +489,8 @@
     {
     DEBUG_TRACE("CSuplSessionRequest::CancelTriggerringRequest", __LINE__)
     iRequestPhase = ESuplStopTriggerRequest;
-    iSessnMgr.CancelTriggerringSession(iSuplSessn); 
-    //SetActive();
-    }
-
-// ---------------------------------------------------------
-// CSuplSessionRequest::MakeLocationConversionRequestL
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CSuplSessionRequest::MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-                                                          TGeoCellInfo& aCellInfo )
-    {
-    DEBUG_TRACE("CSuplSessionRequest::MakeLocationConversionRequestL", __LINE__)
-    iRequestPhase = ESuplLocationConversionRequest;
-    iStatus = KRequestPending;
-    iSessnMgr.MakeLocationConversionRequestL(aSuplSessn,aCellInfo,iStatus );
-    SetActive();       
-    }
-
-        
-// ---------------------------------------------------------
-// CSuplSessionRequest::CancelLocationConversionRequest
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CSuplSessionRequest::CancelLocationConversionRequest()
-    {
-    DEBUG_TRACE("CSuplSessionRequest::CancelLocationConversionRequest", __LINE__)
-    iRequestPhase = ESuplCancelLocationConversionRequest;
-    iSessnMgr.CancelLocationConversionRequest(iSuplSessn); 
+    iSessnMgr.CancelTriggerringSession(iSuplSessn);	
+	//SetActive();
     }
     
 //  End of File
--- a/supl/locationsuplfw/protocolhandlerapi/bwins/epossuplprotocolhandlerpluginu.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/protocolhandlerapi/bwins/epossuplprotocolhandlerpluginu.def	Wed Oct 13 15:01:35 2010 +0300
@@ -1,27 +1,26 @@
 EXPORTS
-	?Connect@CSuplConnection@@QAEXAAVTRequestStatus@@HH@Z @ 1 NONAME ; void CSuplConnection::Connect(class TRequestStatus &, int, int)
-	?ConstructL@CSUPLProtocolManagerBase@@UAEXABVTUid@@@Z @ 2 NONAME ; void CSUPLProtocolManagerBase::ConstructL(class TUid const &)
-	??0CSUPLProtocolManagerBase@@QAE@XZ @ 3 NONAME ; CSUPLProtocolManagerBase::CSUPLProtocolManagerBase(void)
-	?CancelListenToMessages@CSuplConnection@@QAEXXZ @ 4 NONAME ; void CSuplConnection::CancelListenToMessages(void)
-	?ImplementationUid@CSUPLProtocolManagerBase@@QBE?AVTUid@@XZ @ 5 NONAME ; class TUid CSUPLProtocolManagerBase::ImplementationUid(void) const
-	?CancelSend@CSuplConnection@@QAEXAAVTRequestStatus@@@Z @ 6 NONAME ; void CSuplConnection::CancelSend(class TRequestStatus &)
-	?ListenToMessages@CSuplConnection@@QAEHXZ @ 7 NONAME ; int CSuplConnection::ListenToMessages(void)
-	?GetSUPLMessageVersionL@CSUPLProtocolManagerBase@@UAEHAAHABVTDesC8@@@Z @ 8 NONAME ; int CSUPLProtocolManagerBase::GetSUPLMessageVersionL(int &, class TDesC8 const &)
-	?Version@CSUPLProtocolManagerBase@@QBEHXZ @ 9 NONAME ; int CSUPLProtocolManagerBase::Version(void) const
-	??1CSuplCommunicationManager@@UAE@XZ @ 10 NONAME ; CSuplCommunicationManager::~CSuplCommunicationManager(void)
-	?Connect@CSuplConnection@@QAEXAAVTRequestStatus@@@Z @ 11 NONAME ; void CSuplConnection::Connect(class TRequestStatus &)
-	?GetPortNumberUsed@CSuplConnection@@QAEHXZ @ 12 NONAME ; int CSuplConnection::GetPortNumberUsed(void)
-	?Initialize@CSuplCommunicationManager@@QAEHXZ @ 13 NONAME ; int CSuplCommunicationManager::Initialize(void)
-	?GetLocalIPAddress@CSuplConnection@@QAEHAAVTInetAddr@@@Z @ 14 NONAME ; int CSuplConnection::GetLocalIPAddress(class TInetAddr &)
-	?NewL@CSUPLProtocolManagerBase@@SAPAV1@ABVTDesC8@@@Z @ 15 NONAME ; class CSUPLProtocolManagerBase * CSUPLProtocolManagerBase::NewL(class TDesC8 const &)
-	?Send@CSuplConnection@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 16 NONAME ; void CSuplConnection::Send(class TDesC8 const &, class TRequestStatus &)
-	?CreateConnectionL@CSuplCommunicationManager@@QAEPAVCSuplConnection@@ABVTDesC16@@HHIH@Z @ 17 NONAME ; class CSuplConnection * CSuplCommunicationManager::CreateConnectionL(class TDesC16 const &, int, int, unsigned int, int)
-	?NewL@CSuplCommunicationManager@@SAPAV1@AAVMSuplConnectionMonitor@@@Z @ 18 NONAME ; class CSuplCommunicationManager * CSuplCommunicationManager::NewL(class MSuplConnectionMonitor &)
-	?CloseConnection@CSuplConnection@@QAEXXZ @ 19 NONAME ; void CSuplConnection::CloseConnection(void)
-	?CancelConnect@CSuplConnection@@QAEXAAVTRequestStatus@@@Z @ 20 NONAME ; void CSuplConnection::CancelConnect(class TRequestStatus &)
-	?DestroyConnection@CSuplCommunicationManager@@QAEHPAVCSuplConnection@@@Z @ 21 NONAME ; int CSuplCommunicationManager::DestroyConnection(class CSuplConnection *)
-	?NewL@CSUPLProtocolManagerBase@@SAPAV1@ABVTUid@@@Z @ 22 NONAME ; class CSUPLProtocolManagerBase * CSUPLProtocolManagerBase::NewL(class TUid const &)
-	?SetPacketReceiver@CSuplCommunicationManager@@QAEXPAVMSuplPacketReceiver@@@Z @ 23 NONAME ; void CSuplCommunicationManager::SetPacketReceiver(class MSuplPacketReceiver *)
-	??1CSUPLProtocolManagerBase@@UAE@XZ @ 24 NONAME ; CSUPLProtocolManagerBase::~CSUPLProtocolManagerBase(void)
-	?CreateConnectionL@CSuplCommunicationManager@@QAEPAVCSuplConnection@@ABVTDesC16@@IH@Z @ 25 NONAME ; class CSuplConnection * CSuplCommunicationManager::CreateConnectionL(class TDesC16 const &, unsigned int, int)
+	?ConstructL@CSUPLProtocolManagerBase@@UAEXABVTUid@@@Z @ 1 NONAME ; void CSUPLProtocolManagerBase::ConstructL(class TUid const &)
+	??0CSUPLProtocolManagerBase@@QAE@XZ @ 2 NONAME ; CSUPLProtocolManagerBase::CSUPLProtocolManagerBase(void)
+	?CancelListenToMessages@CSuplConnection@@QAEXXZ @ 3 NONAME ; void CSuplConnection::CancelListenToMessages(void)
+	?ImplementationUid@CSUPLProtocolManagerBase@@QBE?AVTUid@@XZ @ 4 NONAME ; class TUid CSUPLProtocolManagerBase::ImplementationUid(void) const
+	?CancelSend@CSuplConnection@@QAEXAAVTRequestStatus@@@Z @ 5 NONAME ; void CSuplConnection::CancelSend(class TRequestStatus &)
+	?ListenToMessages@CSuplConnection@@QAEHXZ @ 6 NONAME ; int CSuplConnection::ListenToMessages(void)
+	?GetSUPLMessageVersionL@CSUPLProtocolManagerBase@@UAEHAAHABVTDesC8@@@Z @ 7 NONAME ; int CSUPLProtocolManagerBase::GetSUPLMessageVersionL(int &, class TDesC8 const &)
+	?Version@CSUPLProtocolManagerBase@@QBEHXZ @ 8 NONAME ; int CSUPLProtocolManagerBase::Version(void) const
+	??1CSuplCommunicationManager@@UAE@XZ @ 9 NONAME ; CSuplCommunicationManager::~CSuplCommunicationManager(void)
+	?Connect@CSuplConnection@@QAEXAAVTRequestStatus@@@Z @ 10 NONAME ; void CSuplConnection::Connect(class TRequestStatus &)
+	?GetPortNumberUsed@CSuplConnection@@QAEHXZ @ 11 NONAME ; int CSuplConnection::GetPortNumberUsed(void)
+	?Initialize@CSuplCommunicationManager@@QAEHXZ @ 12 NONAME ; int CSuplCommunicationManager::Initialize(void)
+	?GetLocalIPAddress@CSuplConnection@@QAEHAAVTInetAddr@@@Z @ 13 NONAME ; int CSuplConnection::GetLocalIPAddress(class TInetAddr &)
+	?NewL@CSUPLProtocolManagerBase@@SAPAV1@ABVTDesC8@@@Z @ 14 NONAME ; class CSUPLProtocolManagerBase * CSUPLProtocolManagerBase::NewL(class TDesC8 const &)
+	?Send@CSuplConnection@@QAEXABVTDesC8@@AAVTRequestStatus@@@Z @ 15 NONAME ; void CSuplConnection::Send(class TDesC8 const &, class TRequestStatus &)
+	?CreateConnectionL@CSuplCommunicationManager@@QAEPAVCSuplConnection@@ABVTDesC16@@HHIH@Z @ 16 NONAME ; class CSuplConnection * CSuplCommunicationManager::CreateConnectionL(class TDesC16 const &, int, int, unsigned int, int)
+	?NewL@CSuplCommunicationManager@@SAPAV1@AAVMSuplConnectionMonitor@@@Z @ 17 NONAME ; class CSuplCommunicationManager * CSuplCommunicationManager::NewL(class MSuplConnectionMonitor &)
+	?CloseConnection@CSuplConnection@@QAEXXZ @ 18 NONAME ; void CSuplConnection::CloseConnection(void)
+	?CancelConnect@CSuplConnection@@QAEXAAVTRequestStatus@@@Z @ 19 NONAME ; void CSuplConnection::CancelConnect(class TRequestStatus &)
+	?DestroyConnection@CSuplCommunicationManager@@QAEHPAVCSuplConnection@@@Z @ 20 NONAME ; int CSuplCommunicationManager::DestroyConnection(class CSuplConnection *)
+	?NewL@CSUPLProtocolManagerBase@@SAPAV1@ABVTUid@@@Z @ 21 NONAME ; class CSUPLProtocolManagerBase * CSUPLProtocolManagerBase::NewL(class TUid const &)
+	?SetPacketReceiver@CSuplCommunicationManager@@QAEXPAVMSuplPacketReceiver@@@Z @ 22 NONAME ; void CSuplCommunicationManager::SetPacketReceiver(class MSuplPacketReceiver *)
+	??1CSUPLProtocolManagerBase@@UAE@XZ @ 23 NONAME ; CSUPLProtocolManagerBase::~CSUPLProtocolManagerBase(void)
+	?CreateConnectionL@CSuplCommunicationManager@@QAEPAVCSuplConnection@@ABVTDesC16@@IH@Z @ 24 NONAME ; class CSuplConnection * CSuplCommunicationManager::CreateConnectionL(class TDesC16 const &, unsigned int, int)
 
--- a/supl/locationsuplfw/protocolhandlerapi/eabi/epossuplprotocolhandlerpluginu.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/protocolhandlerapi/eabi/epossuplprotocolhandlerpluginu.def	Wed Oct 13 15:01:35 2010 +0300
@@ -8,32 +8,31 @@
 	_ZN15CSuplConnection22CancelListenToMessagesEv @ 7 NONAME
 	_ZN15CSuplConnection4SendERK6TDesC8R14TRequestStatus @ 8 NONAME
 	_ZN15CSuplConnection7ConnectER14TRequestStatus @ 9 NONAME
-	_ZN15CSuplConnection7ConnectER14TRequestStatusii @ 10 NONAME
-	_ZN24CSUPLProtocolManagerBase10ConstructLERK4TUid @ 11 NONAME
-	_ZN24CSUPLProtocolManagerBase22GetSUPLMessageVersionLERiRK6TDesC8 @ 12 NONAME
-	_ZN24CSUPLProtocolManagerBase4NewLERK4TUid @ 13 NONAME
-	_ZN24CSUPLProtocolManagerBase4NewLERK6TDesC8 @ 14 NONAME
-	_ZN24CSUPLProtocolManagerBaseC2Ev @ 15 NONAME
-	_ZN24CSUPLProtocolManagerBaseD0Ev @ 16 NONAME
-	_ZN24CSUPLProtocolManagerBaseD1Ev @ 17 NONAME
-	_ZN24CSUPLProtocolManagerBaseD2Ev @ 18 NONAME
-	_ZN25CSuplCommunicationManager10InitializeEv @ 19 NONAME
-	_ZN25CSuplCommunicationManager17CreateConnectionLERK7TDesC16iiji @ 20 NONAME
-	_ZN25CSuplCommunicationManager17CreateConnectionLERK7TDesC16ji @ 21 NONAME
-	_ZN25CSuplCommunicationManager17DestroyConnectionEP15CSuplConnection @ 22 NONAME
-	_ZN25CSuplCommunicationManager17SetPacketReceiverEP19MSuplPacketReceiver @ 23 NONAME
-	_ZN25CSuplCommunicationManager4NewLER22MSuplConnectionMonitor @ 24 NONAME
-	_ZN25CSuplCommunicationManagerD0Ev @ 25 NONAME
-	_ZN25CSuplCommunicationManagerD1Ev @ 26 NONAME
-	_ZN25CSuplCommunicationManagerD2Ev @ 27 NONAME
-	_ZNK24CSUPLProtocolManagerBase17ImplementationUidEv @ 28 NONAME
-	_ZNK24CSUPLProtocolManagerBase7VersionEv @ 29 NONAME
-	_ZTI15CSuplConnection @ 30 NONAME
-	_ZTI17CSuplSocketReader @ 31 NONAME
-	_ZTI24CSUPLProtocolManagerBase @ 32 NONAME
-	_ZTI25CSuplCommunicationManager @ 33 NONAME
-	_ZTV15CSuplConnection @ 34 NONAME
-	_ZTV17CSuplSocketReader @ 35 NONAME
-	_ZTV24CSUPLProtocolManagerBase @ 36 NONAME
-	_ZTV25CSuplCommunicationManager @ 37 NONAME
+	_ZN24CSUPLProtocolManagerBase10ConstructLERK4TUid @ 10 NONAME
+	_ZN24CSUPLProtocolManagerBase22GetSUPLMessageVersionLERiRK6TDesC8 @ 11 NONAME
+	_ZN24CSUPLProtocolManagerBase4NewLERK4TUid @ 12 NONAME
+	_ZN24CSUPLProtocolManagerBase4NewLERK6TDesC8 @ 13 NONAME
+	_ZN24CSUPLProtocolManagerBaseC2Ev @ 14 NONAME
+	_ZN24CSUPLProtocolManagerBaseD0Ev @ 15 NONAME
+	_ZN24CSUPLProtocolManagerBaseD1Ev @ 16 NONAME
+	_ZN24CSUPLProtocolManagerBaseD2Ev @ 17 NONAME
+	_ZN25CSuplCommunicationManager10InitializeEv @ 18 NONAME
+	_ZN25CSuplCommunicationManager17CreateConnectionLERK7TDesC16iiji @ 19 NONAME
+	_ZN25CSuplCommunicationManager17CreateConnectionLERK7TDesC16ji @ 20 NONAME
+	_ZN25CSuplCommunicationManager17DestroyConnectionEP15CSuplConnection @ 21 NONAME
+	_ZN25CSuplCommunicationManager17SetPacketReceiverEP19MSuplPacketReceiver @ 22 NONAME
+	_ZN25CSuplCommunicationManager4NewLER22MSuplConnectionMonitor @ 23 NONAME
+	_ZN25CSuplCommunicationManagerD0Ev @ 24 NONAME
+	_ZN25CSuplCommunicationManagerD1Ev @ 25 NONAME
+	_ZN25CSuplCommunicationManagerD2Ev @ 26 NONAME
+	_ZNK24CSUPLProtocolManagerBase17ImplementationUidEv @ 27 NONAME
+	_ZNK24CSUPLProtocolManagerBase7VersionEv @ 28 NONAME
+	_ZTI15CSuplConnection @ 29 NONAME
+	_ZTI17CSuplSocketReader @ 30 NONAME
+	_ZTI24CSUPLProtocolManagerBase @ 31 NONAME
+	_ZTI25CSuplCommunicationManager @ 32 NONAME
+	_ZTV15CSuplConnection @ 33 NONAME
+	_ZTV17CSuplSocketReader @ 34 NONAME
+	_ZTV24CSUPLProtocolManagerBase @ 35 NONAME
+	_ZTV25CSuplCommunicationManager @ 36 NONAME
 
--- a/supl/locationsuplfw/protocolhandlerapi/group/epos_suplprotocolhandlerplugin.mmp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/protocolhandlerapi/group/epos_suplprotocolhandlerplugin.mmp	Wed Oct 13 15:01:35 2010 +0300
@@ -51,7 +51,7 @@
 LIBRARY			insock.lib 
 LIBRARY			securesocket.lib
 LIBRARY			commdb.lib
-LIBRARY         centralrepository.lib extendedconnpref.lib netmeta.lib /*extendedconnpref.lib netmeta.lib Related to custom preference Api's(OCC).*/
+LIBRARY         centralrepository.lib 
 LIBRARY flogger.lib
 /* LIBRARY         gba.lib */
 
--- a/supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplconnection.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplconnection.h	Wed Oct 13 15:01:35 2010 +0300
@@ -88,16 +88,6 @@
         * @return void *
         */
         IMPORT_C void Connect(TRequestStatus &aStatus);
-        
-        /**
-        * A method that makes Socket Connection.
-        * @since Series 60 3.1 
-        * @return None
-        * @param aPrompt used to show connection prompt using OCC Api's.
-        * @param aWlanOnly used to differentiate connection for GPRS and WLAN using OCC Api's
-        */
-        IMPORT_C void Connect(TRequestStatus &aStatus,TBool aPrompt,TBool aWlanOnly);
-        
 
         IMPORT_C void CloseConnection();
 
@@ -392,7 +382,7 @@
         TBool iPskTLSUsage;
         
         TBool iStartedListen;
-        
+
         TBool iConnectStarted;
 
         TBool iSendInProgress;
@@ -405,14 +395,6 @@
         // Number of client connected
         TInt iConnectClients;
         
-        TBool iPrompt;
-        
-        TBool iWlanOnly;
-        
-       
-        
-        
-        
     };
 
 #endif      // C_CSUPLCONNECTION_H 
--- a/supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplprotocolmanagerbase.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/protocolhandlerapi/inc/epos_csuplprotocolmanagerbase.h	Wed Oct 13 15:01:35 2010 +0300
@@ -29,7 +29,6 @@
 //Forword Declarations
 class CSuplSessionBase;
 class CSuplCommunicationManager;
-class TGeoCellInfo;
 
 
 /**
@@ -375,35 +374,6 @@
      */
     virtual TInt GetSUPLMessageVersionL(TInt& aMajorVersion, const TDesC8& aReceivedMessage);
     
-    /**
-     * Function:     MakeLocationConversionRequestL
-     *
-     * @Description: Makes Location conversion request
-     *
-     * @Param:       aSuplSessn,session object on which processing will start
-     *
-     * @Param:       aCellInfo,cell information which needs to be converted to geo-coordinates
-     *
-     * @Param:       aStatus, On return, the status of the request
-     * @Returns:     returns None
-     */
-     
-     virtual void MakeLocationConversionRequestL( CSuplSessionBase* aSuplSessn,
-                                                  TGeoCellInfo& aCellInfo,
-                                                  TRequestStatus& aStatus ) = 0;
-        
-    
-     /**
-      * Function:     CancelLocationConversionRequest
-      *
-      * @Description: Cancels the conversion Request
-      *
-      * @Param:       Session Object
-      *
-      * @Returns:     None
-      */
-      
-      virtual void CancelLocationConversionRequest(CSuplSessionBase* aSuplSession) = 0;
     
 
 				 
--- a/supl/locationsuplfw/protocolhandlerapi/src/epos_csuplconnection.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/protocolhandlerapi/src/epos_csuplconnection.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -23,7 +23,7 @@
 #endif
 #include <commdbconnpref.h>
 #include <centralrepository.h>
-#include <extendedconnpref.h> //For OCC
+
 #include "epos_csuplserverprivatecrkeys.h"
 #include "epos_csuplconnection.h"
 #include "epos_csuplsocketreader.h"   
@@ -125,7 +125,7 @@
             iState(ENotConnected), iPacket(0, 0), iVariantEnabled(ETrue),
             iPskTLSUsage(EFalse), iStartedListen(EFalse), iConnectStarted(
                     EFalse), iSendInProgress(EFalse), iFirstPkt(EFalse),
-            iListenCount(0), iPrompt(EFalse), iWlanOnly(EFalse)
+            iListenCount(0)
     {
     iHostAddress.Zero();
     CActiveScheduler::Add(this);
@@ -319,10 +319,8 @@
     // Cancel Any outstanding request
     Cancel();
 
-    if (iTrace)
-        iTrace->Trace(_L(
-                "CSuplConnection::Destructor...Deleting Socket Reader"),
-                KTraceFileName, __LINE__);
+    iTrace->Trace(_L("CSuplConnection::Destructor...Deleting Socket Reader"),
+            KTraceFileName, __LINE__);
     //Delete the Socket Reader
     delete iSocketReader;
 
@@ -969,12 +967,7 @@
         {
         aStatus = KRequestPending;
         TRequestStatus *reqStatus = &aStatus;
-        TInt error = iConnArray.Append(reqStatus);
-        if (error != KErrNone)
-            {
-            User::RequestComplete(reqStatus, error);
-            return;
-            }
+        iConnArray.Append(reqStatus);
         }
 
     if (!iConnectStarted)
@@ -990,40 +983,14 @@
             iConnectStarted = ETrue;
 
 #ifndef __WINS__
-            TExtendedConnPref OCCPrefs;
-            TConnPrefList prefList;
-
-            OCCPrefs.SetForcedRoaming(EFalse); //do not switch networks during an ongoing connection            
-            OCCPrefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourDefault);
-
-            if(iIAPId != -1) //if a IAP was configured
-
-                {
-                iTrace->Trace(_L("CSuplConnection::Connect : IAP configured"), KTraceFileName, __LINE__);
-                OCCPrefs.SetIapId(iIAPId);
-                // since IAP Id is set SNAP purpose should not be set - set to unknown
-                OCCPrefs.SetSnapPurpose(CMManager::ESnapPurposeUnknown);
-                OCCPrefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerUnknown);
-                }
-            else
-                {
-                OCCPrefs.SetSnapPurpose(CMManager::ESnapPurposeInternet);
-                //WLAN and Cellular Networks allowed for connection
-                OCCPrefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerWLAN | TExtendedConnPref::EExtendedConnBearerCellular);
-
-                //if SNAP purpose is set IAP Id should be zero - zero by default not explicitly set
-                iTrace->Trace(_L("CSuplConnection::Connect : IAP not configured"), KTraceFileName, __LINE__);
-                }
-
-            TRAP_IGNORE(prefList.AppendL(&OCCPrefs));
+            TCommDbConnPref prefs;
+            prefs.SetDialogPreference(ECommDbDialogPrefDoNotPrompt);
+            prefs.SetDirection(ECommDbConnectionDirectionOutgoing);
+            prefs.SetIapId(iIAPId);
 
             TInt ret = iConnection.Open(iSocketServ);
-            if(ret != KErrNone)
-            iTrace->Trace(_L("RConnection Open returned error"), KTraceFileName, __LINE__);
-
-            iTrace->Trace(_L("RConnection Start Called, State is ERetriveIAP"), KTraceFileName, __LINE__);
             // Start an Outgoing Connection with overrides
-            iConnection.Start(prefList,iStatus);
+            iConnection.Start(prefs,iStatus);
             // Set state to ERetriveIAP
             iState = ERetriveIAP;
             SetActive();
@@ -1043,111 +1010,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CSuplConnection::Connect
-// Makes a secure connection to Network
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-
-EXPORT_C void CSuplConnection::Connect(TRequestStatus &aStatus,
-        TBool aPrompt, TBool aWlanOnly)
-    {
-
-    // Log
-    iTrace->Trace(_L("CSuplConnection::Connect"), KTraceFileName, __LINE__);
-    iPrompt = aPrompt;
-    iWlanOnly = aWlanOnly;
-
-    aStatus = KRequestPending;
-    TRequestStatus *reqStatus = &aStatus;
-
-    if (iState == EConnected)
-        {
-        User::RequestComplete(reqStatus, KErrNone);
-        iConnectClients++;
-        return;
-        }
-
-    TInt error = iConnArray.Append(reqStatus);
-    if (error != KErrNone)
-        {
-        User::RequestComplete(reqStatus, error);
-        return;
-        }
-
-    if (!iConnectStarted)
-        {
-        iTrace->Trace(
-                _L("CSuplConnection::Connect : Connection not started"),
-                KTraceFileName, __LINE__);
-        // Connect only if not already connected
-        if (iState == ENotConnected || iState == EFailure)
-            {
-            iTrace->Trace(_L("CSuplConnection::Connect : ENotConnected"),
-                    KTraceFileName, __LINE__);
-            iConnectStarted = ETrue;
-
-#ifndef __WINS__
-
-            iTrace->Trace(_L("CSuplConnection::Connect ExtendedConnPref"), KTraceFileName, __LINE__);
-
-            TExtendedConnPref OCCPrefs;
-            TConnPrefList prefList;
-
-            if(iWlanOnly)
-                {
-                iTrace->Trace(_L("CSuplConnection::Connect : iWLANOnly used"), KTraceFileName, __LINE__);
-                OCCPrefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerWLAN);
-                }
-            else
-                {
-                iTrace->Trace(_L("CSuplConnection::Connect OCC GPRS Connection.."), KTraceFileName, __LINE__);
-                OCCPrefs.SetBearerSet(TExtendedConnPref::EExtendedConnBearerCellular);
-                }
-            OCCPrefs.SetSnapPurpose(CMManager::ESnapPurposeInternet);
-
-            if(!iPrompt)
-                {
-                iTrace->Trace(_L("CSuplConnection::Connect : silent connection"), KTraceFileName, __LINE__);
-                OCCPrefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourConnSilent);
-                }
-            else
-                {
-                iTrace->Trace(_L("CSuplConnection::Connect : Dialog prompt"), KTraceFileName, __LINE__);
-                OCCPrefs.SetNoteBehaviour(TExtendedConnPref::ENoteBehaviourDefault);
-                }
-
-            TRAP_IGNORE(prefList.AppendL(&OCCPrefs));
-
-            TInt ret = iConnection.Open(iSocketServ);
-            if( ret != KErrNone )
-                {
-                TRequestStatus* statusPtr = &aStatus;
-                User::RequestComplete( statusPtr,ret );
-                return;
-                }
-            // Start an Outgoing Connection with overrides
-            iConnection.Start(prefList,iStatus);
-            // Set state to ERetriveIAP
-            iState = ERetriveIAP;
-            SetActive();
-
-#else
-            ConnectIAP();
-#endif
-            }
-        }
-    else
-        iTrace->Trace(
-                _L(
-                        "CSuplConnection::Connect : Conn in progress, request queued"),
-                KTraceFileName, __LINE__);
-    // Log
-    iTrace->Trace(_L("CSuplConnection::Connect:Exit"), KTraceFileName,
-            __LINE__);
-    }
-
-// -----------------------------------------------------------------------------
 // CSuplConnection::CompleteConnectStatus
 // Completes the request to cancel connection 
 // (other items were commented in a header).
@@ -1364,7 +1226,6 @@
         SetActive();
         }
     }
-
 // -----------------------------------------------------------------------------
 // CSuplConnection::ConnectIAP
 // Makes a socket connection to Network
--- a/supl/locationsuplfw/settingsapi/group/bld.inf	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/settingsapi/group/bld.inf	Wed Oct 13 15:01:35 2010 +0300
@@ -27,7 +27,6 @@
 ../inc/epos_csuplsettingsinternal.h	  |../../../inc/epos_csuplsettingsinternal.h
 ../inc/epos_csuplsettingextensionparams.h	  |../../../inc/epos_csuplsettingextensionparams.h
 ../inc/epos_csuplsettingsinternalconstants.h	  |../../../inc/epos_csuplsettingsinternalconstants.h
-../inc/epos_csuplsettingsinternalcrkeys.h         |../../../inc/epos_csuplsettingsinternalcrkeys.h
 PRJ_MMPFILES
 epos_suplsettings.mmp
 
--- a/supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsinternalcrkeys.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsinternalcrkeys.h	Wed Oct 13 15:01:35 2010 +0300
@@ -26,12 +26,11 @@
 const TUint32 KSuplSettingsFallBack = 0x00000002;
 const TUint32 KSuplSettingsFallBackTimer = 0x00000003;
 const TUint32 KSuplSettingsIMSI = 0x00000004;
-
+const TUint32 KSuplSettingsUsage = 0x00000005;
 const TUint32 KSuplSettingsDBEvent = 0x00000006;
 const TUint32 KSuplSettingsDBChangedSLPId = 0x00000007;
 const TUint32 KSuplSettigsDBPath = 0x00000008;
 const TUint32 KSuplSessionDBEvent = 0x00000009;
 const TUint32 KSuplSessionDBChangedSessionId = 0x0000000A;
-const TUint32 KSuplGeoInfoConvServerName = 0x0000000B;
 
 #endif //SUPLSETTINGSINTERNALCRKEYS_H
--- a/supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsnotifier.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsnotifier.h	Wed Oct 13 15:01:35 2010 +0300
@@ -107,6 +107,7 @@
         
         TBool iStopObserve;
 
+        CSuplSettings::TSuplSettingsUsage   iUsage;
         
         TInt iFallBackValue;
         TInt iFallBackTimerValue;
--- a/supl/locationsuplfw/settingsapi/src/epos_csuplsettings.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/settingsapi/src/epos_csuplsettings.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -235,20 +235,35 @@
 //-------------------------------------------------------------------------------------
 //CSuplSettings::GetSuplUsage()
 //
-//Deprecated Since S60 5.2. 
+//This method is used to retrieve SUPL usage from settings storage. 
 //--------------------------------------------------------------------------------------
-EXPORT_C TInt CSuplSettings::GetSuplUsage(TSuplSettingsUsage& /* aUsage */ ) const
+EXPORT_C TInt CSuplSettings::GetSuplUsage(TSuplSettingsUsage& aUsage) const
     {
-    return KErrNotSupported;            
+    TInt usage, ret;            
+    ret = iSettingsEngine->GetSuplUsage(usage);
+    
+    if (ret == KErrNone)
+        {
+        aUsage = (TSuplSettingsUsage)usage;
+        return KErrNone;        
+        }            
+    else
+        return ret;            
     }            
 //-------------------------------------------------------------------------------------
 //CSuplSettings::SetSuplUsage()
 //
-//Deprecated Since S60 5.2.
+//This method is used to change SUPL usage.
 //--------------------------------------------------------------------------------------
-EXPORT_C TInt CSuplSettings::SetSuplUsage(const TSuplSettingsUsage /* aUsage */ ) 
+EXPORT_C TInt CSuplSettings::SetSuplUsage(const TSuplSettingsUsage aUsage) 
     {
-    return KErrNotSupported;   
+    TInt usage = aUsage;            
+
+    if (usage < CSuplSettings::ESuplUsageAlwaysAsk ||
+        usage > CSuplSettings::ESuplUsageDisabled)                    
+        return KErrArgument;
+
+    return iSettingsEngine->SetSuplUsage(aUsage);
     }          
 //-------------------------------------------------------------------------------------
 //CSuplSettings::AddNewServer()
@@ -259,7 +274,6 @@
     {
     if(aParamValues == NULL)
         return KErrGeneral;
-        
     return iSettingsEngine->AddNewServer(aParamValues,aSlpId );  
     }
 
--- a/supl/locationsuplfw/settingsapi/src/epos_csuplsettingsengine.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/settingsapi/src/epos_csuplsettingsengine.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -274,6 +274,52 @@
 	return KErrNone; 
     }        
 
+/*TInt CSuplSettingsEngine::Set(const TDesC& aHslpAddress, const TDesC&  aIapName, 
+                const TInt aChangedBy)
+    {
+    TInt err;
+        
+    err = iRepository->Set(KSuplSettingsHSLPAddress, aHslpAddress);
+    if (err != KErrNone)
+        return err;
+        
+    err = iRepository->Set(KSuplSettingsIAP, aIapName);
+    if (err != KErrNone)
+        return err;           
+        
+    err = iRepository->Set(KSuplSettingsChangedBy, aChangedBy);
+    if (err != KErrNone)
+        return err;            
+        
+    err = iRepository->Set(KSuplSettingsIMSI, iImsi);
+    if (err != KErrNone)
+        return err;
+        
+    return KErrNone;
+    } 
+
+
+TInt CSuplSettingsEngine::Get(TDes& aHslpAddress, TDes&  aIapName, 
+                TDes& aImsi, TInt& aChangedBy)
+    {    
+    TInt err;            
+
+    err = iRepository->Get(KSuplSettingsHSLPAddress, aHslpAddress);
+    if (err != KErrNone)
+        return err;            
+    err = iRepository->Get(KSuplSettingsIAP, aIapName);
+    if (err != KErrNone)
+        return err;            
+    err = iRepository->Get(KSuplSettingsIMSI, aImsi);
+    if (err != KErrNone)
+        return err;            
+    err = iRepository->Get(KSuplSettingsChangedBy, aChangedBy);
+    if (err != KErrNone)
+        return err;            
+
+    return KErrNone;
+    }
+*/
 //-------------------------------------------------------------------------------------
 //CSuplSettingsEngine::IsInitDone()
 //
@@ -401,6 +447,37 @@
     return KErrNone;
     }    
 
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetSuplUsage()
+//
+//This method is used to retrieve SUPL usage from settings storage.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetSuplUsage(TInt& aUsage)
+    {
+    TInt err;            
+
+    err = iRepository->Get(KSuplSettingsUsage, aUsage);
+    if (err != KErrNone)
+        return err;            
+
+    return KErrNone;
+    }        
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetSuplUsage()
+//
+//This method is used to change SUPL usage.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SetSuplUsage(const TInt aUsage) 
+    {
+    TInt err;
+
+    err = iRepository->Set(KSuplSettingsUsage, aUsage);
+    if (err != KErrNone)
+        return err;            
+        
+    return KErrNone;
+    }            
 
 /*
  * GetMccLen
--- a/supl/locationsuplfw/settingsapi/src/epos_csuplsettingsnotifier.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/settingsapi/src/epos_csuplsettingsnotifier.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -95,7 +95,15 @@
         iObserver.HandleSuplSettingsChangeL(eventType,slpID);
         }
     else
-        {           
+        {
+        TInt usage;
+
+        iRepository->Get(KSuplSettingsUsage, usage);
+
+        if (iUsage != usage) //check if there was a change in the Supl usage value in the cen rep
+            iObserver.HandleSuplSettingsChangeL(MSuplSettingsObserver::ESuplSettingsEventSuplUsageChange);
+        else //else check if any of the other config parameters changed
+            {
             TInt fallBackValue;
             TInt fallBackTimerValue;
             TBuf<KMaxStrlen> imsi;
@@ -104,7 +112,7 @@
             iRepository->Get(KSuplSettingsIMSI,imsi);
             if(fallBackValue != iFallBackValue || fallBackTimerValue != iFallBackTimerValue || imsi.Compare(*iImsi))
                 iObserver.HandleSuplSettingsChangeL(MSuplSettingsObserver::ESuplSettingsEventCommParameterChange);
-            
+            }
         }
     StartListening();
     }
@@ -151,15 +159,15 @@
         }
     else
         {
-        
+        TInt usage;
         TBuf<KMaxStrlen> imsi;
-        
+        iRepository->Get(KSuplSettingsUsage, usage);
         iRepository->Get(KSuplSettingsFallBack,iFallBackValue);
         iRepository->Get(KSuplSettingsFallBackTimer,iFallBackTimerValue);
         iRepository->Get(KSuplSettingsIMSI,imsi);
         if(iImsi)
             iImsi->Des() = imsi;
-        
+        iUsage = (CSuplSettings::TSuplSettingsUsage) usage;
 
         // Request for notification for any field change
         iRepository->NotifyRequest(0x00000000, 0x00000000, iStatus);
--- a/supl/locationsuplfw/terminalinitiationapi/bwins/epos_suplterminitiationu.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/bwins/epos_suplterminitiationu.def	Wed Oct 13 15:01:35 2010 +0300
@@ -53,7 +53,4 @@
 	?ConstructL@CSuplSubSessnPtrHolder@@IAEXHH@Z @ 52 NONAME ; void CSuplSubSessnPtrHolder::ConstructL(int, int)
 	?NewL@CSuplSubSessnPtrHolder@@SAPAV1@HH@Z @ 53 NONAME ; class CSuplSubSessnPtrHolder * CSuplSubSessnPtrHolder::NewL(int, int)
 	?Connect@RSuplTerminalServer@@QAEHAAVTRequestStatus@@@Z @ 54 NONAME ; int RSuplTerminalServer::Connect(class TRequestStatus &)
-	?CancelLocationConversion@RSuplTerminalInternal@@QAEXXZ @ 55 NONAME ; void RSuplTerminalInternal::CancelLocationConversion(void)
-	??0RSuplTerminalInternal@@QAE@XZ @ 56 NONAME ; RSuplTerminalInternal::RSuplTerminalInternal(void)
-	?ConvertAreaInfoToCoordinates@RSuplTerminalInternal@@QAEXAAVTRequestStatus@@AAUTGeoCellInfo@@@Z @ 57 NONAME ; void RSuplTerminalInternal::ConvertAreaInfoToCoordinates(class TRequestStatus &, struct TGeoCellInfo &)
 
--- a/supl/locationsuplfw/terminalinitiationapi/eabi/epos_suplterminitiationu.def	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/eabi/epos_suplterminitiationu.def	Wed Oct 13 15:01:35 2010 +0300
@@ -68,8 +68,4 @@
 	_ZTV22CSuplSubSessnPtrHolder @ 67 NONAME
 	_ZTV23RSuplTerminalSubSession @ 68 NONAME
 	_ZN19RSuplTerminalServer7ConnectER14TRequestStatus @ 69 NONAME
-	_ZN21RSuplTerminalInternal24CancelLocationConversionEv @ 70 NONAME
-	_ZN21RSuplTerminalInternal28ConvertAreaInfoToCoordinatesER14TRequestStatusR12TGeoCellInfo @ 71 NONAME
-	_ZN21RSuplTerminalInternalC1Ev @ 72 NONAME
-	_ZN21RSuplTerminalInternalC2Ev @ 73 NONAME
 
--- a/supl/locationsuplfw/terminalinitiationapi/group/bld.inf	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/group/bld.inf	Wed Oct 13 15:01:35 2010 +0300
@@ -23,9 +23,6 @@
 PRJ_EXPORTS
 
 ../inc/epos_suplparameters.h MW_LAYER_PLATFORM_EXPORT_PATH(epos_suplparameters.h)
-../inc/epos_suplterminalinternal.h	  |../../../inc/epos_suplterminalinternal.h
-../inc/epos_suplgeocellinfo.h	  |../../../inc/epos_suplgeocellinfo.h
-
 PRJ_MMPFILES
 epos_suplterminalapi.mmp
 
--- a/supl/locationsuplfw/terminalinitiationapi/group/epos_suplterminalapi.mmp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/group/epos_suplterminalapi.mmp	Wed Oct 13 15:01:35 2010 +0300
@@ -33,7 +33,6 @@
 SOURCE			epos_suplterminalqop.cpp 
 SOURCE			epos_suplterminalparams.cpp
 SOURCE 			epos_suplterminalperiodictrigger.cpp
-SOURCE 			epos_suplterminalinternal.cpp
 
 USERINCLUDE     ../inc
 USERINCLUDE     ../../../inc
--- a/supl/locationsuplfw/terminalinitiationapi/inc/epos_suplgeocellinfo.h	Wed Sep 15 12:40:28 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Data structure to hold cell information for geo tagging purposes.
-*
-*/
-
-/*! \file epos_suplgeocellinfo.h
-    \brief Triggering classes 
-*/
-
-#ifndef __EPOS_SUPLGEOCELLINFO_H__
-#define __EPOS_SUPLGEOCELLINFO_H__
-
-// ==========================================
-
-/**
- * Cell types
- */
-enum TGeoCellType
-	{
-	/** GSM Cell. */
-	EGeoGsmCell = 0,
-	/** WCDMA cell. */
-	EGeoWcdmaCell = 1
-	};
-
-/**
- * Class defines detailed information for gsm/wcdma cell.
- *
- * @since S60 5.2
- */
-struct TGeoCellInfo
-    {
-    TInt iMNC;
-    TInt iMCC;
-    TInt iCid;
-    TInt iLac;
-    TBool iConnectionPrompt;
-    TBool iWlanOnly;
-    TGeoCellType iGeoCellType;
-    };
-
-#endif //__EPOS_SUPLGEOCELLINFO_H__
--- a/supl/locationsuplfw/terminalinitiationapi/inc/epos_suplterminalinternal.h	Wed Sep 15 12:40:28 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,81 +0,0 @@
-/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   SUPL Terminal Initiation internal class
-*
-*/
-
-#ifndef __EPOS_SUPLTERMINALINTERNAL_H__
-#define __EPOS_SUPLTERMINALINTERNAL_H__
-
-
-#include <epos_suplterminal.h>
-
-#include "epos_suplgeocellinfo.h"
-
-
-// Forward declarations
-
-/**
- * This class is used to make request to convert area information to geo-coordinates. 
- */
-class RSuplTerminalInternal : public RSuplTerminalSubSession
-	{
-	
-   
-public:
-    /**
-     * Constructor for RSuplTerminalInternal
-     *
-     */
-	IMPORT_C RSuplTerminalInternal(); 
-	
-	/**
-     * This is an asynchronous request to SUPL Server to determine position 
-     * information corresponding to given area information.
-     * Client can have only one outstanding asynchronous request per sub-session.  
-     * @param [OUT] aStatus to return result code 
-     * @param[IN] aGeoCellInfo Cell information
-     * @return aStatus will have 
-     *         - KErrNone if request is completed sucessfully.  
-     *         - KErrCancel if the request was successfully cancelled
-     *         - KErrNotReady if SUPL server is not ready to determine position information, 
-     *         			 client can retry after sometime.
-     *         - KErrAlreadyExists if there is already an ongoing request on sub-session.
-     *         - KErrServerTerminated if server got terminated due to some error
-     *         - KErrNotSupported if function is called when Session is NOT Opened with SUPL_1_0 service
-     *         - KErrGeneral for all other errors
-     *
-     */                    
-    
-    IMPORT_C void ConvertAreaInfoToCoordinates(
-					TRequestStatus& aStatus, 
-					TGeoCellInfo& aGeoCellInfo );
-                    
-    /**
-     * Cancels an outstanding asynchronous conversion request issued via ConvertAreaInfoToCoordinates 
-     *  Canceling requests is typically attempted when an client 
-     * is closing down.
-     *
-     */
-    IMPORT_C void CancelLocationConversion();
- 
-private:
-    //Cell Information
-	TGeoCellInfo iGeoCellInfo;
-	
-	//To check if conversion request has issued or not
-	TBool iConversionRequestIssued;
-	};
-
-#endif // __EPOS_SUPLTERMINALINTERNAL_H__
--- a/supl/locationsuplfw/terminalinitiationapi/inc/epos_suplterminalipc.h	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/terminalinitiationapi/inc/epos_suplterminalipc.h	Wed Oct 13 15:01:35 2010 +0300
@@ -61,9 +61,8 @@
 	ESuplTerminalSubssnStartPeriodicTriggerWithServer,	
 	ESuplTerminalSubssnNotifyTriggerFired,
 	ESuplTerminalSubssnStopTriggerSession,
-	ESuplTerminalSubssnLocationConversion,
-	ESuplTerminalSubssnCancelLocationConversion,
-    ESuplSubssnCustomCodesBegin         = ESuplCustomIpcOffset
+	
+    ESuplSubssnCustomCodesBegin         = ESuplCustomIpcOffset,
     };
 
 #endif // __EPOS_SUPLTERMINALIPC_H__
--- a/supl/locationsuplfw/terminalinitiationapi/src/epos_suplterminalinternal.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,95 +0,0 @@
-/*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Client-Server communication
-*
-*/
-#include <s32mem.h>
-#include <e32std.h>
-
-#include "epos_suplterminalinternal.h"
-#include "epos_suplterminalipc.h"
-#include "epos_suplterminalerrors.h"
-#include "epos_suplterminalptrholder.h"
-
-//-----------------------------------------------------------------------------
-// RSuplTerminalInternal
-//-----------------------------------------------------------------------------
-
-// -----------------------------------------------------------------------------
-// RSuplTerminalInternal::RSuplTerminalInternal()
-// C++ default constructor can NOT contain any code, that might leave.
-// -----------------------------------------------------------------------------
-//
-EXPORT_C RSuplTerminalInternal::RSuplTerminalInternal()
-  : iConversionRequestIssued( EFalse )
-   	{
-	}
-
-// ---------------------------------------------------------
-// RSuplTerminalInternal::ConvertAreaInfoToCoordinates
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void RSuplTerminalInternal::ConvertAreaInfoToCoordinates( TRequestStatus& aStatus, 
-                                                                   TGeoCellInfo& aGeoCellInfo )
-    {  
-    __ASSERT_ALWAYS(SubSessionHandle(), 
-                    User::Panic(KSuplClientFault, ESuplServerBadHandle));
-    
-    // Currently only SUPL 1.0 supports cell to geo-coordinates conversion.
-    if( iSuplService != ESUPL_1_0 )
-        {
-        TRequestStatus *status = &aStatus; 
-        User::RequestComplete(status,KErrNotSupported); 
-        return;
-        }
-        
-    // Fill the values of data member
-    iGeoCellInfo.iMNC = aGeoCellInfo.iMNC;
-    iGeoCellInfo.iMCC = aGeoCellInfo.iMCC;
-    iGeoCellInfo.iCid = aGeoCellInfo.iCid;
-    iGeoCellInfo.iLac = aGeoCellInfo.iLac;
-    iGeoCellInfo.iConnectionPrompt = aGeoCellInfo.iConnectionPrompt;
-    iGeoCellInfo.iWlanOnly = aGeoCellInfo.iWlanOnly; //OCC
-    iGeoCellInfo.iGeoCellType = aGeoCellInfo.iGeoCellType;
-   
-    iPtrHolder->Ptr(0).Set(
-        reinterpret_cast<TUint8*>(&iGeoCellInfo),
-        sizeof(iGeoCellInfo),sizeof(iGeoCellInfo));
-
-    TIpcArgs args;
-
-    args.Set(0,&iPtrHolder->Ptr(0));
-    iConversionRequestIssued = ETrue;
-    SendReceive(ESuplTerminalSubssnLocationConversion, args, aStatus);  
-    }
-
-// ---------------------------------------------------------
-// RSuplTerminalInternal::CancelLocationConversion
-//
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-EXPORT_C void RSuplTerminalInternal::CancelLocationConversion()
-    {  
-    __ASSERT_ALWAYS(SubSessionHandle(), 
-            User::Panic(KSuplClientFault, ESuplServerBadHandle));   
-    if( iConversionRequestIssued )
-        {
-        iConversionRequestIssued = EFalse; 
-        SendReceive(ESuplTerminalSubssnCancelLocationConversion); 
-        }    
-    }
-// end of file
--- a/supl/locationsuplfw/utilities/src/epos_csupltrace.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/locationsuplfw/utilities/src/epos_csupltrace.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -140,7 +140,6 @@
     const TDesC& aTraceLogFile,
     TRefByValue<const TDesC> aFmt, ... )
     {
-    // coverity[var_decl : FALSE]
     VA_LIST list;
     VA_START( list, aFmt );
 
--- a/supl/supltiapiimplementation/src/lbssupltirequestmanager.cpp	Wed Sep 15 12:40:28 2010 +0300
+++ b/supl/supltiapiimplementation/src/lbssupltirequestmanager.cpp	Wed Oct 13 15:01:35 2010 +0300
@@ -165,12 +165,10 @@
 //
 void CCLbsSuplTiRequestManager::CloseSession()
     {
-    if(iTrace)
-        iTrace->Trace(_L("CCLbsSuplTiRequestManager::CloseSession() start"), KTraceFileName, __LINE__);
+    iTrace->Trace(_L("CCLbsSuplTiRequestManager::CloseSession() start"), KTraceFileName, __LINE__);
     iRequestorCollection.ResetAndDestroy(); //cancels all active requests
     iServer.Close();
-    if(iTrace)
-        iTrace->Trace(_L("CCLbsSuplTiRequestManager::CloseSession() end"), KTraceFileName, __LINE__);
+    iTrace->Trace(_L("CCLbsSuplTiRequestManager::CloseSession() end"), KTraceFileName, __LINE__);
     }
 // -----------------------------------------------------------------------------
 // CCLbsSuplTiRequestManager::FindSessionId