locsrv_plat/supl_settings_api/inc/epos_csuplsettings.h
changeset 0 667063e416a2
child 22 4c4ed41530db
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locsrv_plat/supl_settings_api/inc/epos_csuplsettings.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,963 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies 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 Settings class
+*
+*/
+
+
+#ifndef __EPOS_CSUPLSETTINGS_H__
+#define __EPOS_CSUPLSETTINGS_H__
+
+//  INCLUDES
+#include <e32base.h>
+
+// FORWARD DECLARATIONS
+class CSuplSettingsEngine;
+class MSuplSettingsObserver;
+class MSuplSessionObserver;
+class CSuplSettingsNotifier;
+class CSuplSessionNotifier;
+class CServerParams;
+class CTriggerParams;
+
+// CONSTANTS
+
+// CLASS DECLARATION
+
+/**
+*  This class is used for accessing SUPL settings. The SUPL settings 
+*  contains information such about server properties which includes following:
+*
+*  Server address in string format.  This is an HSLP address used for SUPL connection.
+*  Protocol version in mmnn format where mm indicates minor version nn is major version
+*  The Internet Access Point Name refers to the access point which is used to access the HSLP over the internet.  
+*  This can have maximum size of 100 characters.
+*  Manufacturer name of server indicates the server manufacturer.
+*  Time stamp when last used. 
+*  Time stamp when last tried. 
+*  Network info when the server was last used 
+*  Network info when the server was last used sucessfully
+*  Information on whether server supports emergency support or not
+*  Information on whether server supports TLS or not
+*  Information on whether server supports PSK-TLS or not
+*  Information on whether server enabled or not
+*  Information on whether this server entry needs to be deleted when SIM changes 
+*  Information on whether server can be used in the home network or not 
+*  Information on whether this server entry can be edited or not 
+*  SUPL Usage indicates whether user should be notified before using SUPL.
+*  Fallback indicates whether fallback is allowed or not if SUPL session fails with default server.
+*
+*  From the abover properties, only following fieds can be changed by SUPL settings client:
+*  - SLP address
+*  - IAP / destination.
+*  - SLP enabled / disabled.
+*  - Remove SLP, when SIM change ( yes / no ).
+*  - Usage in home network ( yes / no ).
+*  - Editable ( yes / no).
+*
+*  This is part of @lib epos_suplsettings.lib
+*  @since S60 5.1 
+*/
+
+class CSuplSettings : public CBase
+    {
+    public:  
+                  
+        /**
+         * Enumeration to indicate SUPL usage.  This is used as parameter for 
+         * @ref SetSuplUsage() method. Client has to select one of the values from
+	     * this enumeration when changing SUPL usage.  For example, if client is 
+         * changing SUPL usage to "always ask", it should select ESuplUsageAlwaysAsk. 
+         * If SUPL usage is set to ESuplUsageDisabled,
+         * SUPL cannot be used. 
+         *
+         * Client can get SUPL usage using @ref GetSuplUsage() method.
+         *
+         * @since S60 3.2
+         */
+        enum TSuplSettingsUsage
+            {
+            /** Indicates that user should be asked always before SUPL usage */ 
+            ESuplUsageAlwaysAsk = 0, 
+            /** Indicates that SUPL can be used without asking user */ 
+            ESuplUsageAutomatic, 
+            /** Indicates that SUPL can be used without asking user in the home network and 
+            * user should be notified in the visiting network */ 
+            ESuplUsageHomeAutomatic, 
+            /** Indicates that SUPL usage is disabled */ 
+            ESuplUsageDisabled 
+            };                
+
+
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        *
+        * @since S60 3.1
+        * @returns A new instance of this class.
+        */
+        IMPORT_C static CSuplSettings* NewL();
+
+        /**
+        * Two-phased constructor.
+        *
+        * @since S60 5.1 
+        * @returns A new instance of this class.
+        */
+        IMPORT_C static CSuplSettings* NewLC();
+
+        /**
+        * Destructor.
+        *
+        * @since S60 3.1
+        *
+        */
+        IMPORT_C ~CSuplSettings();
+
+    protected:
+
+        /**
+        * C++ default constructor.
+        *
+        * @since S60 3.1
+        *
+        */
+        CSuplSettings();
+
+        /**
+        * By default EPOC constructor is private.
+        *
+        * @since S60 3.1
+        *
+        */
+        void ConstructL();
+
+    public: // New functions
+
+        /**
+        * This method is used to start listening for SUPL setting changes. To
+        * listen for changes, the client must implement the
+        * @ref MSuplSettingsObserver interface.  Client must allocated memory 
+        * for the observer.
+        *
+        * Listening can be stopped by invoking @ref RemoveObserver().
+        *
+        * @since S60 3.1
+        *
+        *
+        * @param [IN] aObserver The observing object.
+	    * @return one of the following values
+	    * 	- KErrNone if setting observer is successful
+	    * 	- KErrAlreadyExists if observer is already set 
+	    *  
+        */
+        IMPORT_C TInt SetObserverL(
+               MSuplSettingsObserver& aObserver
+        );
+
+        /**
+         * This method is used to stop listening for SUPL setting changes.  After removing observer,
+         * client has to free the memory allocated for the observer.  If this method is invoked without
+         * setting observer using @ref SetObserverL() method, the request is silently ignored.
+         *
+         * @since S60 3.1
+         *
+         */
+        IMPORT_C void RemoveObserver();
+
+        /**
+        * This method is used to start listening for SUPL session changes. To
+        * listen for changes, the client must implement the
+        * @ref MSuplSessionObserver interface.  Client must allocated memory 
+        * for the observer.
+        *
+        * Listening can be stopped by invoking @ref RemoveSessionObserver().
+        *
+        * @since 
+        *
+        *
+        * @param [IN] aObserver The observing object.
+	    * @return one of the following values
+	    * 	- KErrNone if setting observer is successful
+	    * 	- KErrAlreadyExists if observer is already set 
+	    *  
+        */
+        IMPORT_C TInt SetSessionObserverL(
+               MSuplSessionObserver& aObserver
+        );
+
+        /**
+         * This method is used to stop listening for SUPL session changes.  After removing observer,
+         * client has to free the memory allocated for the observer.  If this method is invoked without
+         * setting observer using @ref SetSessionObserverL() method, the request is silently ignored.
+         *
+         * @since 
+         *
+         */
+        IMPORT_C void RemoveSessionObserver(); 
+        
+        
+        /**
+         * This method is invoked to initialize SUPL settings object.  This is 
+         * an asynchronous call and client can cancel this request by invoking 
+         * @ref CancelInitialize().  
+         * During initialization, current IMSI value is obtained from
+	     * the system. Client should invoke this method to re-read the IMSI if the client detects 
+         * an IMSI change.
+         *
+         * Note that if @ref Initialize() method is invoked after started listening to 
+         * SUPL settings changes by invoking @ref SetObserverL(), listening is not stopped.
+         *
+         * @since S60 3.1
+         *
+	     * @param [OUT] aStatus To return result code.  It will hold one of the following values
+         * after completion:
+	     * 	- KErrNone if intialization is successful
+         * 	- KErrGeneral if initialization has failed (initialization can fail if SIM card is not present)
+         * 	- KErrCancel if initialization is cancelled
+         *
+         */ 
+
+        IMPORT_C void Initialize(TRequestStatus& aStatus);
+    
+        /**
+         * This method is invoked to cancel @ref CSuplSettings::Initialize().
+         *
+         * @since S60 3.1
+         *
+         */
+        
+        IMPORT_C void CancelInitialize();
+
+        
+
+	/**
+	 * This method can be used to generate HSLP address from the IMSI
+     * obtained during initialization.  
+     * HSLP address in the FQDN format can have maximum size of
+     * 256 bytes.  Client must allocate enough memory to hold the HSLP address.
+     * HSLP address can be generated from IMSI, for example,
+     * if HSLP address read from SUPL settings is empty or not valid.  
+     * The generated HSLP is in the FQDN format and looks like 
+     * "h-slp.mncXXX.mccYYY.3gppnetwork.org" 
+     * where XXX and YYY values for MNC and MCC extracted from the IMSI.
+     *
+     * This method should be invoked only after 
+     * @ref Initialize() is completed with KErrNone.  
+	 *
+     * @since S60 3.1
+     *
+	 * @param [OUT] aHslpAddress will hold, on successful completion, HSLP address generated 
+     * from IMSI obtained during initialization.  HSLP address can be of size 256 bytes.
+	 * @return one of the following error codes
+	 *	- KErrNone if method completed successfully
+     *	- KErrOverflow if the descriptor is too small to hold the HSLP address 
+	 *	- KErrNotReady if this method is invoked before @ref Initialize or @ref Initialize has not completed with @p KErrNone
+     *	- KErrArgument if argument passed is of length zero
+	 */
+
+	IMPORT_C TInt GenerateHslpAddressFromImsi(TDes& aHslpAddress);
+    
+    /**
+     * This method returns IMSI obtained during initialization of SUPL settings object.  
+     * This method should be invoked after @ref Initialize() is completed with KErrNone.  
+     *
+     * @since S60 3.1
+     *
+     * @param [OUT] aImsi will hold, on successful completion, IMSI obtained during initialization.  
+     * IMSI can have maximum size of 15 characters.
+     * If SUPL Settings library is unable to retrieve the IMSI value during initialization, 
+     * aImsi will be a descriptor of length zero.
+     * @return one of the following error codes returned
+     *  - KErrNone if method completed successfully
+     *  - KErrNotReady if this method is invoked before @ref Initialize or @ref Initialize has not 
+     *  completed with @p KErrNone
+     *  - KErrArgument if argument passed is of length zero 
+     *  - KErrOverflow if the descriptor is too small to hold the IMSI 
+     *
+     */
+
+    IMPORT_C TInt GetImsi(TDes& aImsi);
+
+    /**
+     * This method compares IMSI value currently stored in SUPL settings storage with
+     * IMSI value obtained during initialization. If IMSI value obtained during 
+     * initialization and IMSI value stored in SUPL settings storage are same, this method returns false 
+     * otherwise true is returned.   
+     * This method should be invoked after @ref Initialize() is completed with KErrNone.  
+     * 
+     * @since S60 3.1
+     *
+     * @param [OUT] aChanged will hold, on successful completion, one of the following value
+     *   - ETrue if IMSI obtained during initialization and IMSI value stored in SUPL settings
+     *   are different.
+     *   - EFalse if IMSI obtained during initialization and IMSI value stored in SUPL settings
+     *   are same.
+     * @return one of the following
+     *  - KErrNone if method completed successfully
+     *  - KErrNotReady if this method is invoked before @ref Initialize or @ref Initialize has not completed with @p KErrNone 
+     */
+    
+    IMPORT_C TInt IsImsiChanged(TBool& aChanged);
+    
+    /**
+     * This method is used to retrieve SUPL usage from settings storage.  
+     *
+     * @since S60 3.2
+     *
+     * @param [OUT] aUsage  will hold, upon successful completion, value indicating 
+     * current SUPL usage 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL usage retrieved successfully.  
+     *         - KErrNotFound if the SUPL State is not found in SUPL settings
+     *         - KErrUnknown if retrieving SUPL usage from settings storage failed
+     */
+
+    IMPORT_C TInt GetSuplUsage(TSuplSettingsUsage& aUsage) const;
+
+    /**
+     * This method is used to change SUPL usage.  Using this method, SUPL usage can be 
+     * set to any of the values specified in the enumeration @ref TSuplSettingsUsage 
+     * By default, SUPL usage will be set to always ask. 
+     *
+     * @since S60 3.2
+     *
+     * @param [IN] aUsage Usage to be set for SUPL usage 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL usage is changed successfully.  
+     *         - KErrArgument if aUsage field is not in range
+     *         - KErrUnknown if changing SUPL usage in settings storage has failed
+     */
+    IMPORT_C TInt SetSuplUsage(TSuplSettingsUsage aUsage);
+
+    /**
+     * This method is used to add new server into settings.  It is client's responsibility
+     * to set all the parameters in aParamValues except SLP identification.  After adding
+     * server entry, the server identity generated will be retuned with aSlpId.  The returned
+     * server identity can be used with other methods change any of server parameters. If server 
+     * entry with the same server address already presnt, then this method returns error.
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aParamValues Server parameter values which which the server entry needs to be added 
+     * @param [OUT] aSlpId SLP identification for the new server added 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrAlreadyExists if the server address mentioned in aParamValues already present in settings 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */ 
+    IMPORT_C TInt AddNewServer( 
+            const CServerParams *aParamValues, 
+            TInt64& aSlpId 
+    );
+
+
+    /**
+     * This method is used to change server address parameter in server settings 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be changed 
+     * @param [IN] aServerAddres SUPL Server address 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if address passed is empty or if the SLP ID passed is not valid 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+
+    IMPORT_C TInt SetServerAddress( 
+            const TInt64 aSlpId, 
+            const TDesC& aServerAddress
+    );
+
+    /**
+     * This method is used to retrieve server address parameter from server settings.  Client
+     * has to allocate memory for server address parameter.
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID of server for which the server address needs to be retrieved 
+     * @param [OUT] aServerAddres SUPL Server address 
+     * @return one of the following error codes: 
+     *         - KErrNone if server address is retrieved successfully 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     */
+
+    IMPORT_C TInt GetServerAddress( 
+            TInt64 aSlpId, 
+            TDes& aServerAddress
+    ) const;
+
+    /**
+     * This method is used to change IAP Name in server parameters. IAP name refers to 
+     * the access point which is used to access the HSLP over the internet. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be changed 
+     * @param [IN] aIapName The Internet Access Point Name refers to the access point which is 
+     * used to access the HSLP over the internet.  This can have maximum size of 100 characters. 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if IAP Name is empty or if the SLP ID passed is not valid 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+    IMPORT_C TInt SetIapName( 
+            const TInt64 aSlpId, 
+            const TDesC& aIapName
+    );
+
+    /**
+     * This method is used to retrieve IAP Name in server parameters. IAP name refers to 
+     * the access point which is used to access the HSLP over the internet. It is client's
+     * responsibility to allocate memory for IAP name before invoking this method.
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved 
+     * @param [OUT] aIapName The Internet Access Point Name refers to the access point which is 
+     * used to access the HSLP over the internet.  This can have maximum size of 100 characters. 
+     * @return one of the following error codes: 
+     *         - KErrNone if IAP name is retrieved successfully 
+     *	      - KErrOverflow if the descriptor is too small to hold the IAP name 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     */
+    IMPORT_C TInt GetIapName( 
+            const TInt64 aSlpId, 
+            TDes& aIapName
+    ) const;
+
+
+    /**
+     * This method is used to change parameter which indicates whether server
+     * can be used for SUPL session or not. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be changed 
+     * @param [IN] aEnable Flag to indicate whether server can be enabled or not 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if the SLP ID passed is not valid 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+    IMPORT_C TInt SetServerEnabledFlag(
+            const TInt64 aSlpId, 
+            const TBool aEnable 
+    );
+
+    /**
+     * This method is used to retrieve parameter which indicates whether server
+     * can be used for SUPL session or not. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved 
+     * @param [OUT] aEnable Flag to indicate whether server can be enabled or not 
+     * @return one of the following error codes: 
+     *         - KErrNone if server available flag is retrieved successfully 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     */
+    IMPORT_C TInt GetServerEnabledFlag(
+            const TInt64 aSlpId, 
+            TBool& aEnable 
+    ) const;
+
+    /**
+     * This method is used to change parameter which indicates whether server
+     * details can be removed if SIM is changed. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be changed 
+     * @param [IN] aSimChangeFlag Flag to indicate whether server can be removed or not if there is a SIM change 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if the SLP ID passed is not valid 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+    IMPORT_C TInt SetSimChangeRemoveFlag(
+            const TInt64 aSlpId, 
+            const TBool aSimChangeFlag 
+    );
+
+    /**
+     * This method is used to retrieve parameter which indicates whether server
+     * details can be removed if SIM is changed. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved 
+     * @param [OUT] aSimChangeFlag Flag to indicate whether server can be removed or not if there is a SIM change 
+     * @return one of the following error codes: 
+     *         - KErrNone if SIM change removal flag is retrieved successfully 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     */
+    IMPORT_C TInt GetSimChangeRemoveFlag(
+            const TInt64 aSlpId, 
+            TBool& aSimChangeFlag 
+    ) const;
+
+    /**
+     * This method is used to change parameter which indicates whether server
+     * can be used out side home network or not. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be changed 
+     * @param [IN] aHomeNwFlag Flag to indicate whether server can be used outside home network or not 
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if the SLP ID passed is not valid 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+    IMPORT_C TInt SetUsageInHomwNwFlag(
+            const TInt64 aSlpId, 
+            const TBool aHomeNwFlag 
+    );
+
+    /**
+     * This method is used to retrieve parameter which indicates whether server
+     * can be used out side home network or not. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved 
+     * @param [OUT] aHomeNwFlag Flag to indicate whether server can be used outside home network or not 
+     * @return one of the following error codes: 
+     *         - KErrNone if home network usage flag is retrieved successfully 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     */
+    IMPORT_C TInt GetUsageInHomwNwFlag(
+            const TInt64 aSlpId, 
+            TBool& aHomeNwFlag 
+    ) const;
+
+
+    /**
+     * This method is used to change parameter which indicates whether server
+     * details are editable or not. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved 
+     * @param [IN] aEditFlag Flag to indicate whether server details are editable or not 
+     * @return one of the following error codes: 
+     *         - KErrNone if editable flag is retrieved successfully 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     *         - KErrGeneral if SUPL settings cannot be changed
+     */ 
+    IMPORT_C TInt SetEditableFlag( 
+            const TInt64 aSlpId, 
+            const TBool aEditFlag 
+    ) const;
+
+       /**
+     * This method is used to retrieve parameter which indicates whether server
+     * details are editable or not. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved 
+     * @param [OUT] aEditFlag Flag to indicate whether server details are editable or not 
+     * @return one of the following error codes: 
+     *         - KErrNone if editable flag is retrieved successfully 
+     *         - KErrArgument if the SLP ID passed is not valid 
+     */ 
+    IMPORT_C TInt GetEditableFlag( 
+            const TInt64 aSlpId, 
+            TBool& aEditFlag 
+    ) const;
+
+    /**
+     * This method is used to change all parameters of server in SUPL settings.  The server identity
+     * in @ref CServerParams which is passed as parameter gives information on for which server
+     * entry the values needs to be changed.  If the passed server identity does not exists in
+     * settings, error is returned.  
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aParamValues New value for server parameters. 
+     * @ref CServerParams class
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if the value of any of the pamater is not in range
+     *         - KErrNotFound if the SLP Identity mentioned in aParamValues does not exist in settings 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+
+    IMPORT_C TInt SetAllParameter( 
+            const CServerParams *aParamValues
+    );
+
+    /**
+     * This method is used to change all parameters of default server in SUPL settings.  In this
+     * method server identity of @ref CServerParams passed is not considered and values
+     * of default server is updated except server identity.  If none of the server is set
+     * as default, the new server entry will be added and will be marked as default.  Client can
+     * use @ref GetDefaultSlpId() method to get SLP identity of default server entry.
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aParamValues Parameter for which the value needs to be changed  
+     * @ref CServerParams class
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are changed successfully.  
+     *         - KErrArgument if the value of any of the pamater is not in range
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+
+    IMPORT_C TInt SetDefaultServer( 
+            const CServerParams *aParamValues
+    );
+
+
+    /**
+     * This method is deletes server entry from SUPL settings storage.  
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId Server identity for which the entery needs to be deleted from the SUPL settings storage 
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if entry is deleted sucessfully 
+     *         - KErrNotFound if the specified server identity does not exists in settings storage 
+     *         - KErrGeneral if changing SUPL settings has failed 
+     *
+     */
+    IMPORT_C TInt RemoveServer(const TInt64 aSlpId);
+
+       /**
+        * This method changes the priority of the server to the specified priority.  Here the priority 
+        * refers to the order of server entries in the SUPL settings storage.  If the priority of server
+        * is changed from position N to M and N > M, then the priority of all the server entries from Mth
+        * position will get. If the priority of server is changed from position N to M and
+        * N < M, then the priority of all servers from N+1 whill get changed. Priority is not valid if the
+        * mentioned priority specified beyond the number of number of servers already present in the settings.
+        * For example, if the specified priority is N and number of server entries in the settings in M,
+        * then N is invalid if N > M.
+        *
+        * The parameter aDirection specifies whether the server to be moved up or down.  If this has value
+        * ETrue server will be moved up.  Else server will be moved down.
+        *
+        * @since S60 5.1 
+        *
+        * @param [IN] aSlpId Server identity for which the priority needs to be changed 
+        * @param [IN] aPriority Number of positions to move 
+        * @param [IN] aDirection Whether to increase or decrease priority. 
+        *
+        * @return one of the following error codes: 
+        *         - KErrNone if the priority is changed sucessfully 
+        *         - KErrNotFound if the specified server identity does not exists in settings storage 
+        *         - KErrArgument if the specified priority is not valid (eg. negative)
+        *
+        */
+        IMPORT_C TInt ChangePriority(
+                        TInt64 aSlpId, 
+                        TInt aPriority,
+                        TBool aDirection
+                        );
+
+    /**
+     * This method is used to retrieve all properties of server from SUPL settings storage
+     * based on SLP identification.  
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP ID for which the parameters needs to be changed 
+     * @param [OUT] aParamValues Parameter for which the value needs to be changed  
+     * @ref CServerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are retrieved successfully.  
+     *         - KErrNotFound if the specified server does not exists in the settings
+     *
+     */
+    IMPORT_C TInt GetSlpInfoFromId(
+            const TInt64 aSlpId, 
+            CServerParams *aParamValues
+    ) const;
+
+
+    /**
+     * This method is used to retrieve all properties of server from SUPL settings storage
+     * based on SLP address.  
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aServerAddress SLP address for which the parameters needs to be changed 
+     * @param [OUT] aParamValues Parameter for which the value needs to be changed  
+     * @ref CServerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are retrieved successfully.  
+     *         - KErrNotFound if the specified server does not exists in the settings
+     *
+     */
+    IMPORT_C TInt GetSlpInfoAddress(
+            const TDesC& aServerAddress, 
+            CServerParams *aParamValues
+    ) const;
+
+    /**
+     * This method is used to retrieve all properties of default server from SUPL settings storage.  
+     *
+     * @since S60 5.1 
+     *
+     * @param [OUT] aParamValues Retrieves values from SUPL Settings storage 
+     * @ref CServerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are retrieved successfully.  
+     *         - KErrNotFound if the settings does not have any server entry 
+     *
+     */
+    IMPORT_C TInt GetDefaultServer(
+            CServerParams *aParamValues
+    ) const;
+
+    /**
+     * This method is used to retrieve number of server entries present in SUPL settings. 
+     *
+     * @since S60 5.1 
+     *
+     * @param [OUT] aCount Number of SLP entries 
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if number of SLP entries are calculated 
+     *         - KErrNotFound if the settings does not have any server entry 
+     *
+     */
+    IMPORT_C TInt SlpCount(
+            TInt& aCount 
+    );
+
+    /**
+     * This method is used check whether server entry exists or not based on SLP
+     * identification 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aSlpId SLP identification 
+     *
+     * @return one of the following codes: 
+     *         - ETrue if server entry exists in settings 
+     *         - EFalse if server entry does not exists in settings 
+     *
+     */
+    IMPORT_C TBool IsSlpExists(
+            const TInt64 aSlpId 
+    );
+
+    /**
+     * This method is used check whether server entry exists or not based on SLP
+     * address 
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aServerAddress Server address 
+     *
+     * @return one of the following codes: 
+     *         - ETrue if server entry exists in settings 
+     *         - EFalse if server entry does not exists in settings 
+     *
+     */
+    IMPORT_C TBool IsSlpExists(
+            const TDesC& aServerAddress 
+    );
+
+    /**
+     * This synchronous method is used to retrieve properties of all servers from SUPL settings storage.  
+     * This method retrieves all properties for each server.
+     *
+     * @since S60 5.1 
+     *
+     * @param [OUT] aParamValues Array of retrieved server entries 
+     * @ref CServerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are retrieved successfully.  
+     *         - KErrNotFound if the settings does not have any server entry 
+     *
+     */
+    IMPORT_C TInt GetAllSlp(
+            RPointerArray<CServerParams>& aParamValues
+    ) const;
+
+    /**
+     * This method is used to retrieve properties of all servers from SUPL settings storage.  
+     * This method retrieves all properties for each server.
+     *
+     * @since S60 5.1 
+     *
+     * @param [OUT] aParamValues Array of retrieved server entries 
+     * @ref CServerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if SUPL settings are retrieved successfully.  
+     *         - KErrNotFound if the settings does not have any server entry 
+     *
+     */
+    IMPORT_C TInt GetAllSlp(
+            RPointerArray<CServerParams>& aParamValues,
+            TRequestStatus& aStatus
+    ) const;
+
+
+    /**
+     * This method enables or disables the fall back in SUPL settings.  If the fallback enabled,
+     * if the SUPL session fails with default server or with the sever mentioned then fallback will
+     * happen to next server in the list or to the server address generated from IMSI depending
+     * on the failure type.  If the SUPL session has failed due to connection problem with server,
+     * then fallback will happen to the address generated from IMSI.  In all other failures,
+     * fallback will happen to the next server in the list.
+     *
+     * @since S60 5.1 
+     *
+     * @param [IN] aFallBack Indicates whether the fallback needs to be enabled or disabled 
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if the fallback value changed sucessfully 
+     *         - KErrGeneral if the fallback is enabled when only one server entry is present
+     *         - KErrGeneral if changing SUPL settings has failed 
+     */
+    IMPORT_C TInt SetFallBack(TBool aFallBack);
+
+    /**
+     * This method retrieves the fallback value from SUPL settings storage.
+     *
+     * @since S60 5.1 
+     *
+     * @param [OUT] aFallBack Retrived fallback value 
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if the fallback value retrieved sucessfully 
+     */
+    IMPORT_C TInt GetFallBack(TBool& aFallBack) const;
+
+    /**
+     * This method is used to retrieve properties of all active triggers. 
+     *
+     * @since S60 5.2 
+     *
+     * @param [OUT] aParamValues Array of retrieved trigger parameters.Ownership remains with client. 
+     * @ref CTriggerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if active trigger parameters are retrieved successfully.  
+     *         - KErrNotFound if there are no active triggers 
+     *           otherwise system wide error codes. 
+     *
+     */
+    IMPORT_C TInt GetTriggerParams(
+            RPointerArray<CTriggerParams>& aParamValues
+    ) const;
+    /**
+     * This method is used to retrieve properties of a given session trigger. 
+     *
+     * @since S60 5.2 
+     *
+     * @param [IN] aSessionId Session identifier to get paramater of particular session.
+     * @param [OUT] aParamValues Trigger Parameter.Ownership remains with client. 
+     * @ref CTriggerParams class
+     *
+     * @return one of the following error codes: 
+     *         - KErrNone if active trigger parameters are retrieved successfully.  
+     *         - KErrNotFound if there is no active session with given id 
+     *         - KErrArgument if aParamValues is NULL.
+     *           otherwise system wide error codes. 
+     */
+    
+    IMPORT_C TInt GetTriggerParams( TInt64 aSessionId,
+                                     CTriggerParams*& aParamValues ) const;
+          
+
+    /*
+     * Sets Notification status of particular session
+     *
+     * @since S60 5.2 
+     * @param [IN] aSessionId Session identifier to get/change paramater of particular session 
+     * @param [IN] aTriggerNotificationStaus  Indicates whether notification needs to be shown or
+     * not after every trigger fired
+     *
+     * @return following error codes
+     *      - KErrNone if successful
+     *      - KErrNotFound if session is not found
+     *           otherwise system wide error codes. 
+     */
+	IMPORT_C TInt SetNotificationStatus(
+	            TInt64 aSessionId,
+                TBool aTriggerNotificationStatus
+                );
+	/*
+	 * Cancels given ongoing triggering session
+	 *
+	 * @since S60 5.2 
+	 * @param [IN] aSessionId Session identifier 
+	 *
+	 * @return following error codes
+	 *      - KErrNone if successful
+	 *      - KErrNotFound if session is not found
+	 *           otherwise system wide error codes. 
+	 */
+	IMPORT_C TInt CancelTriggerSession( TInt64 aSessionId );
+	
+	/**
+	 * This method can be used to obtain the default IAP configured.
+	 *
+	 * @since S60 5.2
+	 *
+	 * @param [OUT] aIapName a will hold, on successful completion, the default IAP name that was configured 
+	 * This can have maximum size of 100 characters.
+	 * @return one of the following error codes
+	 *  - KErrNone if method completed successfully
+	 *  - KErrOverflow if the descriptor is too small to hold the HSLP address 
+	 *  - KErrArgument if argument passed is of length zero
+	 */
+
+	IMPORT_C TInt GetDefaultIAPName(TDes& aIapName);
+    
+    private: // New functions
+        
+    private:
+        // By default, prohibit copy constructor
+        CSuplSettings( const CSuplSettings& );
+        // Prohibit assigment operator
+        CSuplSettings& operator= ( const CSuplSettings& );
+
+    protected:    // Data
+//    private:    // Data
+        /** 
+         * Pointer to notifiers, needed to listen to SUPL settings change
+         * events
+         */
+        CSuplSettingsNotifier*        iSettingsNotifier;
+        /*
+         * Pointer to notifiers, needed to listen to SUPL Settings Db Change
+         */
+        CSuplSettingsNotifier*        iSettingsDBChangeNotifier;
+        /**  Pointer to CSuplSettingsEngine to all settings functions */
+        CSuplSettingsEngine*         iSettingsEngine;
+        
+        CSuplSessionNotifier*        iSessionNotifier;
+        /** To store and retun status for Initialize method */
+        TRequestStatus  iStatus;
+        /** To store whether settings are locked or not */
+        TBool iLocked;
+    };
+
+#endif      // __EPOS_CSUPLSETTINGS_H__
+
+// End of File