epoc32/include/lbs.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
--- a/epoc32/include/lbs.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/lbs.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,168 @@
-lbs.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 __LBS_H__
+#define __LBS_H__
+
+#include <lbspositioninfo.h>
+#include <lbsipc.h>
+#include <lbscommon.h>
+#include <lbsrequestor.h>
+#include <lbscriteria.h>
+
+// Forward declarations
+class CPositioningPtrHolder;
+class CServerPositioningPtrHolder;
+class RPositionServer : public RSessionBase
+
+/**
+This is generally the first interface class used by all client applications.
+It is used to make the primary connection to the location server. After the
+primary connection has been established, its handle is passed as a parameter
+of the Open methods of RPositioner to create a "sub-session".
+
+The RPositionServer class can also be used to discover what position
+technology "modules" are available. However, this is only required if a
+client application actually needs to use a particular module.
+
+@publishedAll
+@released
+ */
+	{
+public:
+	IMPORT_C RPositionServer();
+
+	IMPORT_C TInt Connect();
+	IMPORT_C void Close();
+
+	IMPORT_C TInt CancelRequest(TInt aRequestId);
+	IMPORT_C TVersion Version() const;
+
+	IMPORT_C TInt GetDefaultModuleId(TPositionModuleId& aModuleId) const;
+	IMPORT_C TInt GetNumModules(TUint& aNumModules) const;
+	IMPORT_C TInt GetModuleInfoByIndex(TInt aModuleIndex,
+	                                   TPositionModuleInfoBase& aModuleInfo) const;
+	IMPORT_C TInt GetModuleInfoById(TPositionModuleId aModuleId,
+	                                TPositionModuleInfoBase& aModuleInfo) const;
+
+	IMPORT_C TInt GetModuleStatus(TPositionModuleStatusBase& aPosModuleStatus,
+	                              TPositionModuleId aModuleId) const;
+
+	IMPORT_C void NotifyModuleStatusEvent(TPositionModuleStatusEventBase& aStatusEvent,
+	                                      TRequestStatus& aStatus,
+	                                      const TPositionModuleId aModuleId = KPositionNullModuleId) const;
+
+private:
+	void ConstructL();
+	void Destruct();
+	static TInt StartServer();
+
+private:
+	/** A pointer to a container that holds pointer descriptors, needed to point
+	to the clients request data during asynchronous requests */
+	CServerPositioningPtrHolder* iPtrHolder;
+	
+	/** Variable for future expansion. */
+	TAny* iReserved;
+	};
+
+
+class RPositionerSubSessionBase : public RSubSessionBase
+/**
+Abstract base class for all positioning sub-sessions, including RPositioner.
+
+@see RPositioner
+@publishedAll
+@released
+ */
+	{
+public:
+	IMPORT_C TInt CancelRequest(TInt aRequestId);
+
+	IMPORT_C TInt CompleteRequest(TInt aRequestId);
+
+protected:
+	IMPORT_C RPositionerSubSessionBase();
+	
+	IMPORT_C virtual TAny* ExtendedInterface(TInt aFunctionNumber, TAny* aPtr1, TAny* aPtr2);
+
+private:
+	/** Unused variable for future expansion. */
+	TAny* iReserved;
+	};
+
+
+class RPositioner : public RPositionerSubSessionBase
+/**
+This class is used to create a sub-session with the server for the
+purpose of obtaining the current position. In addition to actually
+obtaining position information, this class also provides mechanisms
+for obtaining the last known position, the general status of the
+positioning module, changing how often it wishes to receive position
+updates, as well as identifying itself to the location framework. 
+
+Before using the class, a primary connection must have already been
+established with the server.
+
+@see RPositionServer
+@publishedAll
+@released
+ */
+	{
+public:
+	IMPORT_C RPositioner();
+
+	IMPORT_C TInt Open(RPositionServer& aPosServer);
+	IMPORT_C TInt Open(RPositionServer& aPosServer,
+	                   TPositionModuleId aModuleId);
+	IMPORT_C TInt Open(RPositionServer& aPosServer,
+	                   const TPositionCriteriaBase& aCriteria);
+	IMPORT_C void Close();
+
+	IMPORT_C TInt SetRequestor(CRequestor::TRequestorType aType,
+	                           CRequestor::TRequestorFormat aFormat,
+	                           const TDesC& aData);
+	IMPORT_C TInt SetRequestor(const RRequestorStack& aRequestorStack);
+
+	IMPORT_C TInt SetUpdateOptions(const TPositionUpdateOptionsBase& aPosOption);
+	IMPORT_C TInt GetUpdateOptions(TPositionUpdateOptionsBase& aPosOption) const;
+
+	IMPORT_C void GetLastKnownPosition(TPositionInfoBase& aPosInfo,
+	                                   TRequestStatus& aStatus) const;
+	IMPORT_C void NotifyPositionUpdate(TPositionInfoBase& aPosInfo,
+	                                   TRequestStatus& aStatus) const;
+
+protected:
+	IMPORT_C virtual void ConstructL();
+	IMPORT_C virtual void Destruct();
+    IMPORT_C virtual TAny* ExtendedInterface(TInt aFunctionNumber, TAny* aPtr1, TAny* aPtr2);
+
+private:
+	void SetRequestorImplL(const RRequestorStack& aRequestorStack) const;
+	
+public:
+	TInt OpenImpl(RPositionServer& aPosServer, TPositionModuleId aModuleId, const TPositionCriteriaBase& aCriteria, TBool aOpenedUsingModuleId);
+private:
+	/** A pointer to a container that holds pointer descriptors, needed to point
+	to the clients request data during asynchronous requests */
+	CPositioningPtrHolder* iPtrHolder;
+	/** Unused variable for future expansion. */
+	TAny* iReserved;
+	};
+
+
+#include <lbs.inl>
+
+#endif // __LBS_H__