diff -r a36b1e19a461 -r 989d2f495d90 serviceproviders/sapi_location/inc/locationinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceproviders/sapi_location/inc/locationinterface.h Fri Jul 03 15:51:24 2009 +0100 @@ -0,0 +1,325 @@ +/* +* Copyright (c) 2006-2007 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 "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: Header file for location SAPI core implementation. +* +*/ + +#ifndef C_LOCINTERFACE_H +#define C_LOCINTERFACE_H + + +#include +#include "locationcb.h" +#include "locationservice.h" +#include "serviceerrno.h" + + +// CONSTANTS +const TInt KMaxSupportedFields = 25 ; + + + +//Second +const TInt KLocSecond = 1000000; + +//Update interval +const TInt KLocUpdateInterval = KLocSecond; + +//Update time out +const TInt KLocUpdateTimeOut = 15*KLocSecond; + +//MaxAge +const TInt KLocMaxAge = 0; + + +/** + * Various command for Location service + */ + +_LIT8( KCmdGetLocation , "GetLocation" ) ; +_LIT8( KCmdTraceLocation, "Trace" ) ; +_LIT8( KCmdCancelRequest, "CancelNotification" ) ; +_LIT8( KCmdSetIdentity, "SetIdentity"); + +_LIT( KRequestTrace ,"TraceCancel") ; +_LIT( KRequestGetLoc , "GetLocCancel" ) ; +_LIT8( KRequestCalculate , "Calculate") ; + +_LIT8( KMathRequest , "MathRequest") ; +_LIT8( KCancelType , "CancelRequestType") ; + +/** + * Error Indntifier in Output parameter list + */ + _LIT8(KErrorCode , "ErrorCode") ; + + /** + * Error string + */ + _LIT8(KErrorMessage,"ErrorMessage"); + + /** + * Location SAPI result parmater identifiers + */ + _LIT8(KLocationMap , "ReturnValue") ; + +/** + * Update Options + */ +_LIT8(KUpdateOptionMap,"Updateoptions"); +_LIT8(KUpdateOptionInterval,"UpdateInterval"); +_LIT8(KUpdateOptionTimeOut,"UpdateTimeOut"); +_LIT8(KUpdateOptionMaxAge,"UpdateMaxAge"); +_LIT8(KPartialUpdates , "PartialUpdates"); + +/** + * Class of Location Information ;user is + * looking for + */ +_LIT8(KLocationInfoCategory,"LocationInformationClass"); +_LIT(KLocationBasicinfo,"BasicLocationInformation"); +_LIT(KLocationGenericInfo,"GenericLocationInfo"); + +/** + * Math operations request identifiers + */ +_LIT( KRequestDistance , "FindDistance") ; +_LIT(KRequestBearingTo,"FindBearingTo"); +_LIT(KRequestMove,"MoveCoordinates"); +_LIT8(KDistanceParmSource , "DistanceParamSource") ; +_LIT8(KDistanceMove , "MoveByThisDistance"); +_LIT8(KBearingMove , "MoveByThisBearing"); +_LIT8(KDistanceParmDestination , "DistanceParamDestination") ; +_LIT8(KMathOpResult,"ReturnValue"); + + +/** + * Speed informations which will be part of outparamlist + */ + +_LIT8(KPositionFieldHorizontalSpeed , "HorizontalSpeed") ; +_LIT8(KPositionFieldVerticalSpeed , "VeritcalSpeed") ; +_LIT8(KPositionFieldHorizontalSpeedError , "HorizontalSpeedError") ; +_LIT8(KPositionFieldVerticalSpeedError , "VeritcalSpeedError") ; + + /** + * Satellite information which be part of outparm list + */ +_LIT8(KPositionFieldSatelliteNumInView , "SatelliteNumView") ; +_LIT8(KPositionFieldSatelliteNumUsed , "SatelliteNumViewUsed") ; +_LIT8(KPositionFieldSatelliteTime , "SatelliteTime") ; + +/** + * Compass information which will be part of outparmlist + */ +_LIT8(KPositionFieldHeading , "Heading") ; +_LIT8(KPositionFieldHeadingError , "HeadingError") ; +_LIT8(KPositionFieldMagneticHeading , "MagneticHeading") ; +_LIT8(KPositionFieldMagneticHeadingError , "MagneticHeadingError") ; + +/** + * Direction course information which will be part of outparm list + */ +_LIT8(KPositionFieldTrueCourse , "TrueCourse") ; +_LIT8(KPositionFieldTrueCourseError , "TrueCourseError") ; +_LIT8(KPositionFieldMagneticCourse , "MagneticCourse") ; +_LIT8(KPositionFieldMagneticCourseError , "MagneticCourseError") ; + +/** + * NMEA information which will be part of outparam list + */ + +_LIT8(KPositionFieldNMEASentences , "NMEASentence") ; +_LIT8(KPositionFieldNMEASentencesStart , "NMEASentenceStart") ; + +/** + * Enum specifier for postion Info Category + * + */ + enum TPositionCategory + { + EBasicPositionInfo = 0, + EGenericPositionInfo = 1 + }; + +/** + * Transaction id, which will be part of outparamlist for asynchronous request + */ +_LIT8(KTransactionId, "TransactionID"); + +/** + * This is an interface class for Location SAPI This class implements ExecuteCmdL() method + * ExecuteCmdL() method is called directly by consumer after descovering the service + */ + +class CLocationInterface : public CBase ,public MLiwInterface + { + public: + enum TIndex + { + Index0 = 0, + Index1, + Index2, + Index3 + }; + /** + * A static method for creating CLocationInterface object + */ + static CLocationInterface *NewL() ; + + + /** + * Default destructor + */ + virtual ~CLocationInterface() ; + + /** + * ExecuteCmdL parses the input parameters and then calls an appropriate method on iLocationServic + * + * @param aCmdName the name of the service command which the consumer wants to invoke + * @param aInParamList the input parameter list, can be empty list + * @param [in,out] aOutParamList the output parameter list, can be empty lis. The + * service provider can use the output parameter list to fill in necessary return values + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + */ + virtual void ExecuteCmdL( const TDesC8& aCmdName, + const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions = 0, + MLiwNotifyCallback* aCallback = 0 ); + static TInt ConvertToSapiError(TInt aSymbianErrorCode); + + /** + * Close function called by consumer when it wants to delete the interface + */ + virtual void Close() {delete this;} + + private : + static void ConvertPosToGenricListL( TPosition &aPos , CLiwGenericParamList &aOutList ) ; + + /** + * Internal private function which extracts coordinate information from CLiwMap + * passed by consumer, this is required for math operations + * + * @param aCoordinate which will contain extracted coordinate info from map + * @param input map containing cooridinate information + */ + void FillCoordinatesL( TCoordinate &aCoordinate , const CLiwMap *aMap ) ; + + /** + * SetUpdateOption construct a TPositionUpdateOptions object from the map containing + * different field of update optiin. + * + * @param aPositionUpdateoption object to be constructed + * @param aUpdatemap map containing values of different field of update option. + * return -1 if negative value for timeinterval is given + */ + TInt SetUpdateOption(TPositionUpdateOptions& aPositionUpdateoption,const CLiwMap* aUpdatemap); + + private : + /** + *Default constructor + */ + + CLocationInterface() ; + + /** + * Internal CmdExecute function which parses the input parameters + * this function is called by ExecuteCmdL() function + * + * @param aCmdName the name of the service command which the consumer wants to invoke + * @param aInParamList the input parameter list, can be empty list + * @param [in,out] aOutParamList the output parameter list, can be empty lis. The + * service provider can use the output parameter list to fill in necessary return values + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + + + void CmdExecuteL( + const TDesC8& aCmdName, + const CLiwGenericParamList& aInParamList , + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions, + MLiwNotifyCallback* aCallback); + + /** + * Internal utility function which fills iGenericPosinfo accoriding to capability of + * Positioning module used for location estimation + */ + + TInt SetSupportedFields() ; + + /** + * Internal utility function which gets all location information which module supports + * + * @param aOutParamList output list which is populated with location informatio + * @param aPosInfoCategory position category (Basic or Generic) + */ + + void GetLocationInfo( CLiwGenericParamList& aOutParamList,TInt aPosInfoCategory) ; + + /** + * Internal function which cancels the asynchronous using transaction id of the + * async request + * + * @param aTransactionId Transaction id of the asynchronous request to be cancelled + */ + + MLiwNotifyCallback* RequestCancel(TInt32 aTransactionId/*,MLiwNotifyCallback** aCallBack*/) ; + + + /** + * Handle to core location class for performing location operations + */ + CLocationService *iLocationService ; + + /** + * Registration table for callbacks + */ + RPointerArray iHandleCB; + + + /** + * Member variable which holds all the Generic position information + */ + + HPositionGenericInfo *iGenericPosInfo ; + + /** + * Class member which contains module information which is used for location esitmation + */ + TPositionModuleInfo iModuleInfo ; + + /** + * Class member which contains all the field ids of all the supported Hposition info fields + */ + + TPositionFieldId iFieldList[KMaxSupportedFields] ; + + + + }; + + +#endif //C_LOCINTERFACE_H \ No newline at end of file