locationtriggering/ltmovementdetectionpluginapi/inc/lbtmovementdetector.h
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationtriggering/ltmovementdetectionpluginapi/inc/lbtmovementdetector.h	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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:  Declaration of Movement Detection API
+*
+*/
+
+
+#ifndef C_LBTMOVEMENTDETECTOR_H
+#define C_LBTMOVEMENTDETECTOR_H
+
+#include <e32base.h>
+#include "lbtmovementdetector.hrh"
+
+const TUid KMovementDetectorPlugInInterfaceUid = {KMovementDetectionPlugInInterfaceId};
+  
+  
+ /**
+ *  Observer interface for getting notifications from movement detector @ref CMovementDetector.
+ *
+ *  Classes interested in getting notifications when a terminal is moving
+ *  must implement this interface. 
+ *
+ *  @lib movementdetector.lib
+ *  @since  S60 v4.0
+ */
+class MLbtMovementObserver
+	{
+public:
+
+    /**
+    *  Enumeration for different observer events that are notified through
+    *  @ref MMovementObserver.
+    */
+	enum TMovementObserverEvent
+		{
+		EEventMovement = 1,     /** Movement detector senses movement */
+		EEventDetectorOffline,  /** Movement detector has gone offline */
+		EEventDetectorFailed,   /** Movement detector has failed */
+		EEventDetectorOnline,   /** Movement detector has gone online */
+		EEventAccuracyChanged   /** Change in accuracy that movement detector promises */
+		};
+		
+    /**
+     * An observer callback to handle notification event. This is called when movement
+     * detector senses movement.
+     *
+     * @since S60 TACO
+     * @param aEvent Eventcode for an event that took place. Refer to @p TMovementObserverEvent
+     */
+	void virtual HandleDetectorNotification(const TMovementObserverEvent aEvent) = 0;
+	
+	};
+
+
+/**
+ *  ECom interface definition for movement detectors.
+ *
+ *  All movement detector implementations must derive from and implement this interface.
+ *  The interface defines basic operations that all movement detectors must support. Movement
+ *  detector report back movement observers thourgh an interface @ref MMovementObserver.
+ *
+ *  Supported use cases:
+ *  - Load movement detector.
+ *  - Unload movement detector.
+ *  - Request notification about movement detector events.
+ *  - Remove notification request.
+ *
+ *  @lib movementdetector.lib
+ *  @since S60 TACO
+ */
+class CLbtMovementDetector : public CBase
+    {
+
+public:
+
+    /**
+     * Loads a movement detector and initalises it. Detector does not start running until
+     * a call to @p RequestNotificationL().
+     *
+     * @since S60 TACO
+     */
+    IMPORT_C static CLbtMovementDetector* NewL();
+
+    /**
+     * Unloads this movement detector.
+     *
+     * @since S60 TACO
+     */
+    IMPORT_C virtual ~CLbtMovementDetector();
+
+    /**
+     * Request notification for movement. This registers an object as an observer to
+     * movement notifications as well as .
+     *
+     * @since S60 TACO
+     * @param aObserver An observer to be registered. Object must implement @ref MMovementObserver
+     *
+     * @param aSleepDuration Time duration during which movement detection should listen for movement
+     */
+    IMPORT_C virtual void RequestNotificationL( MLbtMovementObserver* aObserver,
+                                                    TInt aSleepDuration) = 0;
+
+    /**
+     * Request removal of movement notification request.
+     *
+     * @since S60 TACO
+     */
+    IMPORT_C virtual void StopNotification() = 0;
+
+        
+
+private: // data
+
+
+    /**
+     * Instance identifier key
+     */
+     TUid iDtor_ID_Key;
+    };
+
+
+#endif // C_MOVEMENTDETECTOR_H