/** Copyright (c) 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: HtiStartupWait implementation**/// INCLUDE FILES#include "HtiStartupWait.h"#include <HtiLogging.h>#include <e32property.h>#include <hal.h>#include <startupdomainpskeys.h>// CONSTANTSconst TInt KStateCheckInterval = 3000000; // microseconds// LOCAL CONSTANTS AND MACROS// MODULE DATA STRUCTURES// LOCAL FUNCTION PROTOTYPES// FORWARD DECLARATIONS// ============================= LOCAL FUNCTIONS ===============================// ----------------------------------------------------------------------------EXPORT_C CHtiStartupWait* NewStartupWait() { return new ( ELeave ) CHtiStartupWait(); }// ============================ MEMBER FUNCTIONS ===============================// ----------------------------------------------------------------------------TInt CHtiStartupWait::WaitForStartup( TInt aMaxWaitTime ) { TInt err = KErrNone; // Not relying on TTime as the time might change during OS startup. // Counting the time from nano ticks. TInt nTickPeriod; HAL::Get( HAL::ENanoTickPeriod, nTickPeriod ); HTI_LOG_FORMAT( "ENanoTickPeriod = %d", nTickPeriod ); TUint32 startTime = User::NTickCount(); TInt secsFromStart = 0; TInt state = ESwStateStartingUiServices; // TPSGlobalSystemState RProperty::Get( KPSUidStartup, KPSGlobalSystemState, state ); while ( state != ESwStateNormalRfOn && state != ESwStateNormalRfOff && secsFromStart < aMaxWaitTime ) { HTI_LOG_FORMAT( "HTI waiting for device to start: TPSGlobalSystemState = %d", state ); User::After( KStateCheckInterval ); secsFromStart = ( User::NTickCount() - startTime ) * nTickPeriod / 1000000; HTI_LOG_FORMAT( "Seconds from start %d", secsFromStart ); RProperty::Get( KPSUidStartup, KPSGlobalSystemState, state ); } if ( secsFromStart >= aMaxWaitTime ) { HTI_LOG_TEXT( "Max wait time exceeded" ); err = KErrTimedOut; } return err; }// End of File