1 // Copyright (c) 2003-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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __LBSCRITERIA_H__
17 #define __LBSCRITERIA_H__
19 #include <lbscommon.h>
22 class TPositionSelectionOrder
24 This class is used as part of the TPositionCriteria class to chose a
25 positioning module that will provide the desired quality of information.
26 It allows position-quality-metrics to be given priorities, enabling them
27 to be given preference in the decision.
35 Specifies the priority of selection parameters.
52 EOrderFairlyHigh = 125,
60 Specifies the quality of position metrics that can be prioritized.
64 /** Time to first fix */
66 /** Time to next fix */
68 /** Field Horizontal Accuracy */
69 EFieldHorizontalAccuracy,
70 /** Field Vertical Accuracy */
71 EFieldVerticalAccuracy,
76 /** Number of fields */
77 EFieldNumFields, // Do not use this value. Must appear after all other field values.
79 EFieldLast = KMaxTInt8 // Do not use this value. Must appear at end.
82 IMPORT_C TPositionSelectionOrder();
84 IMPORT_C TInt SetOrderTimeToFirstFix(TOrder aOrder);
85 IMPORT_C TInt SetOrderTimeToNextFix(TOrder aOrder);
87 IMPORT_C TInt SetOrderHorizontalAccuracy(TOrder aOrder);
88 IMPORT_C TInt SetOrderVerticalAccuracy(TOrder aOrder);
90 IMPORT_C TInt SetOrderCostIndicator(TOrder aOrder);
91 IMPORT_C TInt SetOrderPowerConsumption(TOrder aOrder);
93 IMPORT_C void ResetSelectionOrder();
94 IMPORT_C void ClearSelectionOrder();
96 IMPORT_C TUint NumSelectionItems() const;
97 IMPORT_C TInt GetSelectionItem(TUint aIndex,
99 TOrder& aOrder) const;
104 Stores a field / priority pair.
107 /** A position quality metric identifier. */
109 /** The priority given to the iField position quality metric. */
115 An internal method to add a selection criteria choice to the current set of
118 TInt AddItem(TField aField, TOrder aOrder);
121 /** The number of selection items in the iItems array. */
123 /** Array of users position quality priorities. */
124 SItem iItems[KPositionMaxSectionFields];
128 TPositionCriteriaBase derived classes class types
129 // If the following line generates an error, too many fields have been added
130 // to the TPositionSelectionOrder::TOrder enumeration, some must be removed
135 POSITION_COMPILE_TIME_ASSERT(TPositionSelectionOrder::EFieldNumFields <= KPositionMaxSectionFields);
138 class TPositionCriteriaBase : public TPositionClassTypeBase
140 The base class for classes used to store position module selection
141 criteria information.
148 IMPORT_C TPositionCriteriaBase();
149 IMPORT_C TPositionCriteriaBase(TPositionModuleInfo::TCapabilities aCapabilityMask);
152 IMPORT_C void AddRequiredCapabilities(TPositionModuleInfo::TCapabilities aCapabilityMask);
153 IMPORT_C void ClearRequiredCapabilities();
154 IMPORT_C TPositionModuleInfo::TCapabilities RequiredCapabilities() const;
156 IMPORT_C void SetRequiredQuality(const TPositionQuality& aPosQuality);
157 IMPORT_C void GetRequiredQuality(TPositionQuality& aPosQuality) const;
159 IMPORT_C void SetSelectionOrder(const TPositionSelectionOrder& aSelectionOrder);
160 IMPORT_C void GetSelectionOrder(TPositionSelectionOrder& aSelectionOrder) const;
162 IMPORT_C void ResetCriteria();
163 IMPORT_C void ClearCriteria();
166 /** The capabilities a positioning module must have. */
167 TPositionModuleInfo::TCapabilities iRequiredCaps;
168 /** The quality required of a positioning module. */
169 TPositionQuality iRequiredQuality;
170 /** The priorities assigned to the various quality metrics. */
171 TPositionSelectionOrder iSelectionOrder;
175 class TPositionCriteria : public TPositionCriteriaBase
177 The standard class criteria class for selecting a positioning module.
184 IMPORT_C TPositionCriteria();
185 IMPORT_C TPositionCriteria(TPositionModuleInfo::TCapabilities aCapabilityMask);
188 /** Unused variable for future expansion. */
192 #endif // __LBSCRITERIA_H__