diff -r 000000000000 -r 9cfd9a3ee49c networkprotocolmodules/privacyprotocolmodule/PrivacyProtocolModule/src/privacyshutdown.cpp --- /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 +#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; + }