// 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 the License "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
@internalTechnology
@released
*/
#ifndef __LBS_SYSTEMSTARTER_H__
#define __LBS_SYSTEMSTARTER_H__
#include <e32base.h>
#include <e32def.h>
#include <e32cmn.h>
#include <e32std.h>
#include <e32property.h>
#include "lbstimer.h"
class CLbsSystemStarter;
const TInt KDefaultStartupTimeout = 30;
// Responses to a request to start the LBS system
enum
{
ELbsStartupSuccess,
ELbsStartupFail,
ELbsStartupRootNotFound
};
// Responses to a request to close down the LBS system
enum
{
ELbsCloseDownRejected,
ELbsCloseDownInProgress,
ELbsCloseDownComplete,
ELbsCloseDownRootNotFound
};
class RLbsSystemController
{
public:
enum
{
ELbsCloseDown = 1,
ELbsCloseDownAndConfirm,
ELbsResetOnly, // Just tell the process to clear the cache etc. rather than close down completely
ELbsTotalCloseDown // Close the LBS Root process as well.
};
public:
IMPORT_C static void InitializeL();
IMPORT_C static void ShutDownL();
IMPORT_C RLbsSystemController();
IMPORT_C void OpenL(TUid aModuleId);
IMPORT_C void Close();
IMPORT_C void NotifySystemStartRequest(TRequestStatus& aStatus);
IMPORT_C TInt RequestSystemStartup();
IMPORT_C void SystemStartComplete(TInt aStartupResult);
IMPORT_C void NotifySystemCloseDownRequest(TRequestStatus& aStatus);
IMPORT_C TInt RequestSystemCloseDown();
IMPORT_C TInt RequestSystemCloseDown(TBool aNoWaitForResponse);
IMPORT_C void SystemCloseDownResponse(TInt aResponse);
IMPORT_C TInt GetCloseDownType();
IMPORT_C void RequestSystemReset();
IMPORT_C TInt RequestCompleteCloseDown();
TInt GetStartupData(TDes8& aData);
private:
TBool CheckLbsRootProcessIsUp();
private:
RProperty iLbsStartupRequest;
RProperty iLbsStartupComplete;
RProperty iLbsCloseDownRequest;
RProperty iLbsCloseDownComplete;
};
/*
*
* Observer used to pass system startup requests to the LBS Root process
*/
class MLbsSystemStartupObserver
{
public:
virtual void OnStartupRequest() = 0;
};
/*
* Active object which monitors the property which signals
* when startup is required.
*/
class CLbsSystemStartupRequestHandler : public CActive
{
public:
IMPORT_C static CLbsSystemStartupRequestHandler* NewL(
MLbsSystemStartupObserver* aObserver,
TUid aProcessUid);
IMPORT_C ~CLbsSystemStartupRequestHandler();
IMPORT_C void ConfirmStartup(TInt aStartupStatus);
protected:
CLbsSystemStartupRequestHandler(MLbsSystemStartupObserver* aObserver);
void ConstructL(TUid aProcessUid);
protected: // From CActive
void RunL();
void DoCancel();
private:
MLbsSystemStartupObserver* iObserver;
RLbsSystemController iLbsSystemController;
};
/*
*
* Observer used to pass system startup requests to the LBS Root process
*/
class MLbsSystemCloseDownObserver
{
public:
virtual void OnCloseDownRequest(TBool aConfirmCloseDownComplete) = 0;
virtual void OnResetRequest() = 0;
virtual void OnCompleteCloseDownRequest() = 0;
};
/*
* Active object which monitors the property which signals
* when closedown is required.
*/
class CLbsSystemCloseDownRequestHandler : public CActive
{
public:
IMPORT_C static CLbsSystemCloseDownRequestHandler* NewL(
MLbsSystemCloseDownObserver* aObserver,
TUid aProcessUid);
IMPORT_C ~CLbsSystemCloseDownRequestHandler();
IMPORT_C void ConfirmCloseDown(TInt aResponse);
protected:
CLbsSystemCloseDownRequestHandler(MLbsSystemCloseDownObserver* aObserver);
void ConstructL(TUid aProcessUid);
protected: // From CActive
void RunL();
void DoCancel();
private:
MLbsSystemCloseDownObserver* iObserver;
RLbsSystemController iLbsSystemController;
};
#endif //__LBS_SYSTEMSTARTER_H__