locationrequestmgmt/locationserver/LbsQualityProfileApi/inc/lbsqualityprofileapi.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Sat, 20 Feb 2010 00:14:00 +0200
branchRCL_3
changeset 4 03e0f2627e7a
parent 0 9cfd9a3ee49c
permissions -rw-r--r--
Revision: 201002 Kit: 201007

// Copyright (c) 2007-2009 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:
// Location Based Services Quality Profile API
// 
//

/**
 @file
 @publishedPartner
 @released
*/

#ifndef LBS_QUALITY_PROFILE_API_H
#define LBS_QUALITY_PROFILE_API_H

#include <e32base.h>
#include <lbs/lbsadmin.h>

class CLbsQualityProfileApiImpl;


/** Defined type for setting identifiers
*/
typedef TUint64 TLbsQualityProfileApiSetting;

/** No setting */
const TLbsQualityProfileApiSetting KLbsQualityProfileSettingNone			= 0x0000000000000000;

/** Horizontal Accuracy setting.
The default horizontal accuracy for a profile.
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileHorizontalAccuracy		= 0x0000000000000001;

/** Vertical Accuracy setting.
The default vertical accuracy for a profile.
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileVerticalAccuracy		= 0x0000000000000002;

/** Max Fix Time setting.
The default maximum fix time for a profile.
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileMaxFixTime				= 0x0000000000000004;

/** Measurement Initial Time setting.
This is the timeout used for the initial location request when 
starting a 'hybrid' location request. 

Note: A 'hybrid' request is one where the network will accept either an
accurate GPS location or raw GPS measurement data as a response.
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileMeasurementInitialFixTime
																			= 0x0000000000000008;
/** Measurement Intermediate Time setting.
This is the timeout used for the every location request except the first
when continuing a 'hybrid' location request.

Note: A 'hybrid' request is one where the network will accept either an
accurate GPS location or raw GPS measurement data as a response.
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileMeasurementIntermediateFixTime	
																			= 0x0000000000000010;

/** Hybrid Time setting.
@deprecated Use KLbsQualityProfileMeasurementInitialFixTime instead.
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileHybridTime				= KLbsQualityProfileMeasurementInitialFixTime;

/**
This is the time allowed for the network to produce a final network position after maxfix time has passed
*/
const TLbsQualityProfileApiSetting KLbsQualityProfileFinalNetPositionLag		= 0x0000000000000020;


/** Location Based Services Quality Profile API.
A client uses this API to retrieve values stored in the Quality Profile 
installed for LBS.

One example client of this API is the Network Protocol Module.

The Quality Profile values represent vendor-specific quality criteria 
that are used in the course of handling location service requests.
*/
class CLbsQualityProfileApi : public CBase
	{
public:		
	IMPORT_C static CLbsQualityProfileApi* NewL();
	virtual ~CLbsQualityProfileApi();
	
	template <typename T>
		inline TInt Get(const TLbsQualityProfileId& aProfileId,
						const TLbsQualityProfileApiSetting& aSetting, 
						T& aValue) const;
	
private:
	CLbsQualityProfileApi();
	void ConstructL();
	
	IMPORT_C TInt DoGet(const TLbsQualityProfileId& aProfileId,  
						const TLbsQualityProfileApiSetting& aSetting, 
						TReal32& aRealValue) const;
	IMPORT_C TInt DoGet(const TLbsQualityProfileId& aProfileId,
						const TLbsQualityProfileApiSetting& aSetting, 
						TTimeIntervalMicroSeconds& aTimeValue) const;

private:
	/** pointer to the implementation */
	CLbsQualityProfileApiImpl* iImpl;
	};
	
#include <lbs/lbsqualityprofileapi.inl>

#endif //LBS_QUALITY_PROFILE_API_H