lbstest/lbstestproduct/lbsclock/src/ctlbsclockplugindata.cpp
changeset 0 9cfd9a3ee49c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lbstest/lbstestproduct/lbsclock/src/ctlbsclockplugindata.cpp	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,89 @@
+// Copyright (c) 2006-2009 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:
+// @file ctlbsclockplugindata.cpp
+// This is the cpp file which contains the
+// 
+//
+
+
+#include "ctlbsclockplugindata.h"
+
+
+CT_LbsClockPluginDataBusMonitor* CT_LbsClockPluginDataBusMonitor::NewL(MT_LbsClockPluginDataBusObserver* aObserver)
+	{
+	CT_LbsClockPluginDataBusMonitor* self = new(ELeave) CT_LbsClockPluginDataBusMonitor(aObserver);
+
+	return self;
+	}
+
+
+CT_LbsClockPluginDataBusMonitor::CT_LbsClockPluginDataBusMonitor(MT_LbsClockPluginDataBusObserver* aObserver)
+	:
+	CActive(CActive::EPriorityStandard),
+	iObserver(aObserver)
+	{
+	CActiveScheduler::Add(this);
+	}
+
+
+CT_LbsClockPluginDataBusMonitor::~CT_LbsClockPluginDataBusMonitor()
+	{
+	Cancel();
+	iProperty.Close();
+	}
+
+
+void CT_LbsClockPluginDataBusMonitor::StartMonitorL()
+	{
+	// Attach and subscribe to listen for data bus updates.
+	TInt err = iProperty.Attach(KUidSystemCategory, ELbsTestClockPluginOut);
+	User::LeaveIfError(err);
+   
+	iProperty.Subscribe(iStatus);
+	SetActive();
+	}
+	
+void CT_LbsClockPluginDataBusMonitor::CancelMonitor()
+	{
+	Cancel();
+	}
+	
+void CT_LbsClockPluginDataBusMonitor::RunL()
+	{
+	// Handle data change.
+	TInt err = iStatus.Int();
+	if (KErrNone == err)
+		{
+		TClockPluginDataOut pluginDataOut;
+		TPckg<TClockPluginDataOut> pluginDataOutPckg(pluginDataOut);
+
+		err = iProperty.Get(pluginDataOutPckg);
+		if (iObserver && (KErrNone == err))
+			{
+			// Handle the incoming data.
+			iObserver->HandleDataBusUpdateL(pluginDataOut);
+			}
+		}
+
+	// Restart monitor.
+	iProperty.Subscribe(iStatus);
+	SetActive();
+	}
+
+void CT_LbsClockPluginDataBusMonitor::DoCancel()
+{
+	iProperty.Cancel();
+}
+
+