supl/locationsuplfw/settingsapi/src/epos_csuplsettingsengine.cpp
changeset 0 667063e416a2
child 22 4c4ed41530db
equal deleted inserted replaced
-1:000000000000 0:667063e416a2
       
     1 /*
       
     2 * Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Implementation of CSuplSettingsEngine, in turn calls database handler methods
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 // INCLUDE FILES
       
    21 #include <centralrepository.h>
       
    22 #include <etel.h>
       
    23 #include <etelmm.h>
       
    24 #include <commdb.h>
       
    25 
       
    26 #include "epos_csuplsettings.h"
       
    27 #include "epos_csuplsettingsengine.h"
       
    28 #include "epos_msuplsettingsobserver.h"
       
    29 #include "epos_csuplsettingsinternalcrkeys.h"
       
    30 #include "epos_csuplsettingsconstants.h"
       
    31 #include "epos_csuplsettingparams.h"
       
    32 #include "epos_csuplsettingextensionparams.h"
       
    33 #include "epos_csettingsdatabasehandler.h"
       
    34 #include "epos_comasuplproductconfigcrkeys.h"
       
    35 
       
    36 // CONSTANTS
       
    37 
       
    38 // ==================== LOCAL FUNCTIONS ====================
       
    39 
       
    40 
       
    41 // ================= MEMBER FUNCTIONS =======================
       
    42 
       
    43 // C++ default constructor can NOT contain any code, that
       
    44 // might leave.
       
    45 //
       
    46 CSuplSettingsEngine::CSuplSettingsEngine():
       
    47     iState(EUndefined),
       
    48     iNetworkInfoPkg( iNetworkInfo),
       
    49     iInitDone(EFalse),
       
    50     iInitPassed(EFalse)
       
    51     {
       
    52     }
       
    53 
       
    54 CSuplSettingsEngine* CSuplSettingsEngine::NewL()
       
    55     {
       
    56     CSuplSettingsEngine* self = new (ELeave) CSuplSettingsEngine();
       
    57 
       
    58     CleanupStack::PushL( self );
       
    59     self->ConstructL();
       
    60     CleanupStack::Pop(self);
       
    61 
       
    62     return self;
       
    63     }
       
    64 
       
    65 
       
    66 // EPOC default constructor can leave.
       
    67 void CSuplSettingsEngine::ConstructL()
       
    68     {
       
    69     iRepository = CRepository::NewL(KCRUidSuplSettings);
       
    70     iSettingsDBHandler = CSettingsDatabaseHandler::NewL();
       
    71     iImsi.Copy(_L(""));
       
    72     }
       
    73 
       
    74 // Destructor
       
    75 CSuplSettingsEngine::~CSuplSettingsEngine()
       
    76     {
       
    77     delete iRepository;
       
    78     iRepository = NULL;
       
    79     
       
    80     delete iSettingsDBHandler;
       
    81     iSettingsDBHandler = NULL;
       
    82     }
       
    83 //-------------------------------------------------------------------------------------
       
    84 //CSuplSettingsEngine::LockEngineL()
       
    85 //
       
    86 //This method creates a concurrent read/write transaction.
       
    87 //--------------------------------------------------------------------------------------
       
    88 TInt CSuplSettingsEngine::LockEngineL()
       
    89     {
       
    90     // Start transaction and add it to clean-up stack if no error
       
    91     TInt err = iRepository->StartTransaction(CRepository::EReadWriteTransaction);
       
    92     if (err != KErrNone)
       
    93         return err;
       
    94     //iRepository->CleanupRollbackTransactionPushL();
       
    95     return err;
       
    96     }
       
    97 
       
    98 //-------------------------------------------------------------------------------------
       
    99 //CSuplSettingsEngine::UnLockEngine()
       
   100 //
       
   101 //This method commits a concurrent read/write transaction and pops
       
   102 // the roll-back clean-up item from the stack
       
   103 //--------------------------------------------------------------------------------------
       
   104 TInt CSuplSettingsEngine::UnLockEngine(TBool aWithCommit)
       
   105     {
       
   106     if (aWithCommit)            
       
   107         {            
       
   108         // Commit transaction
       
   109         TUint32 changedKeys = 0;
       
   110         //CleanupStack::Pop(); // roll-back cleanup item
       
   111         TInt err = iRepository->CommitTransaction(changedKeys);
       
   112         return err; 
       
   113         }
       
   114     else
       
   115         {            
       
   116         iRepository->CancelTransaction();
       
   117         return KErrNone;
       
   118         }
       
   119     }
       
   120 
       
   121 //-------------------------------------------------------------------------------------
       
   122 //CSuplSettingsEngine::Initialize()
       
   123 //
       
   124 // This method connects to ETEL, instantiates ETEL request
       
   125 // active object.
       
   126 //--------------------------------------------------------------------------------------
       
   127 void CSuplSettingsEngine::Initialize(TRequestStatus& aStatus)
       
   128     {
       
   129         iStatus = &aStatus;
       
   130 
       
   131         if (IsInitDone() && IsInitPassed())
       
   132         {
       
   133         	User::RequestComplete(iStatus, KErrNone);
       
   134         	return;
       
   135         }
       
   136             
       
   137 
       
   138         TInt err2 = KErrNone;
       
   139         TRAPD(err, err2 = ConnectToEtelL()); 
       
   140 
       
   141         if (err != KErrNone || err2 != KErrNone)            
       
   142         {
       
   143         	User::RequestComplete(iStatus, KErrGeneral);
       
   144         	return;
       
   145         }
       
   146 
       
   147         iInitDone = EFalse; 
       
   148         iInitPassed = EFalse; 
       
   149         *iStatus = KRequestPending;
       
   150 
       
   151         TRequestStatus imsiStatus, netStatus;
       
   152         TInt etelErr = KErrNone;
       
   153         iState = EImsi;  //SMP Change
       
   154         iMobPhone.GetSubscriberId(imsiStatus, iImsi);
       
   155        
       
   156         User::WaitForRequest(imsiStatus);
       
   157         if (imsiStatus.Int() != KErrNone)
       
   158         {
       
   159             if (imsiStatus.Int() == KErrCancel)
       
   160                 etelErr = KErrCancel;
       
   161             else            
       
   162                 etelErr = KErrGeneral;
       
   163             iImsi.Copy(_L(""));
       
   164         }                
       
   165 #if 0
       
   166         else
       
   167         {                
       
   168             iMobPhone.GetCurrentNetwork(netStatus, iNetworkInfoPkg, iLocationInfo);
       
   169             iState = ELoc;
       
   170             User::WaitForRequest(netStatus);
       
   171             if (netStatus.Int() != KErrNone)
       
   172             {                
       
   173                 if (imsiStatus.Int() == KErrCancel)
       
   174                     etelErr = KErrCancel;
       
   175                 else            
       
   176                     etelErr = KErrGeneral;
       
   177             }
       
   178             else
       
   179             {
       
   180                 TInt    MCC=0;
       
   181                 TInt64  MNC=0;
       
   182                 TLex LexMCC(iNetworkInfo.iCountryCode);
       
   183                 TLex LexMNC(iNetworkInfo.iNetworkId);
       
   184                 LexMCC.Val(MCC);
       
   185                 LexMNC.Val(MNC);
       
   186 
       
   187                 iMcc = MCC;
       
   188                 iMnc = MNC;
       
   189             }                    
       
   190         }            
       
   191 #endif
       
   192         if (etelErr == KErrNone)
       
   193             iInitPassed = ETrue;    
       
   194 
       
   195         iInitDone = ETrue; 
       
   196 
       
   197         iMobPhone.Close(); 
       
   198 	    iTelServer.UnloadPhoneModule(iTsyName);
       
   199 	    iTelServer.Close();
       
   200 	    iState = EUndefined;
       
   201         User::RequestComplete(iStatus, etelErr);
       
   202     }        
       
   203 
       
   204 //-------------------------------------------------------------------------------------
       
   205 //CSuplSettingsEngine::CancelInitialize()
       
   206 //
       
   207 //This method cancels initialization request. 
       
   208 //--------------------------------------------------------------------------------------
       
   209 void CSuplSettingsEngine::CancelInitialize()
       
   210     {
       
   211         switch(iState)
       
   212         {
       
   213             case EImsi:
       
   214                 iMobPhone.CancelAsyncRequest(EMobilePhoneGetSubscriberId);
       
   215                 break;
       
   216             case ELoc:
       
   217                 iMobPhone.CancelAsyncRequest(EMobilePhoneGetCurrentNetwork);                
       
   218                 break;
       
   219             default:
       
   220                 break;
       
   221         }
       
   222     }            
       
   223 
       
   224 //-------------------------------------------------------------------------------------
       
   225 //CSuplSettingsEngine::ConnectToEtelL()
       
   226 //
       
   227 //This method connects to ETEL.
       
   228 //--------------------------------------------------------------------------------------
       
   229 TInt CSuplSettingsEngine::ConnectToEtelL()
       
   230     {
       
   231    
       
   232     TInt err;            
       
   233     
       
   234     err = iTelServer.Connect();
       
   235     if(err != KErrNone)
       
   236 		return err;
       
   237 
       
   238 	CCommsDatabase* const db = CCommsDatabase::NewL(EDatabaseTypeUnspecified); 
       
   239 	CleanupStack::PushL(db); 
       
   240 
       
   241 	TUint32 modemId = 0; 
       
   242 	db->GetGlobalSettingL(TPtrC(MODEM_PHONE_SERVICES_SMS), modemId); 
       
   243 	CCommsDbTableView* const view = db->OpenViewMatchingUintLC(TPtrC(MODEM), TPtrC(COMMDB_ID), 
       
   244 																modemId); 
       
   245 	err = view->GotoFirstRecord(); 
       
   246 	if(err != KErrNone)
       
   247 	{
       
   248 		CleanupStack::PopAndDestroy(2,db);			
       
   249 		return err;	
       
   250 	}
       
   251 		
       
   252 	view->ReadTextL(TPtrC(MODEM_TSY_NAME), iTsyName); 
       
   253 	err = iTelServer.LoadPhoneModule(iTsyName);
       
   254 	
       
   255 	if(err != KErrNone)
       
   256 	{
       
   257 		CleanupStack::PopAndDestroy(2,db);		
       
   258 		return err;
       
   259 	}
       
   260 
       
   261 	// For the phone information
       
   262 	RTelServer::TPhoneInfo info;
       
   263 
       
   264 	iTelServer.GetPhoneInfo(0, info); 
       
   265 	err = iMobPhone.Open(iTelServer, info.iName);
       
   266 	if(err != KErrNone)
       
   267 	{
       
   268 		CleanupStack::PopAndDestroy(2,db);		
       
   269 		return err;
       
   270 	}
       
   271 	
       
   272 	CleanupStack::PopAndDestroy(2,db);
       
   273 
       
   274 	return KErrNone; 
       
   275     }        
       
   276 
       
   277 /*TInt CSuplSettingsEngine::Set(const TDesC& aHslpAddress, const TDesC&  aIapName, 
       
   278                 const TInt aChangedBy)
       
   279     {
       
   280     TInt err;
       
   281         
       
   282     err = iRepository->Set(KSuplSettingsHSLPAddress, aHslpAddress);
       
   283     if (err != KErrNone)
       
   284         return err;
       
   285         
       
   286     err = iRepository->Set(KSuplSettingsIAP, aIapName);
       
   287     if (err != KErrNone)
       
   288         return err;           
       
   289         
       
   290     err = iRepository->Set(KSuplSettingsChangedBy, aChangedBy);
       
   291     if (err != KErrNone)
       
   292         return err;            
       
   293         
       
   294     err = iRepository->Set(KSuplSettingsIMSI, iImsi);
       
   295     if (err != KErrNone)
       
   296         return err;
       
   297         
       
   298     return KErrNone;
       
   299     } 
       
   300 
       
   301 
       
   302 TInt CSuplSettingsEngine::Get(TDes& aHslpAddress, TDes&  aIapName, 
       
   303                 TDes& aImsi, TInt& aChangedBy)
       
   304     {    
       
   305     TInt err;            
       
   306 
       
   307     err = iRepository->Get(KSuplSettingsHSLPAddress, aHslpAddress);
       
   308     if (err != KErrNone)
       
   309         return err;            
       
   310     err = iRepository->Get(KSuplSettingsIAP, aIapName);
       
   311     if (err != KErrNone)
       
   312         return err;            
       
   313     err = iRepository->Get(KSuplSettingsIMSI, aImsi);
       
   314     if (err != KErrNone)
       
   315         return err;            
       
   316     err = iRepository->Get(KSuplSettingsChangedBy, aChangedBy);
       
   317     if (err != KErrNone)
       
   318         return err;            
       
   319 
       
   320     return KErrNone;
       
   321     }
       
   322 */
       
   323 //-------------------------------------------------------------------------------------
       
   324 //CSuplSettingsEngine::IsInitDone()
       
   325 //
       
   326 //This method is used to check if the initialisation has been done  using Initialize()
       
   327 //--------------------------------------------------------------------------------------
       
   328 TBool CSuplSettingsEngine::IsInitDone()
       
   329     {
       
   330     if (iInitDone)
       
   331         return ETrue;
       
   332     else
       
   333         return EFalse;    
       
   334     }        
       
   335 
       
   336 //-------------------------------------------------------------------------------------
       
   337 //CSuplSettingsEngine::IsInitPassed()
       
   338 //
       
   339 //This method is used to check if the initialisation has been successful
       
   340 //--------------------------------------------------------------------------------------
       
   341 TBool CSuplSettingsEngine::IsInitPassed()
       
   342     {
       
   343     if (iInitPassed)
       
   344         return ETrue;
       
   345     else
       
   346         return EFalse;    
       
   347     }        
       
   348 
       
   349 //-------------------------------------------------------------------------------------
       
   350 //CSuplSettingsEngine::GetHslpAddressFromImsi()
       
   351 //
       
   352 // This method generates HSLP address from the IMSI retrieved from
       
   353 // ETEL during initialization.
       
   354 //--------------------------------------------------------------------------------------
       
   355 TInt CSuplSettingsEngine::GetHslpAddressFromImsi(TDes& aHslpAddress)
       
   356     {
       
   357     TBuf<3> mcc;
       
   358     TBuf<3> mnc;
       
   359     
       
   360      if (iImsi.Length()  < KMaxIMSILen)
       
   361     {
       
   362     	return KErrUnderflow;
       
   363     }
       
   364     RMobilePhone::TMobilePhoneSubscriberId imsi = iImsi;
       
   365 	
       
   366 	_LIT(KHslp1, "h-slp.mnc");
       
   367 	_LIT(KHslp2, ".mcc");
       
   368     _LIT(KHslp3, ".pub.3gppnetwork.org");
       
   369 
       
   370 	aHslpAddress.Copy(KHslp1);
       
   371 		
       
   372     TPtrC ptr = imsi.Mid(0,3);
       
   373     mcc.Copy(ptr);
       
   374     TInt mccNum;
       
   375     TLex LexMCC(mcc);
       
   376     LexMCC.Val(mccNum);
       
   377     TInt mncLen = GetMncLen(mccNum);
       
   378     if (iMnc < 100)
       
   379     if (mncLen == 2)
       
   380     {
       
   381     TPtrC ptr2 = imsi.Mid(3,2);
       
   382     mnc.Copy(ptr2);
       
   383     _LIT(KNullChar, "0");
       
   384     aHslpAddress.Append(KNullChar);
       
   385     aHslpAddress.Append(mnc);
       
   386     }
       
   387     else
       
   388     {
       
   389     TPtrC ptr2 = imsi.Mid(3,3);
       
   390     mnc.Copy(ptr2);
       
   391     aHslpAddress.Append(mnc);
       
   392     }
       
   393 	
       
   394     aHslpAddress.Append(KHslp2);
       
   395     aHslpAddress.Append(mcc);
       
   396     aHslpAddress.Append(KHslp3);
       
   397     
       
   398 	return KErrNone;
       
   399     }        
       
   400 
       
   401 //-------------------------------------------------------------------------------------
       
   402 //CSuplSettingsEngine::GetImsi()
       
   403 //
       
   404 //This method retrieves currently active IMSI.  Currently active IMSI
       
   405 // is retrieved during initialization time.
       
   406 //--------------------------------------------------------------------------------------
       
   407 TInt CSuplSettingsEngine::GetImsi(TDes& aImsi)
       
   408     {
       
   409     aImsi.Copy(iImsi);
       
   410     return KErrNone;
       
   411     }    
       
   412 
       
   413 //-------------------------------------------------------------------------------------
       
   414 //CSuplSettingsEngine::IsImsiChanged()
       
   415 //
       
   416 //This method compares IMSI value currently stored in SUPL settings and
       
   417 // currently active IMSI.
       
   418 //--------------------------------------------------------------------------------------
       
   419 TInt CSuplSettingsEngine::IsImsiChanged(TBool& aChanged)
       
   420     {
       
   421     RBuf settingsImsi, etelImsi;
       
   422 
       
   423 	TRAPD(err, settingsImsi.CreateL(15));
       
   424     if (err != KErrNone)
       
   425         return KErrGeneral;            
       
   426 	TRAPD(err2, etelImsi.CreateL(15));
       
   427     if (err2 != KErrNone)
       
   428         return KErrGeneral;            
       
   429     
       
   430     err = iRepository->Get(KSuplSettingsIMSI, settingsImsi);
       
   431     if (err != KErrNone)
       
   432         {            
       
   433         settingsImsi.Close();
       
   434         etelImsi.Close();
       
   435         return err;
       
   436         }
       
   437 
       
   438     etelImsi.Copy(iImsi);
       
   439 
       
   440     if (etelImsi == settingsImsi)
       
   441         aChanged = EFalse;
       
   442     else
       
   443         aChanged = ETrue;    
       
   444     
       
   445     settingsImsi.Close();
       
   446     etelImsi.Close();
       
   447     return KErrNone;
       
   448     }    
       
   449 
       
   450 //-------------------------------------------------------------------------------------
       
   451 //CSuplSettingsEngine::GetSuplUsage()
       
   452 //
       
   453 //This method is used to retrieve SUPL usage from settings storage.
       
   454 //--------------------------------------------------------------------------------------
       
   455 TInt CSuplSettingsEngine::GetSuplUsage(TInt& aUsage)
       
   456     {
       
   457     TInt err;            
       
   458 
       
   459     err = iRepository->Get(KSuplSettingsUsage, aUsage);
       
   460     if (err != KErrNone)
       
   461         return err;            
       
   462 
       
   463     return KErrNone;
       
   464     }        
       
   465 
       
   466 //-------------------------------------------------------------------------------------
       
   467 //CSuplSettingsEngine::SetSuplUsage()
       
   468 //
       
   469 //This method is used to change SUPL usage.
       
   470 //--------------------------------------------------------------------------------------
       
   471 TInt CSuplSettingsEngine::SetSuplUsage(const TInt aUsage) 
       
   472     {
       
   473     TInt err;
       
   474 
       
   475     err = iRepository->Set(KSuplSettingsUsage, aUsage);
       
   476     if (err != KErrNone)
       
   477         return err;            
       
   478         
       
   479     return KErrNone;
       
   480     }            
       
   481 
       
   482 /*
       
   483  * GetMccLen
       
   484  * In Symbian, there is no API which gives info on the
       
   485  * length of MNC value in the IMSI.  To achieve this
       
   486  * for the known MCC for which the MNC length could be
       
   487  * 3 is obtained from http://en.wikipedia.org/wiki/Mobile_Network_Code
       
   488  * and implemented here.
       
   489  */
       
   490 TInt CSuplSettingsEngine::GetMncLen(TInt aMcc)
       
   491     {
       
   492     TInt mncLen;
       
   493     if (aMcc == 302 || 
       
   494         aMcc == 310 || 
       
   495         aMcc == 311 || 
       
   496         aMcc == 316 || 
       
   497         aMcc == 338 || 
       
   498         aMcc == 342 || 
       
   499         aMcc == 344 || 
       
   500         aMcc == 348 || 
       
   501         aMcc == 346 || 
       
   502         aMcc == 356 || 
       
   503         aMcc == 358 || 
       
   504         aMcc == 360 || 
       
   505         aMcc == 364 || 
       
   506         aMcc == 366 || 
       
   507         aMcc == 372 || 
       
   508         aMcc == 467 || 
       
   509         aMcc == 722 || 
       
   510         aMcc == 732 || 
       
   511         aMcc == 736)
       
   512         mncLen = 3;
       
   513     else
       
   514         mncLen = 2;    
       
   515     
       
   516     return mncLen;
       
   517     }     
       
   518 
       
   519 //-------------------------------------------------------------------------------------
       
   520 //CSuplSettingsEngine::SetServerAddress()
       
   521 //
       
   522 //This method is used to change server address parameter in server settings
       
   523 //--------------------------------------------------------------------------------------
       
   524  TInt CSuplSettingsEngine::SetServerAddress( const TInt64 aSlpId, const TDesC& aServerAddress)
       
   525      {
       
   526      CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EServerAddress;
       
   527      TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aServerAddress));
       
   528      if(err != KErrNone)
       
   529          return err;
       
   530      return KErrNone;
       
   531 
       
   532      }    
       
   533  
       
   534  //-------------------------------------------------------------------------------------
       
   535  //CSuplSettingsEngine::GetServerAddress()
       
   536  //
       
   537  //This method is used to retrieve server address parameter from server settings.
       
   538  //--------------------------------------------------------------------------------------
       
   539  TInt CSuplSettingsEngine::GetServerAddress(const TInt64 aSlpId, TDes& aServerAddress) const
       
   540     {
       
   541     return iSettingsDBHandler->GetServerAddress(aSlpId,aServerAddress);
       
   542     }       
       
   543  
       
   544  //-------------------------------------------------------------------------------------
       
   545  //CSuplSettingsEngine::SetVersion()
       
   546  //
       
   547  //This method is used to change protocol version supported by SUPL server.
       
   548  //--------------------------------------------------------------------------------------
       
   549  TInt CSuplSettingsEngine::SetVersion( const TInt64 aSlpId, const TInt aMajor, const TInt aMinor )
       
   550      {
       
   551      TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,aMajor,aMinor));
       
   552      if(err != KErrNone)
       
   553          return err;
       
   554      return KErrNone;          
       
   555      }   
       
   556  
       
   557  //-------------------------------------------------------------------------------------
       
   558  //CSuplSettingsEngine::GetVersion()
       
   559  //
       
   560  //This method is used to retrieve protocol version supported by SUPL server. 
       
   561  //--------------------------------------------------------------------------------------
       
   562  TInt CSuplSettingsEngine::GetVersion( const TInt64 aSlpId, TInt& aMajor, TInt& aMinor ) const
       
   563     {
       
   564     return iSettingsDBHandler->GetVersion(aSlpId,aMajor,aMinor);
       
   565     }  
       
   566  
       
   567  //-------------------------------------------------------------------------------------
       
   568  //CSuplSettingsEngine::SetIapName()
       
   569  //
       
   570  //This method is used to change IAP Name in server parameters. 
       
   571  //--------------------------------------------------------------------------------------
       
   572  TInt CSuplSettingsEngine::SetIapName( const TInt64 aSlpId, const TDesC& aIapName)
       
   573      {
       
   574      CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EIap;
       
   575      TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aIapName));
       
   576      if(err != KErrNone)
       
   577          return err;
       
   578      return KErrNone;
       
   579      }  
       
   580  
       
   581  //-------------------------------------------------------------------------------------
       
   582  //CSuplSettingsEngine::GetIapName()
       
   583  //
       
   584  //This method is used to retrieve IAP Name in server parameters.
       
   585  //--------------------------------------------------------------------------------------
       
   586  TInt CSuplSettingsEngine::GetIapName( const TInt64 aSlpId, TDes& aIapName) const
       
   587     {
       
   588     return iSettingsDBHandler->GetIAPName(aSlpId,aIapName);    
       
   589     }      
       
   590  
       
   591 //-------------------------------------------------------------------------------------
       
   592 //CSuplSettingsEngine::SetManufacturerName()
       
   593 //
       
   594 //This method is used to change manufacturer in server parameters.
       
   595 //--------------------------------------------------------------------------------------
       
   596  TInt CSuplSettingsEngine::SetManufacturerName( const TInt64 aSlpId, const TDesC& aManufacturer)
       
   597     {
       
   598     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EManufacturer;
       
   599     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aManufacturer));
       
   600     if(err != KErrNone)
       
   601             return err;
       
   602         return KErrNone;
       
   603     }     
       
   604  
       
   605  //-------------------------------------------------------------------------------------
       
   606  //CSuplSettingsEngine::GetManufacturerName()
       
   607  //
       
   608  //This method is used to retrieve manufacturer name in server parameters. 
       
   609  //--------------------------------------------------------------------------------------
       
   610  TInt CSuplSettingsEngine::GetManufacturerName( const TInt64 aSlpId, TDes& aManufacturerName) const
       
   611     {
       
   612     return iSettingsDBHandler->GetManufacturer(aSlpId,aManufacturerName);   
       
   613     }    
       
   614  
       
   615 //-------------------------------------------------------------------------------------
       
   616 //CSuplSettingsEngine::SetLastUseTime()
       
   617 //
       
   618 //This method is used to change timestamp when the HSLP was used last time.
       
   619 //--------------------------------------------------------------------------------------
       
   620  TInt CSuplSettingsEngine::SetLastUseTime( const TInt64 aSlpId, const TTime aTime )
       
   621     {
       
   622     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETimeLastUse;
       
   623     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aTime));
       
   624     if(err != KErrNone)
       
   625             return err;
       
   626         return KErrNone;
       
   627     }     
       
   628  
       
   629 //-------------------------------------------------------------------------------------
       
   630 //CSuplSettingsEngine::GetLastUseTime()
       
   631 //
       
   632 //This method is used to retrieve timestamp when the SLP was used last time. 
       
   633 //--------------------------------------------------------------------------------------
       
   634  TInt CSuplSettingsEngine::GetLastUseTime( const TInt64 aSlpId, TTime& aTime ) const
       
   635     {
       
   636     return iSettingsDBHandler->GetLastUsedTime(aSlpId,aTime);
       
   637     }     
       
   638  
       
   639 //-------------------------------------------------------------------------------------
       
   640 //CSuplSettingsEngine::SetLastTriedTime()
       
   641 //
       
   642 //This method is used to change timestamp when the HSLP was used tried last time.
       
   643 //--------------------------------------------------------------------------------------
       
   644  TInt CSuplSettingsEngine::SetLastTriedTime( const TInt64 aSlpId, const TTime aTime )
       
   645     {
       
   646     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETimeLastUse;
       
   647     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aTime));    
       
   648     if(err != KErrNone)
       
   649             return err;
       
   650         return KErrNone;
       
   651     }    
       
   652  
       
   653 //-------------------------------------------------------------------------------------
       
   654 //CSuplSettingsEngine::GetLastTriedTime()
       
   655 //
       
   656 //This method is used to retrieve timestamp when the HSLP was used tried last time.
       
   657 //--------------------------------------------------------------------------------------
       
   658  TInt CSuplSettingsEngine::GetLastTriedTime( const TInt64 aSlpId, TTime& aTime ) const
       
   659     {
       
   660     return iSettingsDBHandler->GetLastTriedTime(aSlpId,aTime);               
       
   661     }    
       
   662  
       
   663 //-------------------------------------------------------------------------------------
       
   664 //CSuplSettingsEngine::SetNetInfoLastUse()
       
   665 //
       
   666 //This method is used to change network information when the SUPL session was last done.
       
   667 //--------------------------------------------------------------------------------------       
       
   668  TInt CSuplSettingsEngine::SetNetInfoLastUse( const TInt64 aSlpId, const CSuplSettingsInternal::TSuplSettingsNetworkType aNetType, const TInt aMcc, const TInt aMnc, const TInt aCid, const TInt aLac)
       
   669     {
       
   670     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastUse;
       
   671     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
       
   672     if(err != KErrNone)
       
   673         return err;
       
   674     return KErrNone;
       
   675     }            
       
   676 
       
   677  //-------------------------------------------------------------------------------------
       
   678  //CSuplSettingsEngine::GetNetInfoLastUse()
       
   679  //
       
   680  //This method is used to retrieve network information when the SUPL session was last done.
       
   681  //--------------------------------------------------------------------------------------
       
   682  TInt CSuplSettingsEngine::GetNetInfoLastUse( const TInt64 aSlpId, CSuplSettingsInternal::TSuplSettingsNetworkType& aNetType, TInt& aMcc, TInt& aMnc, TInt& aCid, TInt& aLac) const
       
   683      {
       
   684      CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastUse;
       
   685      TRAPD(err,iSettingsDBHandler->GetNwInfoPropertiesL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
       
   686      if(err != KErrNone)
       
   687          return err;
       
   688      return KErrNone;        
       
   689      }  
       
   690  
       
   691 //-------------------------------------------------------------------------------------------------
       
   692 //CSuplSettingsEngine::SetNetInfoLastSucess()
       
   693 //
       
   694 //This method is used to change network information when the SUPL session was last done sucessfully.
       
   695 //--------------------------------------------------------------------------------------------------
       
   696 TInt CSuplSettingsEngine::SetNetInfoLastSucess( const TInt64 aSlpId, const CSuplSettingsInternal::TSuplSettingsNetworkType aNetType, const TInt aMcc, const TInt aMnc, const TInt aCid, const TInt aLac)
       
   697     {
       
   698     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastSucess;
       
   699     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
       
   700     if(err != KErrNone)
       
   701         return err;
       
   702     return KErrNone;
       
   703     }   
       
   704 
       
   705 //-------------------------------------------------------------------------------------
       
   706 //CSuplSettingsEngine::GetNetInfoLastSucess()
       
   707 //
       
   708 //This method is used to retrieve network information when the SUPL session was last done sucessfully.
       
   709 //--------------------------------------------------------------------------------------
       
   710  TInt CSuplSettingsEngine::GetNetInfoLastSucess( const TInt64 aSlpId, CSuplSettingsInternal::TSuplSettingsNetworkType& aNetType, TInt& aMcc, TInt& aMnc, TInt& aCid, TInt& aLac) const        
       
   711      {
       
   712      CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ENetInfoLastSucess;
       
   713      TRAPD(err,iSettingsDBHandler->GetNwInfoPropertiesL(aSlpId,parameter,aNetType,aMcc,aMnc,aCid,aLac));
       
   714      if(err != KErrNone)
       
   715          return err;
       
   716      return KErrNone;
       
   717      
       
   718      } 
       
   719  
       
   720  //-------------------------------------------------------------------------------------
       
   721  //CSuplSettingsEngine::SetEmergencySupportFlag()
       
   722  //
       
   723  //This method is used to change parameter which indicates whether server
       
   724  // supports emergency service or not. 
       
   725  //--------------------------------------------------------------------------------------
       
   726  TInt CSuplSettingsEngine::SetEmergencySupportFlag( const TInt64 aSlpId, const TBool aEmergencySupportFlag )
       
   727     {
       
   728     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEmergencySupport;
       
   729     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aEmergencySupportFlag));
       
   730     if(err != KErrNone)
       
   731             return err;
       
   732         return KErrNone;
       
   733     }  
       
   734  
       
   735  //-------------------------------------------------------------------------------------
       
   736  //CSuplSettingsEngine::GetEmergencySupportFlag()
       
   737  //
       
   738  //This method is used to retrieve parameter which indicates whether server
       
   739  // supports emergency service or not.
       
   740  //--------------------------------------------------------------------------------------
       
   741  TInt CSuplSettingsEngine::GetEmergencySupportFlag( const TInt64 aSlpId, TBool& aEmergencySupportFlag ) const
       
   742     {
       
   743     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEmergencySupport;
       
   744     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aEmergencySupportFlag));
       
   745     if(err != KErrNone)
       
   746             return err;
       
   747         return KErrNone;
       
   748     }  
       
   749  
       
   750  //-------------------------------------------------------------------------------------
       
   751  //CSuplSettingsEngine::SetTlsSupportFlag()
       
   752  //
       
   753  //This method is used to change parameter which indicates whether server
       
   754  // supports TLS or not.
       
   755  //--------------------------------------------------------------------------------------
       
   756  TInt CSuplSettingsEngine::SetTlsSupportFlag( const TInt64 aSlpId, const TBool aTlsSupportFlag )
       
   757     {
       
   758     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETlsEnabled;
       
   759     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aTlsSupportFlag)); 
       
   760     if(err != KErrNone)
       
   761             return err;
       
   762         return KErrNone;
       
   763     }
       
   764  
       
   765  //-------------------------------------------------------------------------------------
       
   766  //CSuplSettingsEngine::SetPskTlsSupportFlag()
       
   767  //
       
   768  //This method is used to change parameter which indicates whether server
       
   769  // supports PSK-TLS or not.
       
   770  //--------------------------------------------------------------------------------------
       
   771  TInt CSuplSettingsEngine::SetPskTlsSupportFlag(const TInt64 aSlpId,const TBool aPskTlsSupportFlag)
       
   772      {
       
   773      CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EPskTlsUsed;
       
   774      TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aPskTlsSupportFlag)); 
       
   775      if(err != KErrNone)
       
   776          return err;
       
   777      return KErrNone;
       
   778      }
       
   779  
       
   780  //-------------------------------------------------------------------------------------
       
   781  //CSuplSettingsEngine::GetPskTlsFlag()
       
   782  //
       
   783  //This method is used to retrieve parameter which indicates whether server
       
   784  // supports PSK-TLS or not. 
       
   785  //--------------------------------------------------------------------------------------
       
   786  TInt CSuplSettingsEngine::GetPskTlsFlag( const TInt64 aSlpId, TBool& aPskTlsFlag ) const
       
   787     {
       
   788     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EPskTlsUsed;
       
   789     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aPskTlsFlag));
       
   790     if(err != KErrNone)
       
   791             return err;
       
   792         return KErrNone;
       
   793            
       
   794     }     
       
   795  
       
   796  //-------------------------------------------------------------------------------------
       
   797  //CSuplSettingsEngine::GetTlsFlag()
       
   798  //
       
   799  //This method is used to retrieve parameter which indicates whether server
       
   800  // supports TLS or not.
       
   801  //--------------------------------------------------------------------------------------
       
   802  TInt CSuplSettingsEngine::GetTlsFlag( const TInt64 aSlpId, TBool& aTlsFlag ) const
       
   803     {
       
   804     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ETlsEnabled;
       
   805     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aTlsFlag));
       
   806     if(err != KErrNone)
       
   807             return err;
       
   808         return KErrNone;
       
   809            
       
   810     }
       
   811  
       
   812  //-------------------------------------------------------------------------------------
       
   813  //CSuplSettingsEngine::SetServerEnabledFlag()
       
   814  //
       
   815  //This method is used to change parameter which indicates whether server
       
   816  // can be used for SUPL session or not. 
       
   817  //--------------------------------------------------------------------------------------
       
   818  TInt CSuplSettingsEngine::SetServerEnabledFlag( const TInt64 aSlpId, const TBool aEnable )
       
   819     {
       
   820     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EServerEnabled;
       
   821     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aEnable));
       
   822     if(err != KErrNone)
       
   823             return err;
       
   824         return KErrNone;
       
   825     }   
       
   826  
       
   827  //-------------------------------------------------------------------------------------
       
   828  //CSuplSettingsEngine::GetServerEnabledFlag()
       
   829  //
       
   830  //This method is used to retrieve parameter which indicates whether server
       
   831  // can be used for SUPL session or not. 
       
   832  //--------------------------------------------------------------------------------------       
       
   833  TInt CSuplSettingsEngine::GetServerEnabledFlag( const TInt64 aSlpId, TBool& aEnable ) const
       
   834     {
       
   835     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EServerEnabled;
       
   836     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aEnable));
       
   837     if(err != KErrNone)
       
   838             return err;
       
   839         return KErrNone;
       
   840            
       
   841     }     
       
   842  
       
   843  //-------------------------------------------------------------------------------------
       
   844  //CSuplSettingsEngine::SetSimChangeRemoveFlag()
       
   845  //
       
   846  //This method is used to change parameter which indicates whether server
       
   847  //details can be removed if SIM is changed.
       
   848  //--------------------------------------------------------------------------------------
       
   849  TInt CSuplSettingsEngine::SetSimChangeRemoveFlag( const TInt64 aSlpId, const TBool aSimChangeFlag )
       
   850     {
       
   851     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ESimChangeRemove;
       
   852     TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aSimChangeFlag)); 
       
   853     if(err != KErrNone)
       
   854             return err;
       
   855         return KErrNone;
       
   856     }   
       
   857  
       
   858  //-------------------------------------------------------------------------------------
       
   859  //CSuplSettingsEngine::GetSimChangeRemoveFlag()
       
   860  //
       
   861  //This method is used to retrieve parameter which indicates whether server
       
   862  // details can be removed if SIM is changed. 
       
   863  //--------------------------------------------------------------------------------------
       
   864  TInt CSuplSettingsEngine::GetSimChangeRemoveFlag( const TInt64 aSlpId, TBool& aSimChangeFlag ) const        
       
   865     {
       
   866     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::ESimChangeRemove;
       
   867     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aSimChangeFlag)); 
       
   868     if(err != KErrNone)
       
   869             return err;
       
   870         return KErrNone;
       
   871     }  
       
   872  
       
   873  //-------------------------------------------------------------------------------------
       
   874  //CSuplSettingsEngine::SetUsageInHomwNwFlag()
       
   875  //
       
   876  // This method is used to change parameter which indicates whether server
       
   877  // can be used out side home network or not.
       
   878  //--------------------------------------------------------------------------------------
       
   879  TInt CSuplSettingsEngine::SetUsageInHomwNwFlag( const TInt64 aSlpId, const TBool aHomeNwFlag )
       
   880     {
       
   881     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EUsageInHomeNw;
       
   882     TRAPD(err, iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aHomeNwFlag));  
       
   883     if(err != KErrNone)
       
   884             return err;
       
   885         return KErrNone;
       
   886     }     
       
   887  
       
   888  //-------------------------------------------------------------------------------------
       
   889  //CSuplSettingsEngine::GetUsageInHomwNwFlag()
       
   890  //
       
   891  //This method is used to retrieve parameter which indicates whether server
       
   892  // can be used out side home network or not.
       
   893  //--------------------------------------------------------------------------------------
       
   894  TInt CSuplSettingsEngine::GetUsageInHomwNwFlag( const TInt64 aSlpId, TBool& aHomeNwFlag ) const
       
   895     {
       
   896     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EUsageInHomeNw;
       
   897     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aHomeNwFlag));
       
   898     if(err != KErrNone)
       
   899             return err;
       
   900         return KErrNone;
       
   901     }    
       
   902  
       
   903  //-------------------------------------------------------------------------------------
       
   904  //CSuplSettingsEngine::SetEditableFlag()
       
   905  //
       
   906  //This method is used to change parameter which indicates whether server
       
   907  // details are editable or not. 
       
   908  //--------------------------------------------------------------------------------------
       
   909  TInt CSuplSettingsEngine::SetEditableFlag( const TInt64 aSlpId, const TBool aEditFlag )
       
   910     {
       
   911     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEditable;
       
   912     TRAPD(err, iSettingsDBHandler->UpdateSLPRecordL(aSlpId,parameter,aEditFlag));  
       
   913     if(err != KErrNone)
       
   914             return err;
       
   915         return KErrNone;
       
   916     }  
       
   917  
       
   918  //-------------------------------------------------------------------------------------
       
   919  //CSuplSettingsEngine::GetEditableFlag()
       
   920  //
       
   921  //This method is used to retrieve parameter which indicates whether server
       
   922  // details are editable or not.
       
   923  //--------------------------------------------------------------------------------------
       
   924  TInt CSuplSettingsEngine::GetEditableFlag( const TInt64 aSlpId, TBool& aEditFlag ) const        
       
   925     {
       
   926     CSuplSettingsInternal::TServerParam parameter = CSuplSettingsInternal::EEditable;
       
   927     TRAPD(err,iSettingsDBHandler->GetOtherPropertiesL(aSlpId,parameter,aEditFlag));
       
   928     if(err != KErrNone)
       
   929             return err;
       
   930         return KErrNone;
       
   931     }  
       
   932  
       
   933  //-------------------------------------------------------------------------------------
       
   934  //CSuplSettingsEngine::SetAsDefault()
       
   935  //
       
   936  //This method is used to set one server as default in SUPL settings storage.
       
   937  //--------------------------------------------------------------------------------------
       
   938  TInt CSuplSettingsEngine::SetAsDefault( const TInt64 aSlpId ) 
       
   939     {
       
   940     TRAPD(err,iSettingsDBHandler->SetSLPAsDefaultL(aSlpId));
       
   941     if(err != KErrNone)
       
   942         return err;
       
   943     return KErrNone;
       
   944     }
       
   945  
       
   946  //-------------------------------------------------------------------------------------
       
   947  //CSuplSettingsEngine::GetDefaultSlpId()
       
   948  //
       
   949  //This method is used to retrieve default SLP identification.
       
   950  //--------------------------------------------------------------------------------------
       
   951  TInt CSuplSettingsEngine::GetDefaultSlpId( TInt64& aSlpId) const
       
   952      {
       
   953      iSettingsDBHandler->GetDefaultSLPId(aSlpId);
       
   954      if(aSlpId == -1)
       
   955          return KErrNotFound;
       
   956      return KErrNone;             
       
   957      }
       
   958  
       
   959  //-------------------------------------------------------------------------------------
       
   960  //CSuplSettingsEngine::RemoveServer()
       
   961  //
       
   962  //This method is deletes server entry from SUPL settings storage.
       
   963  //--------------------------------------------------------------------------------------
       
   964  TInt CSuplSettingsEngine::RemoveServer(TInt64 aSlpId)
       
   965      {
       
   966      TRAPD(err,iSettingsDBHandler->DeleteSLPRecordL(aSlpId));
       
   967      if(err != KErrNone)
       
   968          return err;
       
   969      return KErrNone;
       
   970      }
       
   971  
       
   972  //-------------------------------------------------------------------------------------
       
   973  //CSuplSettingsEngine::ChangePriority()
       
   974  //
       
   975  // This method is changes the priority of the server to the specified priority.
       
   976  //--------------------------------------------------------------------------------------
       
   977  TInt CSuplSettingsEngine::ChangePriority(TInt64 aSlpId,TInt aPriority,TBool aDirection)
       
   978      {
       
   979      TRAPD(err,iSettingsDBHandler->ChangePriorityL(aSlpId,aPriority,aDirection));
       
   980      if(err != KErrNone)
       
   981          return err;
       
   982      return KErrNone;           
       
   983      }
       
   984  
       
   985  //-------------------------------------------------------------------------------------
       
   986  //CSuplSettingsEngine::AddNewServer()
       
   987  //
       
   988  //This method is used to add new server into settings.
       
   989  //--------------------------------------------------------------------------------------
       
   990  TInt CSuplSettingsEngine::AddNewServer( const CServerParams* aParamValues, TInt64& aSlpId )
       
   991      {
       
   992      TRAPD(err,iSettingsDBHandler->InsertSLPRecordL(aParamValues,aSlpId)); 
       
   993      if(err != KErrNone)
       
   994          return err;
       
   995      return KErrNone;
       
   996      }
       
   997  
       
   998  //-------------------------------------------------------------------------------------
       
   999  //CSuplSettingsEngine::SetAllParameter()
       
  1000  //
       
  1001  //This method is used to change all parameters of server in SUPL settings.
       
  1002  //--------------------------------------------------------------------------------------
       
  1003  TInt CSuplSettingsEngine::SetAllParameter( const CServerParams* aParamValues)
       
  1004      {
       
  1005      TRAPD(err,iSettingsDBHandler->UpdateSLPRecordL(aParamValues));
       
  1006      if(err != KErrNone)
       
  1007          return err;
       
  1008      return KErrNone;
       
  1009      }
       
  1010  
       
  1011  //-------------------------------------------------------------------------------------
       
  1012  //CSuplSettingsEngine::SetDefaultServer()
       
  1013  //
       
  1014  //This method is used to change all parameters of default server in SUPL settings.
       
  1015  //--------------------------------------------------------------------------------------
       
  1016  TInt CSuplSettingsEngine::SetDefaultServer( const CServerParams* aParamValues)        
       
  1017      {
       
  1018      TRAPD(err,iSettingsDBHandler->UpdateDefaultServerL(aParamValues)); 
       
  1019      if(err != KErrNone)
       
  1020          return KErrGeneral;
       
  1021      return KErrNone;
       
  1022      }
       
  1023 
       
  1024  //-------------------------------------------------------------------------------------
       
  1025  //CSuplSettingsEngine::SetFallBack()
       
  1026  //
       
  1027  //This method enables or disables the fall back in SUPL settings storage.
       
  1028  //--------------------------------------------------------------------------------------
       
  1029  TInt CSuplSettingsEngine::SetFallBack(TBool aFallBack)
       
  1030     {
       
  1031     TInt err;
       
  1032     TInt count = 0;
       
  1033     iSettingsDBHandler->SlpCount(count);
       
  1034     if(count <= 1) //single server entry exists
       
  1035         return KErrGeneral;
       
  1036     err = iRepository->Set(KSuplSettingsFallBack, aFallBack);
       
  1037     if (err != KErrNone)
       
  1038         return KErrGeneral;            
       
  1039 
       
  1040     return KErrNone;            
       
  1041     }
       
  1042  
       
  1043  //-------------------------------------------------------------------------------------
       
  1044  //CSuplSettingsEngine::GetFallBack()
       
  1045  //
       
  1046  //This method retrieves the fallback value from SUPL settings storage 
       
  1047  //--------------------------------------------------------------------------------------
       
  1048  TInt CSuplSettingsEngine::GetFallBack(TBool& aFallBack) const
       
  1049     {
       
  1050     TInt err;            
       
  1051 
       
  1052     err = iRepository->Get(KSuplSettingsFallBack, aFallBack);
       
  1053     if (err != KErrNone)
       
  1054         return KErrGeneral;            
       
  1055 
       
  1056     return KErrNone;
       
  1057                
       
  1058     }
       
  1059  
       
  1060  //-------------------------------------------------------------------------------------
       
  1061  //CSuplSettingsEngine::SetFallBackTimer()
       
  1062  //
       
  1063  //This method sets the fall back timer in SUPL settings storage. 
       
  1064  //--------------------------------------------------------------------------------------
       
  1065  TInt CSuplSettingsEngine::SetFallBackTimer(TInt aTimerValue)
       
  1066     {
       
  1067     TInt err;
       
  1068 
       
  1069     err = iRepository->Set(KSuplSettingsFallBackTimer, aTimerValue);
       
  1070     if (err != KErrNone)
       
  1071         return KErrGeneral;            
       
  1072 
       
  1073     return KErrNone;            
       
  1074     }
       
  1075  
       
  1076  //-------------------------------------------------------------------------------------
       
  1077  //CSuplSettingsEngine::GetFallBackTimer()
       
  1078  //
       
  1079  //This method gets the fall back timer from SUPL settings storage. 
       
  1080  //--------------------------------------------------------------------------------------
       
  1081  TInt CSuplSettingsEngine::GetFallBackTimer(TInt& aTimerValue) const
       
  1082     {
       
  1083     TInt err;            
       
  1084 
       
  1085     err = iRepository->Get(KSuplSettingsFallBackTimer, aTimerValue);
       
  1086     if (err != KErrNone)
       
  1087         return KErrGeneral;            
       
  1088 
       
  1089     return KErrNone;
       
  1090                
       
  1091     }
       
  1092  
       
  1093  //-------------------------------------------------------------------------------------
       
  1094  //CSuplSettingsEngine::GetSlpInfoFromId()
       
  1095  //
       
  1096  //This method is used to retrieve all properties of server from SUPL settings storage
       
  1097  // based on SLP identification.
       
  1098  //--------------------------------------------------------------------------------------
       
  1099 TInt CSuplSettingsEngine::GetSlpInfoFromId(const TInt64 aSlpId,CServerParams* aParamValues) const
       
  1100     {
       
  1101     return iSettingsDBHandler->GetSlpInfoFromId(aSlpId,aParamValues);
       
  1102     }
       
  1103 
       
  1104 //-------------------------------------------------------------------------------------
       
  1105 //CSuplSettingsEngine::GetSlpInfoAddress()
       
  1106 //
       
  1107 //This method is used to retrieve all properties of server from SUPL settings storage
       
  1108 //based on SLP address.
       
  1109 //--------------------------------------------------------------------------------------
       
  1110 TInt CSuplSettingsEngine::GetSlpInfoAddress(const TDesC& aServerAddress,CServerParams* aParamValues) const
       
  1111     {
       
  1112     return iSettingsDBHandler->GetSlpInfoFromAddress(aServerAddress,aParamValues);
       
  1113     }
       
  1114 
       
  1115 //-------------------------------------------------------------------------------------------
       
  1116 //CSuplSettingsEngine::GetDefaultServer()
       
  1117 //
       
  1118 //This method is used to retrieve all properties of default server from SUPL settings storage.
       
  1119 //-------------------------------------------------------------------------------------------
       
  1120 TInt CSuplSettingsEngine::GetDefaultServer(CServerParams* aParamValues) const
       
  1121     {
       
  1122     return iSettingsDBHandler->GetDefaultServer(aParamValues);
       
  1123     }
       
  1124 
       
  1125 //---------------------------------------------------------------------------------
       
  1126 //CSuplSettingsEngine::SlpCount()
       
  1127 //
       
  1128 //This method is used to retrieve number of server entries present in SUPL settings.
       
  1129 //-----------------------------------------------------------------------------------
       
  1130 TInt CSuplSettingsEngine::SlpCount(TInt& aCount)
       
  1131     {
       
  1132     return iSettingsDBHandler->SlpCount(aCount);
       
  1133     }
       
  1134 
       
  1135 //-------------------------------------------------------------------------------------
       
  1136 //CSuplSettingsEngine::IsSlpExists()
       
  1137 //
       
  1138 //This method is used check whether server entry exists or not based on SLP
       
  1139 // identification 
       
  1140 //--------------------------------------------------------------------------------------
       
  1141 TBool CSuplSettingsEngine::IsSlpExists(const TInt64 aSlpId)
       
  1142     {
       
  1143     return iSettingsDBHandler->IsSlpExists(aSlpId);
       
  1144     }
       
  1145 
       
  1146 //-------------------------------------------------------------------------------------
       
  1147 //CSuplSettingsEngine::IsSlpExists()
       
  1148 //
       
  1149 //This method is used check whether server entry exists or not based on SLP
       
  1150 // address
       
  1151 //--------------------------------------------------------------------------------------
       
  1152 TBool CSuplSettingsEngine::IsSlpExists(const TDesC& aServerAddress)
       
  1153     {
       
  1154     return iSettingsDBHandler->IsSlpExists(aServerAddress);
       
  1155     }
       
  1156 
       
  1157 //-------------------------------------------------------------------------------------
       
  1158 //CSuplSettingsEngine::GetAllSlp()
       
  1159 //
       
  1160 //This synchronous method is used to retrieve properties of all servers from 
       
  1161 //SUPL settings storage.
       
  1162 //-------------------------------------------------------------------------------------
       
  1163 TInt CSuplSettingsEngine::GetAllSlp(RPointerArray<CServerParams>& aParamValues) 
       
  1164     {
       
  1165 
       
  1166     TRAPD(err,iSettingsDBHandler->GetAllSLPL(aParamValues));
       
  1167     if(err != KErrNone)
       
  1168         return err;
       
  1169     return KErrNone;
       
  1170     }
       
  1171 
       
  1172 //-------------------------------------------------------------------------------------
       
  1173 //CSuplSettingsEngine::GetAllSlp()
       
  1174 //
       
  1175 //This method is used to retrieve properties of all servers from SUPL settings storage.
       
  1176 //--------------------------------------------------------------------------------------
       
  1177 TInt CSuplSettingsEngine::GetAllSlp(RPointerArray<CServerParams>& aParamValues,TRequestStatus& aStatus) 
       
  1178     {
       
  1179     TRAPD(err,iSettingsDBHandler->GetAllSLPL(aParamValues,aStatus));
       
  1180     if(err != KErrNone)
       
  1181         return err;
       
  1182     return KErrNone;
       
  1183     }
       
  1184 
       
  1185 //-------------------------------------------------------------------------------------
       
  1186 //CSuplSettingsEngine::RemoveOnSimChange()
       
  1187 //
       
  1188 //This method is used to delete all servers which have the Sim Change Remove Flag set
       
  1189 //--------------------------------------------------------------------------------------
       
  1190 TInt CSuplSettingsEngine::RemoveOnSimChange()
       
  1191     {
       
  1192     TRAPD(err,iSettingsDBHandler->RemoveOnSimChangeL());
       
  1193        if(err != KErrNone)
       
  1194            return KErrGeneral;
       
  1195        return KErrNone;
       
  1196     }
       
  1197     
       
  1198 //-------------------------------------------------------------------------------------
       
  1199 //CSuplSettingsEngine::GetTriggerParams()
       
  1200 //
       
  1201 //This method is used to retrieve properties of all active triggers. 
       
  1202 //--------------------------------------------------------------------------------------
       
  1203 TInt CSuplSettingsEngine::GetTriggerParams(RPointerArray<CTriggerParams>& aParamValues) const
       
  1204     {
       
  1205     TInt err = KErrNone;
       
  1206     TRAP(err,iSettingsDBHandler->GetAllSessionsL(aParamValues));
       
  1207     return err;
       
  1208     }
       
  1209     
       
  1210 //-------------------------------------------------------------------------------------
       
  1211 //CSuplSettingsEngine::GetTriggerParams()
       
  1212 //
       
  1213 //This method is used to retrieve properties of a given active trigger. 
       
  1214 //--------------------------------------------------------------------------------------
       
  1215 TInt CSuplSettingsEngine::GetTriggerParams(TInt64 aSessionId,
       
  1216                                            CTriggerParams*& aParamValues) const
       
  1217     {
       
  1218     TInt err = KErrNone;
       
  1219     TRAP(err,iSettingsDBHandler->GetSessionL(aSessionId,aParamValues));
       
  1220     return err;
       
  1221     }
       
  1222 
       
  1223 //-------------------------------------------------------------------------------------
       
  1224 //CSuplSettingsEngine::SetNotificationStatus()
       
  1225 //
       
  1226 //Sets Notification status of particular session
       
  1227 //--------------------------------------------------------------------------------------
       
  1228 TInt CSuplSettingsEngine::SetNotificationStatus( TInt64 aSessionId,
       
  1229                 								 TBool aTriggerNotificationStatus )
       
  1230     {
       
  1231     TInt err = KErrNone;
       
  1232     TRAP(err,iSettingsDBHandler->UpdateSessionRecordL(aSessionId,CSuplSettingsInternal::ETriggerNotificationStatus,aTriggerNotificationStatus));
       
  1233     return err;
       
  1234     }
       
  1235 
       
  1236 //-------------------------------------------------------------------------------------
       
  1237 //CSuplSettingsEngine::SetOutstandingTriggers()
       
  1238 //
       
  1239 //Sets number of outstanding triggers for a particular session
       
  1240 //--------------------------------------------------------------------------------------
       
  1241 TInt CSuplSettingsEngine::SetOutstandingTriggers( TInt64 aSessionId,
       
  1242                                                   TUint64 aOutstandingTriggers )
       
  1243     {
       
  1244     TInt err = KErrNone;
       
  1245     TRAP(err,iSettingsDBHandler->UpdateSessionRecordL(aSessionId,CSuplSettingsInternal::EOutstandingTriggers,aOutstandingTriggers));
       
  1246     return err;
       
  1247     }
       
  1248 
       
  1249 //-------------------------------------------------------------------------------------
       
  1250 //CSuplSettingsEngine::CancelTriggerSession()
       
  1251 //
       
  1252 //Cancels ongoing triggering session
       
  1253 //--------------------------------------------------------------------------------------
       
  1254 TInt CSuplSettingsEngine::CancelTriggerSession( TInt64 aSessionId )
       
  1255     {
       
  1256     TInt err = KErrNone;
       
  1257     TRAP(err,iSettingsDBHandler->DeleteSessionRecordL(aSessionId));
       
  1258     return err;
       
  1259     }
       
  1260     
       
  1261 //-------------------------------------------------------------------------------------
       
  1262 //CSuplSettingsEngine::InsertSessionRecord()
       
  1263 //
       
  1264 //This method is used to insert Active session record into the SUPL session DB
       
  1265 //--------------------------------------------------------------------------------------
       
  1266 TInt CSuplSettingsEngine::InsertSessionRecord(const CTriggerParams* aSessionParamValues)
       
  1267     {
       
  1268     TInt err = KErrNone;
       
  1269     TRAP(err,iSettingsDBHandler->InsertSessionRecordL(aSessionParamValues));
       
  1270     return err;
       
  1271     }
       
  1272     
       
  1273 //-------------------------------------------------------------------------------------
       
  1274 //CSuplSettingsEngine::DeleteSessionRecord()
       
  1275 //
       
  1276 //This method is used to delete a session record corresponding to the given session ID
       
  1277 //--------------------------------------------------------------------------------------
       
  1278 TInt CSuplSettingsEngine::DeleteSessionRecord(TInt64 aSessionId)
       
  1279     {
       
  1280     TInt err = KErrNone;
       
  1281     TRAP(err,iSettingsDBHandler->DeleteSessionRecordL(aSessionId));
       
  1282     return err;
       
  1283     } 
       
  1284 
       
  1285 //-------------------------------------------------------------------------------------
       
  1286 //CSuplSettingsEngine::DeleteAllSessionRecords()
       
  1287 //
       
  1288 //This method is used to delete all session records from session table
       
  1289 //--------------------------------------------------------------------------------------
       
  1290 TInt CSuplSettingsEngine::DeleteAllSessionRecords()
       
  1291     {
       
  1292     TInt err = KErrNone;
       
  1293     TRAP(err,iSettingsDBHandler->DeleteAllSessionRecordsL());
       
  1294     return err;
       
  1295     }
       
  1296     
       
  1297 //-------------------------------------------------------------------------------------
       
  1298 //CSuplSettingsEngine::GetServerExtensionParams()
       
  1299 //
       
  1300 //This method is used to retrieve extended parameters of given server
       
  1301 //--------------------------------------------------------------------------------------
       
  1302 TInt CSuplSettingsEngine::GetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams ) const
       
  1303     {
       
  1304     TInt err = KErrNone;
       
  1305     TRAP(err,iSettingsDBHandler->GetServerExtensionParamsL( aSlpId,aServerExtnParams ));
       
  1306     return err;
       
  1307     }
       
  1308     
       
  1309 //-------------------------------------------------------------------------------------
       
  1310 //CSuplSettingsEngine::SetServerExtensionParams()
       
  1311 //
       
  1312 //This method is used to set extended parameters of a given server.
       
  1313 //--------------------------------------------------------------------------------------
       
  1314 TInt CSuplSettingsEngine::SetServerExtensionParams( TInt64 aSlpId,CServerExtensionParams* aServerExtnParams )
       
  1315     {
       
  1316     TInt err = KErrNone;
       
  1317     TRAP(err,iSettingsDBHandler->UpdateServerExtensionParamsL( aSlpId,aServerExtnParams ));
       
  1318     return err;
       
  1319     }          
       
  1320 //---------------------------------------------------------------------
       
  1321 // CSuplSettings::GetDefaultIAPName()
       
  1322 //
       
  1323 // Returns the default configured IAP name
       
  1324 //---------------------------------------------------------------------
       
  1325 TInt  CSuplSettingsEngine::GetDefaultIAPName(TDes& aIapName)
       
  1326     {
       
  1327     CRepository* productConfigRepository = NULL;
       
  1328     aIapName.Copy(KNullDesC);
       
  1329     TRAPD(err,productConfigRepository = CRepository::NewL(KCRUidProductConfig));
       
  1330     if(err == KErrNone)
       
  1331         {
       
  1332         err = productConfigRepository->Get(KDefaultAutoGenIAP, aIapName);
       
  1333         delete productConfigRepository;
       
  1334         }
       
  1335     return err;
       
  1336     }  
       
  1337 //End of File