diff -r 000000000000 -r 4e1aa6a622a0 psmservices/psmserver/src/client/psmclientimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/psmservices/psmserver/src/client/psmclientimpl.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,184 @@ +/* +* Copyright (c) 2007 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: Power save mode client class +* +*/ + + +#include +#include "psmclientimpl.h" +#include "psmsettingsimpl.h" +#include "psmclientactive.h" +#include "psmtrace.h" + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::CPsmClientImpl +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CPsmClientImpl::CPsmClientImpl( MPsmClientObserver& aObserver ) : + iObserver( aObserver ) + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::CPsmClientImpl()" ) ) ); + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::CPsmClientImpl - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::ConstructL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +void CPsmClientImpl::ConstructL() + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::ConstructL()" ) ) ); + + // Connect to PSM server + User::LeaveIfError( iPsmServer.Connect() ); + + // Create an instance of settings provider + iSettings = new ( ELeave ) CPsmSettingsImpl( iPsmServer ); + + // Create active object + iActive = new ( ELeave ) CPsmClientActive( iObserver ); + + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::ConstructL - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::~CPsmClientImpl +// Destructor +// ----------------------------------------------------------------------------- +// +CPsmClientImpl::~CPsmClientImpl() + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::~CPsmClientImpl()" ) ) ); + + if ( iActive->IsActive() ) + { + CancelPowerSaveModeChange(); + } + + if ( iActive ) + { + delete iActive; + iActive = NULL; + } + + if ( iSettings ) + { + delete iSettings; + iSettings = NULL; + } + + iPsmServer.Close(); + + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::~CPsmClientImpl - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::ChangePowerSaveMode +// ----------------------------------------------------------------------------- +// +void CPsmClientImpl::ChangePowerSaveMode( const TInt aPsmMode ) + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::ChangePowerSaveMode()" ) ) ); + + if ( iActive->IsActive() ) + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::ChangePowerSaveMode() - Already active!" ) ) ); + iActive->Cancel(); + } + + // Send asynchronous message and set this object to active + iPsmServer.SendReceiveAsync( + EPsmServerNotifyModeChange, + TIpcArgs( aPsmMode ), + iActive->RequestStatus() ); + + iActive->SetActive(); + + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::ChangePowerSaveMode - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::CancelPowerSaveModeChange +// ----------------------------------------------------------------------------- +// +void CPsmClientImpl::CancelPowerSaveModeChange() + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::CancelPowerSaveModeChange()" ) ) ); + + if ( iActive->IsActive() ) + { + // Send cancel asynchronous message + iPsmServer.SendReceiveSync( EPsmServerCancelModeChange, TIpcArgs() ); + } + + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::CancelPowerSaveModeChange - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::RequestPowerSaveModeNotification +// ----------------------------------------------------------------------------- +// +void CPsmClientImpl::RequestPowerSaveModeNotification() + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::RequestPowerSaveModeNotification()" ) ) ); + + if ( iActive->IsActive() ) + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::RequestPowerSaveModeNotification() - Already active!" ) ) ); + iActive->Cancel(); + } + + // Send asynchronous message and set this object to active + iPsmServer.SendReceiveAsync( + EPsmServerModeChangeNotificationRequest, + TIpcArgs(), + iActive->RequestStatus() ); + + iActive->SetActive(); + + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::RequestPowerSaveModeNotification - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::CancelPowerSaveModeNotificationRequest +// ----------------------------------------------------------------------------- +// +void CPsmClientImpl::CancelPowerSaveModeNotificationRequest() + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::CancelPowerSaveModeNotificationRequest()" ) ) ); + + if ( iActive->IsActive() ) + { + // Send cancel asynchronous message + iPsmServer.SendReceiveSync( EPsmServerCancelModeChangeNotificationRequest, TIpcArgs() ); + } + + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::CancelPowerSaveModeNotificationRequest - return" ) ) ); + } + +// ----------------------------------------------------------------------------- +// CPsmClientImpl::PsmSettings +// ----------------------------------------------------------------------------- +// +CPsmSettings& CPsmClientImpl::PsmSettings() const + { + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::PsmSettings()" ) ) ); + COMPONENT_TRACE( ( _L( "PSM Client - CPsmClientImpl::PsmSettings - return" ) ) ); + return *iSettings; + } + +// End of file