networkprotocolmodules/privacyprotocolmodule/PrivacyProtocolModule/src/privacyshutdown.cpp
changeset 0 9cfd9a3ee49c
child 40 18280709ae43
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/networkprotocolmodules/privacyprotocolmodule/PrivacyProtocolModule/src/privacyshutdown.cpp	Tue Feb 02 01:50:39 2010 +0200
@@ -0,0 +1,124 @@
+// Copyright (c) 2007-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:
+//
+
+#include <e32debug.h>
+#include "lbsdevloggermacros.h"
+#include "lbsrootapi.h"
+#include "privacyshutdown.h"
+
+
+/**
+Static public constructor
+*/
+CPrivacyShutdown* CPrivacyShutdown::NewL()
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::NewL() Begin\n");
+	CPrivacyShutdown* self = new (ELeave) CPrivacyShutdown();
+	CleanupStack::PushL(self);
+	self->ConstructL();
+	CleanupStack::Pop(self);
+	LBSLOG(ELogP1, "CPrivacyShutdown::NewL() End\n");
+	return self;
+	}
+
+
+/** 
+Default constructor, set the timer to standard priority by default and
+add timer to active scheduler.
+*/	
+CPrivacyShutdown::CPrivacyShutdown() : CTimer(CActive::EPriorityStandard),
+	iState(EShutdownStateIdle)
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::CPrivacyShutdown() Begin\n");
+	CActiveScheduler::Add(this);
+	LBSLOG(ELogP1, "CPrivacyShutdown::CPrivacyShutdown() End\n");
+	}
+
+
+/** 
+Default destructor, cancel any outstanding request of timer active object
+*/	
+CPrivacyShutdown::~CPrivacyShutdown()
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::~CPrivacyShutdown() Begin\n");
+	Cancel();
+	LBSLOG(ELogP1, "CPrivacyShutdown::~CPrivacyShutdown() End\n");
+	}
+
+
+/** 
+Call CTimer base class to construct the shut down timer
+*/	
+void CPrivacyShutdown::ConstructL()
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::ConstructL() Begin\n");
+	// call the base class version
+	CTimer::ConstructL();
+	LBSLOG(ELogP1, "CPrivacyShutdown::ConstructL() End\n");
+	}
+
+
+/** 
+Start the timer by specifying the shut down delay to issue a time request 
+
+@param aDelay Time interval in micro seconds
+*/	
+void CPrivacyShutdown::Start(const TTimeIntervalMicroSeconds32 aDelay)
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::Start() Begin\n");
+	iState = EShutdownStateTimerStarted;
+	After(aDelay);
+	LBSLOG(ELogP1, "CPrivacyShutdown::Start() End\n");
+	}
+
+/**
+Cancel the outstanding timeout request.
+*/
+void CPrivacyShutdown::DoCancel()
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::DoCancel() Begin\n");
+	iState = EShutdownStateIdle;
+	LBSLOG(ELogP1, "CPrivacyShutdown::DoCancel() End\n");
+	}
+	
+
+/** 
+Inherited from CActive, called when timer expires.
+Shutdown LBS.
+*/	
+void CPrivacyShutdown::RunL()
+	{
+	LBSLOG(ELogP1, "CPrivacyShutdown::RunL() Begin\n");
+
+	iState = EShutdownStateShutdownRequested;
+
+	RLbsSystemController systemController;
+	RProcess process;
+	systemController.OpenL(process.SecureId());
+	CleanupClosePushL(systemController);
+	
+	systemController.RequestSystemCloseDown(ETrue);
+	
+	CleanupStack::PopAndDestroy(&systemController);
+	
+	LBSLOG(ELogP1, "CPrivacyShutdown::RunL() End\n");
+	}
+
+/** Return the current state of the shutdown timer.
+*/
+CPrivacyShutdown::TShutdownState CPrivacyShutdown::State() const
+	{
+	return iState;
+	}