--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sapi_location/inc/locationinterface.h Mon Mar 30 12:51:10 2009 +0300
@@ -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 <LiwCommon.h>
+#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<LocationInterfaceCB> 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