--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/supl/locationsuplfw/settingsapi/src/epos_csuplsettingsengine.cpp Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,1337 @@
+/*
+* 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: Implementation of CSuplSettingsEngine, in turn calls database handler methods
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <centralrepository.h>
+#include <etel.h>
+#include <etelmm.h>
+#include <commdb.h>
+
+#include "epos_csuplsettings.h"
+#include "epos_csuplsettingsengine.h"
+#include "epos_msuplsettingsobserver.h"
+#include "epos_csuplsettingsinternalcrkeys.h"
+#include "epos_csuplsettingsconstants.h"
+#include "epos_csuplsettingparams.h"
+#include "epos_csuplsettingextensionparams.h"
+#include "epos_csettingsdatabasehandler.h"
+#include "epos_comasuplproductconfigcrkeys.h"
+
+// CONSTANTS
+
+// ==================== LOCAL FUNCTIONS ====================
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CSuplSettingsEngine::CSuplSettingsEngine():
+ iState(EUndefined),
+ iNetworkInfoPkg( iNetworkInfo),
+ iInitDone(EFalse),
+ iInitPassed(EFalse)
+ {
+ }
+
+CSuplSettingsEngine* CSuplSettingsEngine::NewL()
+ {
+ CSuplSettingsEngine* self = new (ELeave) CSuplSettingsEngine();
+
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop(self);
+
+ return self;
+ }
+
+
+// EPOC default constructor can leave.
+void CSuplSettingsEngine::ConstructL()
+ {
+ iRepository = CRepository::NewL(KCRUidSuplSettings);
+ iSettingsDBHandler = CSettingsDatabaseHandler::NewL();
+ iImsi.Copy(_L(""));
+ }
+
+// Destructor
+CSuplSettingsEngine::~CSuplSettingsEngine()
+ {
+ delete iRepository;
+ iRepository = NULL;
+
+ delete iSettingsDBHandler;
+ iSettingsDBHandler = NULL;
+ }
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::LockEngineL()
+//
+//This method creates a concurrent read/write transaction.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::LockEngineL()
+ {
+ // Start transaction and add it to clean-up stack if no error
+ TInt err = iRepository->StartTransaction(CRepository::EReadWriteTransaction);
+ if (err != KErrNone)
+ return err;
+ //iRepository->CleanupRollbackTransactionPushL();
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::UnLockEngine()
+//
+//This method commits a concurrent read/write transaction and pops
+// the roll-back clean-up item from the stack
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::UnLockEngine(TBool aWithCommit)
+ {
+ if (aWithCommit)
+ {
+ // Commit transaction
+ TUint32 changedKeys = 0;
+ //CleanupStack::Pop(); // roll-back cleanup item
+ TInt err = iRepository->CommitTransaction(changedKeys);
+ return err;
+ }
+ else
+ {
+ iRepository->CancelTransaction();
+ return KErrNone;
+ }
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::Initialize()
+//
+// This method connects to ETEL, instantiates ETEL request
+// active object.
+//--------------------------------------------------------------------------------------
+void CSuplSettingsEngine::Initialize(TRequestStatus& aStatus)
+ {
+ iStatus = &aStatus;
+
+ if (IsInitDone() && IsInitPassed())
+ {
+ User::RequestComplete(iStatus, KErrNone);
+ return;
+ }
+
+
+ TInt err2 = KErrNone;
+ TRAPD(err, err2 = ConnectToEtelL());
+
+ if (err != KErrNone || err2 != KErrNone)
+ {
+ User::RequestComplete(iStatus, KErrGeneral);
+ return;
+ }
+
+ iInitDone = EFalse;
+ iInitPassed = EFalse;
+ *iStatus = KRequestPending;
+
+ TRequestStatus imsiStatus, netStatus;
+ TInt etelErr = KErrNone;
+ iState = EImsi; //SMP Change
+ iMobPhone.GetSubscriberId(imsiStatus, iImsi);
+
+ User::WaitForRequest(imsiStatus);
+ if (imsiStatus.Int() != KErrNone)
+ {
+ if (imsiStatus.Int() == KErrCancel)
+ etelErr = KErrCancel;
+ else
+ etelErr = KErrGeneral;
+ iImsi.Copy(_L(""));
+ }
+#if 0
+ else
+ {
+ iMobPhone.GetCurrentNetwork(netStatus, iNetworkInfoPkg, iLocationInfo);
+ iState = ELoc;
+ User::WaitForRequest(netStatus);
+ if (netStatus.Int() != KErrNone)
+ {
+ if (imsiStatus.Int() == KErrCancel)
+ etelErr = KErrCancel;
+ else
+ etelErr = KErrGeneral;
+ }
+ else
+ {
+ TInt MCC=0;
+ TInt64 MNC=0;
+ TLex LexMCC(iNetworkInfo.iCountryCode);
+ TLex LexMNC(iNetworkInfo.iNetworkId);
+ LexMCC.Val(MCC);
+ LexMNC.Val(MNC);
+
+ iMcc = MCC;
+ iMnc = MNC;
+ }
+ }
+#endif
+ if (etelErr == KErrNone)
+ iInitPassed = ETrue;
+
+ iInitDone = ETrue;
+
+ iMobPhone.Close();
+ iTelServer.UnloadPhoneModule(iTsyName);
+ iTelServer.Close();
+ iState = EUndefined;
+ User::RequestComplete(iStatus, etelErr);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::CancelInitialize()
+//
+//This method cancels initialization request.
+//--------------------------------------------------------------------------------------
+void CSuplSettingsEngine::CancelInitialize()
+ {
+ switch(iState)
+ {
+ case EImsi:
+ iMobPhone.CancelAsyncRequest(EMobilePhoneGetSubscriberId);
+ break;
+ case ELoc:
+ iMobPhone.CancelAsyncRequest(EMobilePhoneGetCurrentNetwork);
+ break;
+ default:
+ break;
+ }
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::ConnectToEtelL()
+//
+//This method connects to ETEL.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::ConnectToEtelL()
+ {
+
+ TInt err;
+
+ err = iTelServer.Connect();
+ if(err != KErrNone)
+ return err;
+
+ CCommsDatabase* const db = CCommsDatabase::NewL(EDatabaseTypeUnspecified);
+ CleanupStack::PushL(db);
+
+ TUint32 modemId = 0;
+ db->GetGlobalSettingL(TPtrC(MODEM_PHONE_SERVICES_SMS), modemId);
+ CCommsDbTableView* const view = db->OpenViewMatchingUintLC(TPtrC(MODEM), TPtrC(COMMDB_ID),
+ modemId);
+ err = view->GotoFirstRecord();
+ if(err != KErrNone)
+ {
+ CleanupStack::PopAndDestroy(2,db);
+ return err;
+ }
+
+ view->ReadTextL(TPtrC(MODEM_TSY_NAME), iTsyName);
+ err = iTelServer.LoadPhoneModule(iTsyName);
+
+ if(err != KErrNone)
+ {
+ CleanupStack::PopAndDestroy(2,db);
+ return err;
+ }
+
+ // For the phone information
+ RTelServer::TPhoneInfo info;
+
+ iTelServer.GetPhoneInfo(0, info);
+ err = iMobPhone.Open(iTelServer, info.iName);
+ if(err != KErrNone)
+ {
+ CleanupStack::PopAndDestroy(2,db);
+ return err;
+ }
+
+ CleanupStack::PopAndDestroy(2,db);
+
+ return KErrNone;
+ }
+
+/*TInt CSuplSettingsEngine::Set(const TDesC& aHslpAddress, const TDesC& aIapName,
+ const TInt aChangedBy)
+ {
+ TInt err;
+
+ err = iRepository->Set(KSuplSettingsHSLPAddress, aHslpAddress);
+ if (err != KErrNone)
+ return err;
+
+ err = iRepository->Set(KSuplSettingsIAP, aIapName);
+ if (err != KErrNone)
+ return err;
+
+ err = iRepository->Set(KSuplSettingsChangedBy, aChangedBy);
+ if (err != KErrNone)
+ return err;
+
+ err = iRepository->Set(KSuplSettingsIMSI, iImsi);
+ if (err != KErrNone)
+ return err;
+
+ return KErrNone;
+ }
+
+
+TInt CSuplSettingsEngine::Get(TDes& aHslpAddress, TDes& aIapName,
+ TDes& aImsi, TInt& aChangedBy)
+ {
+ TInt err;
+
+ err = iRepository->Get(KSuplSettingsHSLPAddress, aHslpAddress);
+ if (err != KErrNone)
+ return err;
+ err = iRepository->Get(KSuplSettingsIAP, aIapName);
+ if (err != KErrNone)
+ return err;
+ err = iRepository->Get(KSuplSettingsIMSI, aImsi);
+ if (err != KErrNone)
+ return err;
+ err = iRepository->Get(KSuplSettingsChangedBy, aChangedBy);
+ if (err != KErrNone)
+ return err;
+
+ return KErrNone;
+ }
+*/
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::IsInitDone()
+//
+//This method is used to check if the initialisation has been done using Initialize()
+//--------------------------------------------------------------------------------------
+TBool CSuplSettingsEngine::IsInitDone()
+ {
+ if (iInitDone)
+ return ETrue;
+ else
+ return EFalse;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::IsInitPassed()
+//
+//This method is used to check if the initialisation has been successful
+//--------------------------------------------------------------------------------------
+TBool CSuplSettingsEngine::IsInitPassed()
+ {
+ if (iInitPassed)
+ return ETrue;
+ else
+ return EFalse;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetHslpAddressFromImsi()
+//
+// This method generates HSLP address from the IMSI retrieved from
+// ETEL during initialization.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetHslpAddressFromImsi(TDes& aHslpAddress)
+ {
+ TBuf<3> mcc;
+ TBuf<3> mnc;
+
+ if (iImsi.Length() < KMaxIMSILen)
+ {
+ return KErrUnderflow;
+ }
+ RMobilePhone::TMobilePhoneSubscriberId imsi = iImsi;
+
+ _LIT(KHslp1, "h-slp.mnc");
+ _LIT(KHslp2, ".mcc");
+ _LIT(KHslp3, ".pub.3gppnetwork.org");
+
+ aHslpAddress.Copy(KHslp1);
+
+ TPtrC ptr = imsi.Mid(0,3);
+ mcc.Copy(ptr);
+ TInt mccNum;
+ TLex LexMCC(mcc);
+ LexMCC.Val(mccNum);
+ TInt mncLen = GetMncLen(mccNum);
+ if (iMnc < 100)
+ if (mncLen == 2)
+ {
+ TPtrC ptr2 = imsi.Mid(3,2);
+ mnc.Copy(ptr2);
+ _LIT(KNullChar, "0");
+ aHslpAddress.Append(KNullChar);
+ aHslpAddress.Append(mnc);
+ }
+ else
+ {
+ TPtrC ptr2 = imsi.Mid(3,3);
+ mnc.Copy(ptr2);
+ aHslpAddress.Append(mnc);
+ }
+
+ aHslpAddress.Append(KHslp2);
+ aHslpAddress.Append(mcc);
+ aHslpAddress.Append(KHslp3);
+
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetImsi()
+//
+//This method retrieves currently active IMSI. Currently active IMSI
+// is retrieved during initialization time.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetImsi(TDes& aImsi)
+ {
+ aImsi.Copy(iImsi);
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::IsImsiChanged()
+//
+//This method compares IMSI value currently stored in SUPL settings and
+// currently active IMSI.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::IsImsiChanged(TBool& aChanged)
+ {
+ RBuf settingsImsi, etelImsi;
+
+ TRAPD(err, settingsImsi.CreateL(15));
+ if (err != KErrNone)
+ return KErrGeneral;
+ TRAPD(err2, etelImsi.CreateL(15));
+ if (err2 != KErrNone)
+ return KErrGeneral;
+
+ err = iRepository->Get(KSuplSettingsIMSI, settingsImsi);
+ if (err != KErrNone)
+ {
+ settingsImsi.Close();
+ etelImsi.Close();
+ return err;
+ }
+
+ etelImsi.Copy(iImsi);
+
+ if (etelImsi == settingsImsi)
+ aChanged = EFalse;
+ else
+ aChanged = ETrue;
+
+ settingsImsi.Close();
+ etelImsi.Close();
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetSuplUsage()
+//
+//This method is used to retrieve SUPL usage from settings storage.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetSuplUsage(TInt& aUsage)
+ {
+ TInt err;
+
+ err = iRepository->Get(KSuplSettingsUsage, aUsage);
+ if (err != KErrNone)
+ return err;
+
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetSuplUsage()
+//
+//This method is used to change SUPL usage.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SetSuplUsage(const TInt aUsage)
+ {
+ TInt err;
+
+ err = iRepository->Set(KSuplSettingsUsage, aUsage);
+ if (err != KErrNone)
+ return err;
+
+ return KErrNone;
+ }
+
+/*
+ * GetMccLen
+ * In Symbian, there is no API which gives info on the
+ * length of MNC value in the IMSI. To achieve this
+ * for the known MCC for which the MNC length could be
+ * 3 is obtained from http://en.wikipedia.org/wiki/Mobile_Network_Code
+ * and implemented here.
+ */
+TInt CSuplSettingsEngine::GetMncLen(TInt aMcc)
+ {
+ TInt mncLen;
+ if (aMcc == 302 ||
+ aMcc == 310 ||
+ aMcc == 311 ||
+ aMcc == 316 ||
+ aMcc == 338 ||
+ aMcc == 342 ||
+ aMcc == 344 ||
+ aMcc == 348 ||
+ aMcc == 346 ||
+ aMcc == 356 ||
+ aMcc == 358 ||
+ aMcc == 360 ||
+ aMcc == 364 ||
+ aMcc == 366 ||
+ aMcc == 372 ||
+ aMcc == 467 ||
+ aMcc == 722 ||
+ aMcc == 732 ||
+ aMcc == 736)
+ mncLen = 3;
+ else
+ mncLen = 2;
+
+ return mncLen;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetServerAddress()
+//
+//This method is used to change server address parameter in server settings
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetServerAddress( const TInt64 aSlpId, const TDesC& aServerAddress)
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EServerAddress;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aServerAddress));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetServerAddress()
+ //
+ //This method is used to retrieve server address parameter from server settings.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetServerAddress(const TInt64 aSlpId, TDes& aServerAddress) const
+ {
+ return iSettingsDBHandler->GetServerAddress(aSlpId,aServerAddress);
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetVersion()
+ //
+ //This method is used to change protocol version supported by SUPL server.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetVersion( const TInt64 aSlpId, const TInt aMajor, const TInt aMinor )
+ {
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,aMajor,aMinor));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetVersion()
+ //
+ //This method is used to retrieve protocol version supported by SUPL server.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetVersion( const TInt64 aSlpId, TInt& aMajor, TInt& aMinor ) const
+ {
+ return iSettingsDBHandler->GetVersion(aSlpId,aMajor,aMinor);
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetIapName()
+ //
+ //This method is used to change IAP Name in server parameters.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetIapName( const TInt64 aSlpId, const TDesC& aIapName)
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EIap;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aIapName));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetIapName()
+ //
+ //This method is used to retrieve IAP Name in server parameters.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetIapName( const TInt64 aSlpId, TDes& aIapName) const
+ {
+ return iSettingsDBHandler->GetIAPName(aSlpId,aIapName);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetManufacturerName()
+//
+//This method is used to change manufacturer in server parameters.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetManufacturerName( const TInt64 aSlpId, const TDesC& aManufacturer)
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EManufacturer;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aManufacturer));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetManufacturerName()
+ //
+ //This method is used to retrieve manufacturer name in server parameters.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetManufacturerName( const TInt64 aSlpId, TDes& aManufacturerName) const
+ {
+ return iSettingsDBHandler->GetManufacturer(aSlpId,aManufacturerName);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetLastUseTime()
+//
+//This method is used to change timestamp when the HSLP was used last time.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetLastUseTime( const TInt64 aSlpId, const TTime aTime )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETimeLastUse;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aTime));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetLastUseTime()
+//
+//This method is used to retrieve timestamp when the SLP was used last time.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetLastUseTime( const TInt64 aSlpId, TTime& aTime ) const
+ {
+ return iSettingsDBHandler->GetLastUsedTime(aSlpId,aTime);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetLastTriedTime()
+//
+//This method is used to change timestamp when the HSLP was used tried last time.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetLastTriedTime( const TInt64 aSlpId, const TTime aTime )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETimeLastUse;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aTime));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetLastTriedTime()
+//
+//This method is used to retrieve timestamp when the HSLP was used tried last time.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetLastTriedTime( const TInt64 aSlpId, TTime& aTime ) const
+ {
+ return iSettingsDBHandler->GetLastTriedTime(aSlpId,aTime);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetNetInfoLastUse()
+//
+//This method is used to change network information when the SUPL session was last done.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetNetInfoLastUse( const TInt64 aSlpId, const CSuplSettingsInternal::TSuplSettingsNetworkType aNetType, const TInt aMcc, const TInt aMnc, const TInt aCid, const TInt aLac)
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastUse;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetNetInfoLastUse()
+ //
+ //This method is used to retrieve network information when the SUPL session was last done.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetNetInfoLastUse( const TInt64 aSlpId, CSuplSettingsInternal::TSuplSettingsNetworkType& aNetType, TInt& aMcc, TInt& aMnc, TInt& aCid, TInt& aLac) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastUse;
+ TRAPD(err,iSettingsDBHandler->GetNwInfoPropertiesL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetNetInfoLastSucess()
+//
+//This method is used to change network information when the SUPL session was last done sucessfully.
+//--------------------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SetNetInfoLastSucess( const TInt64 aSlpId, const CSuplSettingsInternal::TSuplSettingsNetworkType aNetType, const TInt aMcc, const TInt aMnc, const TInt aCid, const TInt aLac)
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastSucess;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetNetInfoLastSucess()
+//
+//This method is used to retrieve network information when the SUPL session was last done sucessfully.
+//--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetNetInfoLastSucess( const TInt64 aSlpId, CSuplSettingsInternal::TSuplSettingsNetworkType& aNetType, TInt& aMcc, TInt& aMnc, TInt& aCid, TInt& aLac) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastSucess;
+ TRAPD(err,iSettingsDBHandler->GetNwInfoPropertiesL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetEmergencySupportFlag()
+ //
+ //This method is used to change parameter which indicates whether server
+ // supports emergency service or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetEmergencySupportFlag( const TInt64 aSlpId, const TBool aEmergencySupportFlag )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEmergencySupport;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aEmergencySupportFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetEmergencySupportFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // supports emergency service or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetEmergencySupportFlag( const TInt64 aSlpId, TBool& aEmergencySupportFlag ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEmergencySupport;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aEmergencySupportFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetTlsSupportFlag()
+ //
+ //This method is used to change parameter which indicates whether server
+ // supports TLS or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetTlsSupportFlag( const TInt64 aSlpId, const TBool aTlsSupportFlag )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETlsEnabled;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aTlsSupportFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetPskTlsSupportFlag()
+ //
+ //This method is used to change parameter which indicates whether server
+ // supports PSK-TLS or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetPskTlsSupportFlag(const TInt64 aSlpId,const TBool aPskTlsSupportFlag)
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EPskTlsUsed;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aPskTlsSupportFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetPskTlsFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // supports PSK-TLS or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetPskTlsFlag( const TInt64 aSlpId, TBool& aPskTlsFlag ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EPskTlsUsed;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aPskTlsFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetTlsFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // supports TLS or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetTlsFlag( const TInt64 aSlpId, TBool& aTlsFlag ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETlsEnabled;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aTlsFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetServerEnabledFlag()
+ //
+ //This method is used to change parameter which indicates whether server
+ // can be used for SUPL session or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetServerEnabledFlag( const TInt64 aSlpId, const TBool aEnable )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EServerEnabled;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aEnable));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetServerEnabledFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // can be used for SUPL session or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetServerEnabledFlag( const TInt64 aSlpId, TBool& aEnable ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EServerEnabled;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aEnable));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetSimChangeRemoveFlag()
+ //
+ //This method is used to change parameter which indicates whether server
+ //details can be removed if SIM is changed.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetSimChangeRemoveFlag( const TInt64 aSlpId, const TBool aSimChangeFlag )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ESimChangeRemove;
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aSimChangeFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetSimChangeRemoveFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // details can be removed if SIM is changed.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetSimChangeRemoveFlag( const TInt64 aSlpId, TBool& aSimChangeFlag ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ESimChangeRemove;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aSimChangeFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetUsageInHomwNwFlag()
+ //
+ // This method is used to change parameter which indicates whether server
+ // can be used out side home network or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetUsageInHomwNwFlag( const TInt64 aSlpId, const TBool aHomeNwFlag )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EUsageInHomeNw;
+ TRAPD(err, iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aHomeNwFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetUsageInHomwNwFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // can be used out side home network or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetUsageInHomwNwFlag( const TInt64 aSlpId, TBool& aHomeNwFlag ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EUsageInHomeNw;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aHomeNwFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetEditableFlag()
+ //
+ //This method is used to change parameter which indicates whether server
+ // details are editable or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetEditableFlag( const TInt64 aSlpId, const TBool aEditFlag )
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEditable;
+ TRAPD(err, iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aEditFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetEditableFlag()
+ //
+ //This method is used to retrieve parameter which indicates whether server
+ // details are editable or not.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetEditableFlag( const TInt64 aSlpId, TBool& aEditFlag ) const
+ {
+ CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEditable;
+ TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aEditFlag));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetAsDefault()
+ //
+ //This method is used to set one server as default in SUPL settings storage.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetAsDefault( const TInt64 aSlpId )
+ {
+ TRAPD(err,iSettingsDBHandler->SetSLPAsDefaultL(aSlpId));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetDefaultSlpId()
+ //
+ //This method is used to retrieve default SLP identification.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetDefaultSlpId( TInt64& aSlpId) const
+ {
+ iSettingsDBHandler->GetDefaultSLPId(aSlpId);
+ if(aSlpId == -1)
+ return KErrNotFound;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::RemoveServer()
+ //
+ //This method is deletes server entry from SUPL settings storage.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::RemoveServer(TInt64 aSlpId)
+ {
+ TRAPD(err,iSettingsDBHandler->DeleteSLPRecordL(aSlpId));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::ChangePriority()
+ //
+ // This method is changes the priority of the server to the specified priority.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::ChangePriority(TInt64 aSlpId,TInt aPriority,TBool aDirection)
+ {
+ TRAPD(err,iSettingsDBHandler->ChangePriorityL(aSlpId,aPriority,aDirection));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::AddNewServer()
+ //
+ //This method is used to add new server into settings.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::AddNewServer( const CServerParams* aParamValues, TInt64& aSlpId )
+ {
+ TRAPD(err,iSettingsDBHandler->InsertSLPRecordL(aParamValues,aSlpId));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetAllParameter()
+ //
+ //This method is used to change all parameters of server in SUPL settings.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetAllParameter( const CServerParams* aParamValues)
+ {
+ TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aParamValues));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetDefaultServer()
+ //
+ //This method is used to change all parameters of default server in SUPL settings.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetDefaultServer( const CServerParams* aParamValues)
+ {
+ TRAPD(err,iSettingsDBHandler->UpdateDefaultServerL(aParamValues));
+ if(err != KErrNone)
+ return KErrGeneral;
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetFallBack()
+ //
+ //This method enables or disables the fall back in SUPL settings storage.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetFallBack(TBool aFallBack)
+ {
+ TInt err;
+ TInt count = 0;
+ iSettingsDBHandler->SlpCount(count);
+ if(count <= 1) //single server entry exists
+ return KErrGeneral;
+ err = iRepository->Set(KSuplSettingsFallBack, aFallBack);
+ if (err != KErrNone)
+ return KErrGeneral;
+
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetFallBack()
+ //
+ //This method retrieves the fallback value from SUPL settings storage
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetFallBack(TBool& aFallBack) const
+ {
+ TInt err;
+
+ err = iRepository->Get(KSuplSettingsFallBack, aFallBack);
+ if (err != KErrNone)
+ return KErrGeneral;
+
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::SetFallBackTimer()
+ //
+ //This method sets the fall back timer in SUPL settings storage.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::SetFallBackTimer(TInt aTimerValue)
+ {
+ TInt err;
+
+ err = iRepository->Set(KSuplSettingsFallBackTimer, aTimerValue);
+ if (err != KErrNone)
+ return KErrGeneral;
+
+ return KErrNone;
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetFallBackTimer()
+ //
+ //This method gets the fall back timer from SUPL settings storage.
+ //--------------------------------------------------------------------------------------
+ TInt CSuplSettingsEngine::GetFallBackTimer(TInt& aTimerValue) const
+ {
+ TInt err;
+
+ err = iRepository->Get(KSuplSettingsFallBackTimer, aTimerValue);
+ if (err != KErrNone)
+ return KErrGeneral;
+
+ return KErrNone;
+
+ }
+
+ //-------------------------------------------------------------------------------------
+ //CSuplSettingsEngine::GetSlpInfoFromId()
+ //
+ //This method is used to retrieve all properties of server from SUPL settings storage
+ // based on SLP identification.
+ //--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetSlpInfoFromId(const TInt64 aSlpId,CServerParams* aParamValues) const
+ {
+ return iSettingsDBHandler->GetSlpInfoFromId(aSlpId,aParamValues);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetSlpInfoAddress()
+//
+//This method is used to retrieve all properties of server from SUPL settings storage
+//based on SLP address.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetSlpInfoAddress(const TDesC& aServerAddress,CServerParams* aParamValues) const
+ {
+ return iSettingsDBHandler->GetSlpInfoFromAddress(aServerAddress,aParamValues);
+ }
+
+//-------------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetDefaultServer()
+//
+//This method is used to retrieve all properties of default server from SUPL settings storage.
+//-------------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetDefaultServer(CServerParams* aParamValues) const
+ {
+ return iSettingsDBHandler->GetDefaultServer(aParamValues);
+ }
+
+//---------------------------------------------------------------------------------
+//CSuplSettingsEngine::SlpCount()
+//
+//This method is used to retrieve number of server entries present in SUPL settings.
+//-----------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SlpCount(TInt& aCount)
+ {
+ return iSettingsDBHandler->SlpCount(aCount);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::IsSlpExists()
+//
+//This method is used check whether server entry exists or not based on SLP
+// identification
+//--------------------------------------------------------------------------------------
+TBool CSuplSettingsEngine::IsSlpExists(const TInt64 aSlpId)
+ {
+ return iSettingsDBHandler->IsSlpExists(aSlpId);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::IsSlpExists()
+//
+//This method is used check whether server entry exists or not based on SLP
+// address
+//--------------------------------------------------------------------------------------
+TBool CSuplSettingsEngine::IsSlpExists(const TDesC& aServerAddress)
+ {
+ return iSettingsDBHandler->IsSlpExists(aServerAddress);
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetAllSlp()
+//
+//This synchronous method is used to retrieve properties of all servers from
+//SUPL settings storage.
+//-------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetAllSlp(RPointerArray<CServerParams>& aParamValues)
+ {
+
+ TRAPD(err,iSettingsDBHandler->GetAllSLPL(aParamValues));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetAllSlp()
+//
+//This method is used to retrieve properties of all servers from SUPL settings storage.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetAllSlp(RPointerArray<CServerParams>& aParamValues,TRequestStatus& aStatus)
+ {
+ TRAPD(err,iSettingsDBHandler->GetAllSLPL(aParamValues,aStatus));
+ if(err != KErrNone)
+ return err;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::RemoveOnSimChange()
+//
+//This method is used to delete all servers which have the Sim Change Remove Flag set
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::RemoveOnSimChange()
+ {
+ TRAPD(err,iSettingsDBHandler->RemoveOnSimChangeL());
+ if(err != KErrNone)
+ return KErrGeneral;
+ return KErrNone;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetTriggerParams()
+//
+//This method is used to retrieve properties of all active triggers.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetTriggerParams(RPointerArray<CTriggerParams>& aParamValues) const
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->GetAllSessionsL(aParamValues));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetTriggerParams()
+//
+//This method is used to retrieve properties of a given active trigger.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetTriggerParams(TInt64 aSessionId,
+ CTriggerParams*& aParamValues) const
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->GetSessionL(aSessionId,aParamValues));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetNotificationStatus()
+//
+//Sets Notification status of particular session
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SetNotificationStatus( TInt64 aSessionId,
+ TBool aTriggerNotificationStatus )
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->UpdateSessionRecordL(aSessionId,CSuplSettingsInternal::ETriggerNotificationStatus,aTriggerNotificationStatus));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetOutstandingTriggers()
+//
+//Sets number of outstanding triggers for a particular session
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SetOutstandingTriggers( TInt64 aSessionId,
+ TUint64 aOutstandingTriggers )
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->UpdateSessionRecordL(aSessionId,CSuplSettingsInternal::EOutstandingTriggers,aOutstandingTriggers));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::CancelTriggerSession()
+//
+//Cancels ongoing triggering session
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::CancelTriggerSession( TInt64 aSessionId )
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->DeleteSessionRecordL(aSessionId));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::InsertSessionRecord()
+//
+//This method is used to insert Active session record into the SUPL session DB
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::InsertSessionRecord(const CTriggerParams* aSessionParamValues)
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->InsertSessionRecordL(aSessionParamValues));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::DeleteSessionRecord()
+//
+//This method is used to delete a session record corresponding to the given session ID
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::DeleteSessionRecord(TInt64 aSessionId)
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->DeleteSessionRecordL(aSessionId));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::DeleteAllSessionRecords()
+//
+//This method is used to delete all session records from session table
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::DeleteAllSessionRecords()
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->DeleteAllSessionRecordsL());
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::GetServerExtensionParams()
+//
+//This method is used to retrieve extended parameters of given server
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams ) const
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->GetServerExtensionParamsL( aSlpId,aServerExtnParams ));
+ return err;
+ }
+
+//-------------------------------------------------------------------------------------
+//CSuplSettingsEngine::SetServerExtensionParams()
+//
+//This method is used to set extended parameters of a given server.
+//--------------------------------------------------------------------------------------
+TInt CSuplSettingsEngine::SetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams )
+ {
+ TInt err = KErrNone;
+ TRAP(err,iSettingsDBHandler->UpdateServerExtensionParamsL( aSlpId,aServerExtnParams ));
+ return err;
+ }
+//---------------------------------------------------------------------
+// CSuplSettings::GetDefaultIAPName()
+//
+// Returns the default configured IAP name
+//---------------------------------------------------------------------
+TInt CSuplSettingsEngine::GetDefaultIAPName(TDes& aIapName)
+ {
+ CRepository* productConfigRepository = NULL;
+ aIapName.Copy(KNullDesC);
+ TRAPD(err,productConfigRepository = CRepository::NewL(KCRUidProductConfig));
+ if(err == KErrNone)
+ {
+ err = productConfigRepository->Get(KDefaultAutoGenIAP, aIapName);
+ delete productConfigRepository;
+ }
+ return err;
+ }
+//End of File