diff -r 3dcb815346df -r 4096754ee773 localconnectivityservice/locod/src/locodaemon.cpp --- a/localconnectivityservice/locod/src/locodaemon.cpp Thu Aug 19 10:46:39 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,188 +0,0 @@ -/* -* Copyright (c) 2006 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: Daemon class implementation. -* -*/ - - -#include - -#include -#include -#include - -#include "locodaemon.h" -#include "locodserviceman.h" -#include "utils.h" -#include "debug.h" - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// NewLC -// --------------------------------------------------------------------------- -// -CLocoDaemon* CLocoDaemon::NewLC() - { - CLocoDaemon* self = new (ELeave) CLocoDaemon(); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -// --------------------------------------------------------------------------- -// C++ destrctor -// --------------------------------------------------------------------------- -// -CLocoDaemon::~CLocoDaemon() - { - FeatureManager::UnInitializeLib(); - Cancel(); - iSystemPS.Close(); - delete iServiceMan; - iBearers.ResetAndDestroy(); - iBearers.Close(); - REComSession::FinalClose(); - TRACE_FUNC - } - -// --------------------------------------------------------------------------- -// Called when the status of system pubsub keys are -// changed. Normally this is called after the system boot. -// --------------------------------------------------------------------------- -// -void CLocoDaemon::RunL() - { - TRACE_INFO((_L(" RunL %d"), iStatus.Int())) - if (iStatus == KErrNone) - { - iSystemPS.Subscribe(iStatus); - SetActive(); - - TRACE_INFO((_L(" [SYSTEM] prev %d"), iSystemState)) - LEAVE_IF_ERROR(iSystemPS.Get(iSystemState)); - TRACE_INFO((_L(" [SYSTEM] now %d"), iSystemState)) - - if (iSystemState == ESwStateNormalRfOn || - iSystemState == ESwStateNormalRfOff || - iSystemState == ESwStateCharging || - iSystemState == ESwStateNormalBTSap) - { // System is up, construct service man and load bearers. - if(!iServiceMan) - { - iServiceMan = CLocodServiceMan::NewL(); - } - if (!iBearers.Count()) - { - LoadBearesL(); - } - } - /* - ESwStateShuttingDown and ESWStateShuttingDown event is received when - the device is about to shut down - */ - else if (iSystemState == ESwStateShuttingDown) - { - TRACE_INFO((_L(" [SYSTEM] Shuting down and deleting"))) - delete iServiceMan; - iServiceMan = NULL; - iBearers.ResetAndDestroy(); - return; - } - } - RProcess::Rendezvous(KErrNone); - } - -// --------------------------------------------------------------------------- -// CActive method cancel listening pubsub keys -// --------------------------------------------------------------------------- -// -void CLocoDaemon::DoCancel() - { - TRACE_FUNC - iSystemPS.Cancel(); - } - -// --------------------------------------------------------------------------- -// CActive method -// --------------------------------------------------------------------------- -// -TInt CLocoDaemon::RunError(TInt /*aReason*/) - { - TRACE_FUNC - return KErrNone; - } - -// --------------------------------------------------------------------------- -// C++ Constructor -// --------------------------------------------------------------------------- -// -CLocoDaemon::CLocoDaemon() : CActive(CActive::EPriorityStandard) - { - CActiveScheduler::Add(this); - TRACE_FUNC_THIS - } - -// --------------------------------------------------------------------------- -// 2nd phase construction -// --------------------------------------------------------------------------- -// -void CLocoDaemon::ConstructL() - { - FeatureManager::InitializeLibL(); - LEAVE_IF_ERROR(iSystemPS.Attach(KPSUidStartup, KPSGlobalSystemState)); - iStatus = KRequestPending; - SetActive(); - TRequestStatus* sta = &iStatus; - User::RequestComplete(sta, KErrNone); - TRACE_FUNC - } - -// --------------------------------------------------------------------------- -// LoadBearesL Loads the bearer plug ins -// --------------------------------------------------------------------------- -// -void CLocoDaemon::LoadBearesL() - { - TRACE_FUNC_ENTRY - TRACE_INFO((_L("Load interface 0x%08X"), KLOCODBEARERINTERFACEUID)) - const TUid KBearerPluginInterface = TUid::Uid(KLOCODBEARERINTERFACEUID); - RImplInfoPtrArray implementations; - const TEComResolverParams noResolverParams; - REComSession::ListImplementationsL(KBearerPluginInterface, - noResolverParams, - KRomOnlyResolverUid, - implementations); - CleanupResetDestroyClosePushL(implementations); - const TUint count = implementations.Count(); - TRACE_INFO((_L(" Bearer count = %d"), count)) - for ( TUint ii = 0 ; ii < count ; ++ii ) - { - CImplementationInformation* impl = implementations[ii]; - TRACE_INFO((_L("Bearer: feature %d, name '%S', ROM only %d"), - impl->ImplementationUid().iUid, &(impl->DisplayName()), impl->RomOnly())) - if (FeatureManager::FeatureSupported(impl->ImplementationUid().iUid)) - { - TRACE_INFO((_L("Feature found"))) - TLocodBearerPluginParams params(impl->ImplementationUid(), *iServiceMan); - CLocodBearerPlugin* bearer = CLocodBearerPlugin::NewL(params); - CleanupStack::PushL(bearer); - iBearers.AppendL(bearer); - CleanupStack::Pop(bearer); - } - } - CleanupStack::PopAndDestroy(&implementations); - TRACE_FUNC_EXIT - } -