diff -r 000000000000 -r 667063e416a2 supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsinternal.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/supl/locationsuplfw/settingsapi/inc/epos_csuplsettingsinternal.h Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,690 @@ +/* +* 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_CSUPLSETTINGSINTERNAL_H__ +#define __EPOS_CSUPLSETTINGSINTERNAL_H__ + +// INCLUDES +#include +#include +// FORWARD DECLARATIONS +class CTriggerParams; +class CServerExtensionParams; + +// 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. +* +* When changing SUPL settings, client has to explicitly lock the SUPL settings and +* unlock the SUPL settings immediately after the changes are made. Locking is required to +* avoid multiple clients changing SUPL settings at the same time. Only after +* unlock of SUPL settings, changes are committed to SUPL settings storage. +* +* This is part of @lib epos_suplsettings.lib +* @since S60 9.1TB +*/ + +class CSuplSettingsInternal : public CSuplSettings + { + public: + /** + * Enumeration to indicate which type of network used. + * This is one of the parameters for @ref SetNetInfoLastUse() and + * @ref SetNetInfoLastSucess() methods. + * Client has to select one of the values from this enumeration when changing + * network info in server settings. + * + * @since S60 9.1TB + */ + enum TSuplSettingsNetworkType + { + /** Indicates that network is GSM network */ + EGsmNetwork = 0, + /** Indicates that network is WCDMA network */ + EWcdmaNetwork + }; + /** + * Enumeration to indicate which parameter of server needs to be changed. + * This is one of the parameters for @ref Set() method. Client has to select one of the values from + * this enumeration when changing SUPL settings. For example, if UI application is changing + * SUPL settings, it should select EUserInterface. Client can get information about + * particular parameter from SUPL settings using @ref Get() method with this enumeration. + */ + enum TServerParam + { + /** Indicates SUPL server address parameter in server parameters */ + EServerAddress = 0, + /** Indicates protocol version parameter in server parameters */ + EProtocolVersion, + /** Indicates emergency support parameter in server parameters */ + EEmergencySupport, + /** Indicates TLS parameter in server parameters */ + ETlsEnabled, + /** Indicates PSK-TLS parameter in server parameters */ + EPskTlsUsed, + /** Indicates IAP parameter in server parameters */ + EIap, + /** Indicates server enabled parameter in server parameters */ + EServerEnabled, + /** Indicates manufacturer parameter in server parameters */ + EManufacturer, + /** Indicates SIM change remove parameter in server parameters */ + ESimChangeRemove, + /** Indicates usage in home network parameter in server parameters */ + EUsageInHomeNw, + /** Indicates time stamp when used last time parameter in server parameters */ + ETimeLastUse, + /** Indicates time stamp when used tried parameter in server parameters */ + ETimeLastTried, + /** Indicates network information when used last time parameter in server parameters */ + ENetInfoLastUse, + /** Indicates network information when last succeeded parameter in server parameters */ + ENetInfoLastSucess, + /** Indicates editable parameter in server parameters */ + EEditable + }; + + /** + * Enumeration to indicate which parameter of active session needs to be changed. + */ + enum TSessionParam + { + /** Indicates Trigger notification status parameter */ + ETriggerNotificationStatus = 0, + /** Indicates number of outstanding triggers parameter */ + EOutstandingTriggers = 1 + }; + public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @since S60 3.1 + * @returns A new instance of this class. + */ + IMPORT_C static CSuplSettingsInternal* NewL(); + + /** + * Two-phased constructor. + * + * @since S60 9.1TB + * @returns A new instance of this class. + */ + IMPORT_C static CSuplSettingsInternal* NewLC(); + + /** + * Destructor. + * + * @since S60 3.1 + * + */ + IMPORT_C ~CSuplSettingsInternal(); + + private: + + /** + * C++ default constructor. + * + * @since S60 3.1 + * + */ + CSuplSettingsInternal(); + + /** + * By default EPOC constructor is private. + * + * @since S60 3.1 + * + */ + void ConstructL(); + + public: // New functions + + /** + * 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 + */ + IMPORT_C 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 version parameters are retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C TInt GetVersion( + const TInt64 aSlpId, + TInt& aMajor, + TInt& aMinor + ) 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. + * - KErrNotReady if this method is invoked before invoked before @ref LockSettingsL() + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C 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 emergency support flag is retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C TInt GetEmergencySupportFlag( + const TInt64 aSlpId, + TBool& aEmergencySupportFlag + ) 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 + */ + IMPORT_C TInt SetManufacturerName( + const TInt64 aSlpId, + const TDesC& aManufacturer + ); + + /** + * This method is used to retrieve manufacturer name in server parameters. Manufacturer name + * refers to the service provider who is providing SUPL service. It is client's responsibility + * to allocate memory to aManufacturer parameter before invoking this method. + * + * @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 manugacturer name retrieved successfully + * - KErrOverflow if the descriptor is too small to hold the manufacturer name + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C 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 + */ + IMPORT_C 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 timestamp retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C 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 + */ + IMPORT_C 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 timestamp retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C 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 + */ + IMPORT_C 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 network information retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C 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 + */ + IMPORT_C 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 network information retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C 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 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 + */ + IMPORT_C TInt SetTlsSupportFlag( + const TInt64 aSlpId, + const TBool aTlsSupportFlag + ); + + /** + * 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 TLS support flag is retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C TInt GetTlsFlag( + const TInt64 aSlpId, + TBool& aTlsFlag + ) const; + + + /** + * 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 + */ + IMPORT_C 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 enabled or not. + * @return one of the following error codes: + * - KErrNone if PSK-TLS support flag is retrieved successfully + * - KErrArgument if the SLP ID passed is not valid + */ + IMPORT_C TInt GetPskTlsFlag( + const TInt64 aSlpId, + TBool& aPskTlsFlag + ) const; + + /** + * This method is used to set one server entry as default in SUPL settings. + * + * @since S60 9.1TB + * + * @param [IN] aSlpId SLP ID of server entry which needs to set as default server + * @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 + */ + + IMPORT_C TInt SetTopPriority( + 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 + * + */ + IMPORT_C TInt GetDefaultSlpId( + TInt64& aSlpId + ) const; + + /** + * 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 + * + */ + IMPORT_C TInt RemoveOnSimChange(); + /** + * This Method is used to Set the fallback timer value into the SUPL Settings + * + * @since S60 9.1 TB + * @return one of the following error codes: + * - KErrNone if entries were deleted. + * - KErrGeneral if retrieving settings failed + */ + IMPORT_C TInt GetFallBackTimerValue(TInt& aTimerValue); + + /** + * This Method is used to Get the fallback timer value from the SUPL Settings + * + * @since S60 9.1 TB + * @return one of the following error codes: + * - KErrNone if entries were deleted. + * - KErrGeneral if Setting timer value failed + */ + IMPORT_C TInt SetFallBackTimerValue(const TInt aTimerValue); + + /** + * This method is used to insert Active session record into the SUPL session DB + * @since S60 5.2 + * + * @param [IN] aSessionParamValues The CServerParams pointer containing trigger session params + * to be added to the DB + * @return one of the following error codes: + * - KErrNone if entries were added successfully. + * - KErrArgument if entry to be added is NULL + * otherwise system wide error codes. + */ + IMPORT_C TInt InsertSessionRecord(const CTriggerParams* aSessionParamValues); + + /** + * This method is used to set outstanding triggers attribute for a given 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 one of the following error codes: + * - KErrNone if successful + * - KErrNotFound if there is no active session with given id + * otherwise system wide error codes. + */ + IMPORT_C TInt SetOutstandingTriggers( TInt64 aSessionId,TUint64 aOutstandingTriggers ); + + + /** + * 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 + * @return one of the following error codes: + * - KErrNone if entries were deleted successfully. + * - KErrNotFound if given session id doesnt exist. + * otherwise system wide error codes. + */ + IMPORT_C TInt DeleteSessionRecord(TInt64 aSessionId); + + /** + * This method is used to delete all session records from session table + * @since S60 5.2 + * @return one of the following error codes: + * - KErrNone if entries were deleted successfully. + * otherwise system wide error codes. + */ + IMPORT_C TInt DeleteAllSessionRecords(); + + /** + * This method is used to retrieve extended parameters of given server + * @since S60 5.2 + * @param [IN] aSlpId SLP identifier. + * @param [OUT] aServerExtnParams Extended parameters of default server.Ownership remains with client. + * @return one of the following error codes: + * - KErrNone if parameters were retrieved successfully. + * - KErrNotFound if server doesnt exist. + * - KErrArgument if parameter is NULL. + * otherwise system wide error codes. + */ + IMPORT_C TInt GetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams ) const; + + /** + * This method is used to set extended parameters of a given server. + * @since S60 5.2 + * @param [IN] aSlpId SLP identifier. + * @param [IN] aServerExtnParams Server extended parameters.Ownership remains with client. + * @return one of the following error codes: + * - KErrNone if entries were deleted successfully. + * - KErrNotFound if SLP with given id doesnt exist. + * - KErrArgument if aServerExtnParams is NULL + * otherwise system wide error codes. + */ + IMPORT_C TInt SetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams ); + + private: // New functions + + private: + // By default, prohibit copy constructor + CSuplSettingsInternal( const CSuplSettingsInternal& ); + // Prohibit assigment operator + CSuplSettingsInternal& operator= ( const CSuplSettingsInternal& ); + + private: // Data + }; + +#endif // __EPOS_CSUPLSETTINGSINTERNAL_H__ + +// End of File