diff -r 000000000000 -r 667063e416a2 supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsengine.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsengine.h Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,1308 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* See class description below. +* +*/ + + + +#ifndef __EPOS_CSUPLSETTINGSENGINE_H__ +#define __EPOS_CSUPLSETTINGSENGINE_H__ + +// INCLUDES +#include +#include +#include + +#include "epos_csuplsettings.h" +#include "epos_csuplsettingsinternal.h" +// FORWARD DECLARATIONS +class CRepository; +class CSuplEtelRequest; +class CServerParams; +class CTriggerParams; +class CServerExtensionParams; +class CSuplSettings; +class CSettingsDatabaseHandler; + +// CONSTANTS + +// CLASS DECLARATION + +/** +* This class is used for accessing central repository and to get +* IMSI from ETEL. +* +* This is part of @lib epos_suplsettings.lib +* @since 3.1 +*/ +class CSuplSettingsEngine : public CBase + { + + + public: + enum TEtelReqState + { + EUndefined, + EImsi, + ELoc + }; + public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @returns A new instance of this class. + */ + static CSuplSettingsEngine* NewL(); + + /** + * Destructor. + */ + virtual ~CSuplSettingsEngine(); + + private: + + /** + * C++ default constructor. + */ + CSuplSettingsEngine(); + + /** + * By default EPOC constructor is private. + */ + void ConstructL(); + + public: // New functions + + /** + * This method connects to ETEL, instantiates ETEL request + * active object. This is an asynchronous call. + * It retrieves IMSI value from IMSI. + */ + void Initialize(TRequestStatus& aStatus); + + /** + * This method connects to ETEL. + */ + TInt ConnectToEtelL(); + + /** + * This method cancels initialization request. + */ + void CancelInitialize(); + + /* * + * This method sets HSLP address, IAP Name and changed by field + * in SUPL settings. + + TInt Set( + IN const TDesC& aHslpAddress, + IN const TDesC& aIapName, + IN const TInt aChangedBy + ); + + * + * This method retrieves HSLP address, IAP Name, IMSI vlaue and + * changed by field from SUPL settings. + + TInt Get( + OUT TDes& aHslpAddress, + OUT TDes& aIapName, + OUT TDes& aImsi, + OUT TInt& aChangedBy + ); +*/ + /** + * This method generates HSLP address from the IMSI retrieved from + * ETEL during initialization. + */ + TInt GetHslpAddressFromImsi( + /* OUT */ TDes& aHslpAddr + ); + + /** + * This method creates a concurrent read/write transaction. + * The method leaves a clean-up item to clean-up stack to roll back + * the changes in case of leave. + * Remember to pop the item from the stack before making commit. + */ + TInt LockEngineL(); + + /** + * This method commits a concurrent read/write transaction and pops + * the roll-back clean-up item from the stack + * + * The method handles possible roll back in case of failure. + * + */ + TInt UnLockEngine(TBool aWithCommit); + + /** + * This method retrieves currently active IMSI. Currently active IMSI + * is retrieved during initialization time. + * + * @param aImsi will hold, on successful completion, currently active IMSI + * @return one of the following error codes returned + * - KErrNone if method completed successfully + * - KErrNotReady if this method is called before @ref Initialize + */ + + TInt GetImsi(TDes& aImsi); + + /** + * This method compares IMSI value currently stored in SUPL settings and + * currently active IMSI. If both are same, this method returns false else + * returns true. + * + * @param aChanged will hold, on successful completion, one of the following value + * - ETrue if currently active IMSI and IMSI value stored in SUPL settings + * are different. + * - EFalse if currently active IMSI and IMSI value stored in SUPL settings + * are same. + * @return one of the following + * - KErrNone if method completed successfully + * - KErrNotReady if this method is called before @ref Initialize + */ + TInt IsImsiChanged(TBool& aChanged); + + /** + * This method is used to retrieve SUPL usage from settings storage. + * + * @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 + */ + + TInt GetSuplUsage(TInt& aUsage); + + /** + * This method is used to change SUPL usage. Using this method, SUPL usage can be + * set to always ask or automatic or automatic in home network or disabled. + * By default, SUPL usage will be set to always ask. + * + * Note that this method should be invoked only after settings are locked + * using @ref LockSettingsL() method. After changing SUPL usage, settings + * should be unlocked using @ref UnlockSettings() method. + * + * @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 + * - KErrNotReady if this method is invoked before @ref LockSettingsL() + * - KErrUnknown if changing SUPL usage in settings storage has failed + */ + TInt SetSuplUsage(const TInt aUsage); + /* + * This method is used to check if the initialisation has been done using @ref Initialize() + * + * @return ETrue if init has been done + * EFalse otherwise + */ + TBool IsInitDone(); + /* + * This method is used to check if the initialisation has been successful + * + * @return ETrue if init has been succesful + * EFalse otherwise + */ + TBool IsInitPassed(); + + /** + * 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 which will + * generated automatically. + * + * @since S60 9.1TB + * + * @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. + */ + TInt AddNewServer( + const CServerParams* aParamValues, + TInt64& aSlpId + ); + + + /** + * This method is used to change server address parameter in server settings + * + * @since S60 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if address passed is empty or if the SLP ID passed is not valid + */ + + 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 9.1TB + * + * @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 SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + + TInt GetServerAddress( + TInt64 aSlpId, + TDes& aServerAddress + ) const; + + /** + * This method is used to change protocol version supported by SUPL server. The protocol + * version consists of two parts : Major version and Minor version. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aMajor Major version number. It can takes values from 0 to 255. + * @param [IN] aMinor Minor version number. It can takes values from 0 to 255. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if version parameters are not in range or if the SLP ID passed is not valid + */ + TInt SetVersion( + const TInt64 aSlpId, + const TInt aMajor, + const TInt aMinor + ); + + /** + * This method is used to retrieve protocol version supported by SUPL server. The protocol + * version consists of two parts : Major version and Minor version. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aMajor Major version number. It can takes values from 0 to 255. + * @param [OUT] aMinor Minor version number. It can takes values from 0 to 255. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetVersion( + const TInt64 aSlpId, + TInt& aMajor, + TInt& aMinor + ) 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 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if IAP Name is empty or if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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 SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetIapName( + const TInt64 aSlpId, + TDes& aIapName + ) const; + + /** + * This method is used to change manufacturer in server parameters. Manufacturer name + * refers to the service provider who is providing SUPL service. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aManufacturer Manufacture name. This can have maximum size of 100 characters. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if manufacturer name is empty or if the SLP ID passed is not valid + */ + TInt SetManufacturerName( + const TInt64 aSlpId, + const TDesC& aManufacturer + ); + + /** + * This method is used to retrieve manufacturer name in server parameters. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aManufacturer Manufacture name. This can have maximum size of 100 characters. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetManufacturerName( + const TInt64 aSlpId, + TDes& aManufacturerName + ) const; + + /** + * This method is used to change timestamp when the HSLP was used last time. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aTime Time stamp + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + TInt SetLastUseTime( + const TInt64 aSlpId, + const TTime aTime + ); + + /** + * This method is used to retrieve timestamp when the SLP was used last time. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aTime Time stamp + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetLastUseTime( + const TInt64 aSlpId, + TTime& aTime + ) const; + + /** + * This method is used to change timestamp when the HSLP was used tried last time. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aTime Time stamp + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + TInt SetLastTriedTime( + const TInt64 aSlpId, + const TTime aTime + ); + + /** + * This method is used to retrieve timestamp when the HSLP was used tried last time. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aTime Time stamp + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetLastTriedTime( + const TInt64 aSlpId, + TTime& aTime + ) const; + + + /** + * This method is used to change network information when the SUPL session was last done. + * The SUPL session could be sucessful one or failed one. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aNetType The network type + * @param [IN] aMcc Mobile country code. It can have value from 0 to 999 + * @param [IN] aMnc Mobile network code. It can have value from 0 to 999 + * @param [IN] aCid Cell Identity. It can have value from 0 to 65535 if aNetType is GSM or + * it can have value from 0 to 268435455 if aNetType is WCDMA + * @param [IN] aLac Location Aread Code. This parameter is written to settings only if aNetType is GSM. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid or any of the parameters passed is not in range + */ + TInt SetNetInfoLastUse( + const TInt64 aSlpId, + const CSuplSettingsInternal::TSuplSettingsNetworkType aNetType, + const TInt aMcc, + const TInt aMnc, + const TInt aCid, + const TInt aLac=0 + ); + + /** + * This method is used to retrieve network information when the SUPL session was last done. + * The SUPL session could be sucessful one or failed one. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aNetType The network type + * @param [OUT] aMcc Mobile country code. It can have value from 0 to 999 + * @param [OUT] aMnc Mobile network code. It can have value from 0 to 999 + * @param [OUT] aCid Cell Identity. It can have value from 0 to 65535 if aNetType is GSM or + * it can have value from 0 to 268435455 if aNetType is WCDMA + * @param [OUT] aLac Location Aread Code. This parameter is written to settings only if aNetType is GSM. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetNetInfoLastUse( + const TInt64 aSlpId, + CSuplSettingsInternal::TSuplSettingsNetworkType& aNetType, + TInt& aMcc, + TInt& aMnc, + TInt& aCid, + TInt& aLac + ) const; + + /** + * This method is used to change network information when the SUPL session was last done sucessfully. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aNetType The network type + * @param [IN] aMcc Mobile country code. It can have value from 0 to 999 + * @param [IN] aMnc Mobile network code. It can have value from 0 to 999 + * @param [IN] aCid Cell Identity. It can have value from 0 to 65535 if aNetType is GSM or + * it can have value from 0 to 268435455 if aNetType is WCDMA + * @param [IN] aLac Location Aread Code. This parameter is written to settings only if aNetType is GSM. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid or any of the parameters passed is not in range + */ + TInt SetNetInfoLastSucess( + const TInt64 aSlpId, + const CSuplSettingsInternal::TSuplSettingsNetworkType aNetType, + const TInt aMcc, + const TInt aMnc, + const TInt aCid, + const TInt aLac=0 + ); + + /** + * This method is used to retrieve network information when the SUPL session was last done sucessfully. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aNetType The network type + * @param [OUT] aMcc Mobile country code. It can have value from 0 to 999 + * @param [OUT] aMnc Mobile network code. It can have value from 0 to 999 + * @param [OUT] aCid Cell Identity. It can have value from 0 to 65535 if aNetType is GSM or + * it can have value from 0 to 268435455 if aNetType is WCDMA + * @param [OUT] aLac Location Aread Code. This parameter is written to settings only if aNetType is GSM. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetNetInfoLastSucess( + const TInt64 aSlpId, + CSuplSettingsInternal::TSuplSettingsNetworkType& aNetType, + TInt& aMcc, + TInt& aMnc, + TInt& aCid, + TInt& aLac + ) const; + + + /** + * This method is used to change parameter which indicates whether server + * supports emergency service or not. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aEmergencySupportFlag Flag to indicate whether emergency service is supported 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 + */ + TInt SetEmergencySupportFlag( + const TInt64 aSlpId, + const TBool aEmergencySupportFlag + ); + + /** + * This method is used to retrieve parameter which indicates whether server + * supports emergency service or not. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aEmergencySupportFlag Flag to indicate whether emergency service is supported or not + * @return one of the following error codes: + * - KErrNone if SUPL settings are retrieved successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + TInt GetEmergencySupportFlag( + const TInt64 aSlpId, + TBool& aEmergencySupportFlag + ) const; + + /** + * This method is used to retrieve parameter which indicates whether server + * supports TLS or not. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aTlsFlag Flag to indicate whether TLS is 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 + */ + TInt GetTlsFlag(const TInt64 aSlpId,TBool& aTlsFlag )const; + + /** + * This method is used to change parameter which indicates whether server + * supports TLS or not. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aTlsSupportFlag Flag to indicate whether TLS is needs to be enabled or not. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + TInt SetTlsSupportFlag( + const TInt64 aSlpId, + const TBool aTlsSupportFlag + ); + + /** + * This method is used to change parameter which indicates whether server + * supports PSK-TLS or not. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aPskTlsSupportFlag Flag to indicate whether PSK-TLS is needs to be enabled or not. + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + TInt SetPskTlsSupportFlag( + const TInt64 aSlpId, + const TBool aPskTlsSupportFlag + ); + + /** + * This method is used to retrieve parameter which indicates whether server + * supports PSK-TLS or not. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved + * @param [OUT] aPskTlsFlag Flag to indicate whether PSK-TLS needs to 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 + */ + TInt GetPskTlsFlag( + const TInt64 aSlpId, + TBool& aPskTlsFlag + ) const; + + /** + * This method is used to change parameter which indicates whether server + * can be used for SUPL session or not. + * + * @since S60 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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 SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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 SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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 SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameter needs to be changed + * @param [IN] aEditFlag Flag to indicate whether server details are editable or not + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + TInt SetEditableFlag( + const TInt64 aSlpId, + const TBool aEditFlag + ); + + /** + * This method is used to retrieve parameter which indicates whether server + * details are editable or not. + * + * @since S60 9.1TB + * + * @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 SUPL settings are changed successfully. + * - KErrArgument if the SLP ID passed is not valid + */ + 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 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - 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 + */ + + 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, error is returned. + * + * @since S60 9.1TB + * + * @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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the value of any of the pamater is not in range + * - KErrNotFound if none of the server is set as default + */ + + TInt SetDefaultServer( + const CServerParams* aParamValues + ); + + /** + * This method is used to set one server as default in SUPL settings storage. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID for which the parameters needs to be changed + * @return one of the following error codes: + * - KErrNone if SUPL settings are changed successfully. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrNotFound if the specified server identity does not exists in the settings + */ + + TInt SetAsDefault( + const TInt64 aSlpId + ); + + /** + * This method is used to retrieve default SLP identification. + * + * @since S60 9.1TB + * + * @param [OUT] aSlpId SLP ID of default server + * + * @return one of the following error codes: + * - KErrNone if SUPL settings are retrieved successfully. + * - KErrNotFound if settings does not have any server entries or if none of server is marked as default + * + */ + TInt GetDefaultSlpId( + TInt64& aSlpId + ) const; + + /** + * This method is deletes server entry from SUPL settings storage. + * + * @since S60 9.1TB + * + * @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 + * + */ + TInt RemoveServer(TInt64 aSlpId); + + /** + * This method is changes the priority of the server to the specified priority. + * + * @since S60 9.1TB + * + * + * @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 default server from SUPL settings storage. + * + * @since S60 9.1TB + * + * @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 + * + */ + TInt GetDefaultServer( + CServerParams* aParamValues + ) const; + #if 0 + /** + * This method is used to retrieve properties of all servers from SUPL settings storage. + * + * @since S60 9.1TB + * + * @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 + * + */ + TInt GetAllSlp( + RPointerArray aParamValues, + TRequestStatus& aStatus + ) const; + #endif + /** + * This method enables or disables the fall back in SUPL settings storage. + * + * @since S60 9.1TB + * + * @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 + */ + TInt SetFallBack(TBool aFallBack); + + /** + * This method retrieves the fallback value from SUPL settings storage + * + * @since S60 9.1TB + * + * @param [OUT] aFallBack Retrived fallback value + * + * @return one of the following error codes: + * - KErrNone if the fallback value retrieved sucessfully + */ + TInt GetFallBack(TBool& aFallBack) const; + + /** + * This method gets the fall back timer from SUPL settings storage. + * + * @since S60 9.1TB + * + * @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 + */ + TInt GetFallBackTimer(TInt& aTimerValue) const; + + /** + * This method sets the fall back timer value in SUPL settings storage. + * + * @since S60 9.1TB + * + * @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 + */ + TInt SetFallBackTimer(TBool aTimerValue); + + /** + * This method is used to retrieve all properties of server from SUPL settings storage + * based on SLP identification. + * + * @since S60 9.1TB + * + * @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. + * - KErrArgument if any of the argument passed is not valid + * - KErrNotFound if the specified server does not exists in the settings + * + */ + 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 9.1TB + * + * @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. + * - KErrArgument if any of the argument passed is not valid + * - KErrNotFound if the specified server does not exists in the settings + * + */ + TInt GetSlpInfoAddress( + const TDesC& aServerAddress, + CServerParams* aParamValues + ) const; + + /** + * This method is used to retrieve number of server entries present in SUPL settings. + * + * @since S60 9.1TB + * + * @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 + * + */ + TInt SlpCount( + TInt& aCount + ); + + /** + * This method is used check whether server entry exists or not based on SLP + * identification + * + * @since S60 9.1TB + * + * @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 + * + */ + TBool IsSlpExists( + const TInt64 aSlpId + ); + + /** + * This method is used check whether server entry exists or not based on SLP + * address + * + * @since S60 9.1TB + * + * @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 + * + */ + 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 9.1TB + * + * @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 + * + */ + TInt GetAllSlp( + RPointerArray& aParamValues + ); + + /** + * This method is used to retrieve properties of all servers from SUPL settings storage. + * This method retrieves all properties for each server. + * + * @since S60 9.1TB + * + * @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 + * + */ + TInt GetAllSlp( + RPointerArray& aParamValues, + TRequestStatus& aStatus + ); + /** + * This method is used to delete all servers which have the Sim Change Remove Flag set + * + * @since S60 9.1TB + * + * + * @return one of the following error codes: + * - KErrNone if entries were deleted. + * - KErrGeneral if changing settings failed + * + */ + TInt RemoveOnSimChange(); + + /** + * This method is used to retrieve properties of all active triggers. + * + * @since S60 5.2 + * + * @param [OUT] aParamValues Array of retrieved trigger parameters + * @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. + * + */ + TInt GetTriggerParams( RPointerArray& aParamValues ) const; + + /** + * This method is used to retrieve properties of a given active trigger. + * + * @since S60 5.2 + * + * @param [IN] aSessionId Session identifier to get paramater of particular session + * @param [OUT] aParamValues Parameters for a given session + * @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 + * otherwise system wide error codes. + * + */ + + 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 there is no active session with given id + * otherwise system wide error codes. + */ + TInt SetNotificationStatus( TInt64 aSessionId, + TBool aTriggerNotificationStatus + ); + + /** + * Sets number of outstanding triggers for a particular session + * + * @since S60 5.2 + * @param [IN] aSessionId Session identifier to get/change paramater of particular session + * @param [IN] aOutstandingTriggers Indicates number of outstanding triggers for a given session + * + * @return following error codes + * - KErrNone if successful + * - KErrNotFound if there is no active session with given id + * otherwise system wide error codes. + */ + + TInt SetOutstandingTriggers( TInt64 aSessionId,TUint64 aOutstandingTriggers ); + + /* + * 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. + */ + TInt CancelTriggerSession( TInt64 aSessionId ); + + + /** + * This method is used to insert Active session record into the SUPL session DB + * @since S605.2 + * + * @param [IN] aSessionParamValues The CServerParams pointer containing trigger session params + * to be added to the DB + * - KErrNone if successful + * otherwise system wide error codes. + */ + TInt InsertSessionRecord(const CTriggerParams* aSessionParamValues); + + /** + * This method is used to delete a session record corresponding to the given session ID + * @since S60 5.2 + * @param [OUT] aSessionId The session ID of the session that is to be deleted + * - KErrNone if successful + * - KErrNotFound if session is not found + * otherwise system wide error codes. + */ + TInt DeleteSessionRecord(TInt64 aSessionId); + + /** + * This method is used to delete all session records from session table + * @since S60 5.2 + * - KErrNone if successful + * otherwise system wide error codes. + */ + + TInt DeleteAllSessionRecords(); + + /** + * This method is used to retrieve extended parameters of given server + * @since S60 5.2 + */ + + TInt GetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams ) const; + + /** + * This method is used to set extended parameters of a given server. + * @since S60 5.2 + */ + + TInt SetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams ); + + /** + * This method is used to read the default configured IAP name from the product config + * central repository. + * @since S60 5.2 + */ + TInt GetDefaultIAPName(TDes& aIapName); + + private: // New functions + void HandleNetInfoRequestComplete(TInt aErr, RMobilePhone::TMobilePhoneSubscriberId aImsi); + void HandleMncInfoRequestComplete(TInt aErr, TInt aMcc, TInt aMnc); + TInt GetMncLen(TInt aMcc); + + private: + // By default, prohibit copy constructor + CSuplSettingsEngine( const CSuplSettingsEngine& ); + // Prohibit assigment operator + CSuplSettingsEngine& operator= ( const CSuplSettingsEngine& ); + + private: // Data + TEtelReqState iState; + CRepository* iRepository; + + RMobilePhone::TMobilePhoneSubscriberId iImsi; + RTelServer iTelServer; + RMobilePhone iMobPhone; + RMobilePhone::TMobilePhoneNetworkInfoV1 iNetworkInfo; + RMobilePhone::TMobilePhoneNetworkInfoV1Pckg iNetworkInfoPkg; + RMobilePhone::TMobilePhoneLocationAreaV1 iLocationInfo; + TRequestStatus* iStatus; + TBool iInitDone; + TBool iInitPassed; + TFileName iTsyName; + TInt iMcc; + TInt iMnc; + //pointer to the DB Handler Class that accesses the Settings Db + CSettingsDatabaseHandler* iSettingsDBHandler; + }; + +#endif // __EPOS_CSUPLSETTINGSENGINE_H__ + +// End of File