datasourceadaptation/gpsdatasourceadaptation/common/src/cpositionerenvironment.cpp
changeset 36 b47902b73a93
parent 0 9cfd9a3ee49c
equal deleted inserted replaced
35:a2efdd544abf 36:b47902b73a93
       
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @InternalComponent
       
    19 */
       
    20 
       
    21 #include <e32base.h>
       
    22 #include <lbscommon.h>
       
    23 #include <lbs/lbsadmin.h>
       
    24 #include <centralrepository.h>
       
    25 #include <lbs/positioningpluginfwinternalcrkeys.h>
       
    26 
       
    27 #include <lbs/adaptationpsyprivatecrkeys.h> 
       
    28 #include "lbsqualityprofile.h"
       
    29 #include "cpositionerenvironment.h"
       
    30 #include "LbsInternalInterface.h"
       
    31 
       
    32 CPositionerEnvironment::~CPositionerEnvironment()
       
    33 	{
       
    34 	delete iAdmin;
       
    35 	}
       
    36 	
       
    37 void CPositionerEnvironment::ConstructL()
       
    38 	{
       
    39 	iAdmin = CLbsAdmin::NewL();
       
    40 	}
       
    41 	
       
    42 const CLbsAdmin& CPositionerEnvironment::Admin()
       
    43 	{
       
    44 	return *iAdmin;
       
    45 	}
       
    46 
       
    47 TInt CPositionerEnvironment::GetDefaultSelfLocateQualityFromAdminProfile(TPositionQuality& aQuality)
       
    48 	{
       
    49 	// Get the profile Id for self locate requests
       
    50 	TLbsQualityProfileId profileId;
       
    51 	TInt err = Admin().Get(KLbsSettingQualityProfileSelfLocate, profileId);
       
    52 	if (err == KErrNone)
       
    53 		{
       
    54 		// Retrieve the quality profile that belongs to the given Id
       
    55 		TQualityProfile quality;
       
    56 		err = LbsQualityProfile::GetQualityProfileById(profileId, quality);
       
    57 		if (err == KErrNone)
       
    58 			{
       
    59 			aQuality.SetHorizontalAccuracy(quality.MinHorizontalAccuracy());
       
    60 			aQuality.SetVerticalAccuracy(quality.MinVerticalAccuracy());
       
    61 			aQuality.SetTimeToFirstFix(quality.MaxFixTime());
       
    62 			aQuality.SetTimeToNextFix(quality.MaxFixTime());
       
    63 			}
       
    64 		}
       
    65 	
       
    66 	return err;
       
    67 	}
       
    68 
       
    69 
       
    70 void CPositionerEnvironment::GetEnvCriteriaL(TPositionCriteria& aCriteria, TUid aCenRepId)
       
    71 	{
       
    72 	TInt err = KErrNone;
       
    73 	CRepository* rep = CRepository::NewLC(aCenRepId);	
       
    74 	
       
    75 	TPositionQuality quality;
       
    76 	TInt  valInt;
       
    77 	TReal valReal;
       
    78 	
       
    79 	err = GetDefaultSelfLocateQualityFromAdminProfile(quality);
       
    80 	if(err == KErrNone) // we got accuracy and fix times from quality profile. 
       
    81 		{
       
    82 		iProfileInUse = ETrue;
       
    83 		}
       
    84 	else	// get accuracy and fix times from module info
       
    85 		{
       
    86 		User::LeaveIfError(rep->Get(KPSYHorizontalAccuracy, valReal));
       
    87 		quality.SetHorizontalAccuracy(valReal);
       
    88 		User::LeaveIfError(rep->Get(KPSYVerticalAccuracy, valReal));
       
    89 		quality.SetVerticalAccuracy(valReal);
       
    90 		User::LeaveIfError(rep->Get(KPSYTimeToFirstFix, valInt));
       
    91 		quality.SetTimeToFirstFix(valInt);
       
    92 		User::LeaveIfError(rep->Get(KPSYTimeToNextFix, valInt));
       
    93 		quality.SetTimeToNextFix(valInt);
       
    94 		}
       
    95 
       
    96 	// get rest of quality details from moduleinfo
       
    97 	User::LeaveIfError(rep->Get(KPSYCostIndicator, valInt));
       
    98 	quality.SetCostIndicator(static_cast<TPositionQuality::TCostIndicator>(valInt));
       
    99 	User::LeaveIfError(rep->Get(KPSYPowerConsumption, valInt));
       
   100 	quality.SetPowerConsumption(static_cast<TPositionQuality::TPowerConsumption>(valInt));
       
   101 	
       
   102 	aCriteria.SetRequiredQuality(quality);
       
   103 	
       
   104 	User::LeaveIfError(rep->Get(KPSYCapabilities, valInt));
       
   105 	aCriteria.AddRequiredCapabilities(valInt);
       
   106 	CleanupStack::PopAndDestroy(rep);
       
   107 	}
       
   108 
       
   109 TUint CPositionerEnvironment::GetInactivityTimeoutL(TUid aCenRepId)
       
   110 	{
       
   111 	TInt  valInt;
       
   112 
       
   113 	CRepository* rep = CRepository::NewLC(aCenRepId);	
       
   114 	User::LeaveIfError(rep->Get(KAdaptationPSYInactivityDelay, valInt));
       
   115 	CleanupStack::PopAndDestroy(rep);
       
   116 	
       
   117 	return valInt;
       
   118 	}
       
   119 
       
   120 TBool CPositionerEnvironment::ProfileInUse()
       
   121 	{
       
   122 	return iProfileInUse ;
       
   123 	}
       
   124 
       
   125 // End of File