diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/lbscriteria.h --- a/epoc32/include/lbscriteria.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/lbscriteria.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,191 @@ -lbscriteria.h +// Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __LBSCRITERIA_H__ +#define __LBSCRITERIA_H__ + +#include + + +class TPositionSelectionOrder +/** +This class is used as part of the TPositionCriteria class to chose a +positioning module that will provide the desired quality of information. +It allows position-quality-metrics to be given priorities, enabling them +to be given preference in the decision. + +@publishedAll +@released + */ + { +public: + /** + Specifies the priority of selection parameters. + */ + enum TOrder + { + /** Don't care */ + EOrderDontCare = 0, + /** Default */ + EOrderDefault = 1, + /** Very low */ + EOrderVeryLow = 25, + /** Low */ + EOrderLow = 50, + /** Fairly low */ + EOrderFairlyLow = 75, + /** Medium */ + EOrderMedium = 100, + /** Fairly high */ + EOrderFairlyHigh = 125, + /** High */ + EOrderHigh = 150, + /** Very high */ + EOrderVeryHigh = 175 + }; + + /** + Specifies the quality of position metrics that can be prioritized. + */ + enum TField + { + /** Time to first fix */ + EFieldTimeToFirstFix, + /** Time to next fix */ + EFieldTimeToNextFix, + /** Field Horizontal Accuracy */ + EFieldHorizontalAccuracy, + /** Field Vertical Accuracy */ + EFieldVerticalAccuracy, + /** Field cost */ + EFieldCost, + /** Field power */ + EFieldPower, + /** Number of fields */ + EFieldNumFields, // Do not use this value. Must appear after all other field values. + /** Last field */ + EFieldLast = KMaxTInt8 // Do not use this value. Must appear at end. + }; + + IMPORT_C TPositionSelectionOrder(); + + IMPORT_C TInt SetOrderTimeToFirstFix(TOrder aOrder); + IMPORT_C TInt SetOrderTimeToNextFix(TOrder aOrder); + + IMPORT_C TInt SetOrderHorizontalAccuracy(TOrder aOrder); + IMPORT_C TInt SetOrderVerticalAccuracy(TOrder aOrder); + + IMPORT_C TInt SetOrderCostIndicator(TOrder aOrder); + IMPORT_C TInt SetOrderPowerConsumption(TOrder aOrder); + + IMPORT_C void ResetSelectionOrder(); + IMPORT_C void ClearSelectionOrder(); + + IMPORT_C TUint NumSelectionItems() const; + IMPORT_C TInt GetSelectionItem(TUint aIndex, + TField& aField, + TOrder& aOrder) const; + +protected: + struct SItem + /** + Stores a field / priority pair. + + @publishedAll + @released + */ + { + /** A position quality metric identifier. */ + TField iField; + /** The priority given to the iField position quality metric. */ + TOrder iOrder; + }; + +protected: + TInt AddItem(TField aField, TOrder aOrder); + +protected: + /** The number of selection items in the iItems array. */ + TUint iNumItems; + /** Array of users position quality priorities. */ + SItem iItems[KPositionMaxSectionFields]; + }; + +/** +TPositionCriteriaBase derived classes class types +// If the following line generates an error, too many fields have been added +// to the TPositionSelectionOrder::TOrder enumeration, some must be removed +// to maintain BC. +@publishedAll +@released + */ +POSITION_COMPILE_TIME_ASSERT(TPositionSelectionOrder::EFieldNumFields <= KPositionMaxSectionFields); + + +class TPositionCriteriaBase : public TPositionClassTypeBase +/** +The base class for classes used to store position module selection +criteria information. + +@publishedAll +@released + */ + { +protected: + IMPORT_C TPositionCriteriaBase(); + IMPORT_C TPositionCriteriaBase(TPositionModuleInfo::TCapabilities aCapabilityMask); + +public: + IMPORT_C void AddRequiredCapabilities(TPositionModuleInfo::TCapabilities aCapabilityMask); + IMPORT_C void ClearRequiredCapabilities(); + IMPORT_C TPositionModuleInfo::TCapabilities RequiredCapabilities() const; + + IMPORT_C void SetRequiredQuality(const TPositionQuality& aPosQuality); + IMPORT_C void GetRequiredQuality(TPositionQuality& aPosQuality) const; + + IMPORT_C void SetSelectionOrder(const TPositionSelectionOrder& aSelectionOrder); + IMPORT_C void GetSelectionOrder(TPositionSelectionOrder& aSelectionOrder) const; + + IMPORT_C void ResetCriteria(); + IMPORT_C void ClearCriteria(); + +protected: + /** The capabilities a positioning module must have. */ + TPositionModuleInfo::TCapabilities iRequiredCaps; + /** The quality required of a positioning module. */ + TPositionQuality iRequiredQuality; + /** The priorities assigned to the various quality metrics. */ + TPositionSelectionOrder iSelectionOrder; + }; + + +class TPositionCriteria : public TPositionCriteriaBase +/** +The standard class criteria class for selecting a positioning module. + +@publishedAll +@released + */ + { +public: + IMPORT_C TPositionCriteria(); + IMPORT_C TPositionCriteria(TPositionModuleInfo::TCapabilities aCapabilityMask); + +private: + /** Unused variable for future expansion. */ + TUint8 iReserved[4]; + }; + +#endif // __LBSCRITERIA_H__