diff -r 000000000000 -r 3ce708148e4d devicediagnostics/devdiagapp/inc/devdiagruntimereqsinfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/devicediagnostics/devdiagapp/inc/devdiagruntimereqsinfo.h Thu Dec 17 08:40:12 2009 +0200 @@ -0,0 +1,269 @@ +/* +* 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: . +* +*/ + + +#ifndef DEVDIAGRUNTIMEREQSINFO_H +#define DEVDIAGRUNTIMEREQSINFO_H + +// System Include Files +#include // CActive +#include // TInt, TUint, TInt64 +#include // TTime, TCallBack +#include // RTelServer +#include // CTelephony Packages +#include // RMobilePhone + +// Forward Declarations +class RFs; +class RDiagResultsDatabase; + +/** + * Phone Doctor Application Runtime Requirements Information + * This class checks the current status of diagnostics requirements, + * which must be satisfied before the Phone Doctor Application may run tests. + * + * @lib euser.lib + * @lib centralrepository.lib + */ +class CDevDiagRuntimeReqsInfo : public CActive + { + +public: // Data Types + + /** + * Error codes indicating the results of the runtime requirements checks. + */ + enum TResult + { + EResultOk = 0, + EResultErrLowDisk, + EResultErrLowBattery, + }; + + +public: // New Functions + + /** + * Two-phased constructor. + * + * @param aFs A reference to a connected file system object. + * @param aDb A reference to a connection results database session. + * @param aCallback A general callback that indicates when checking the + * runtime requirements has finished. + * @return A pointer to a new instance of CDevDiagRuntimeReqsInfo. + */ + static CDevDiagRuntimeReqsInfo* NewL( RFs& aFs, + RDiagResultsDatabase& aDb, + TCallBack aCallback ); + + /** + * Destructor. + */ + virtual ~CDevDiagRuntimeReqsInfo(); + + /** + * Checks if the diagnostics runtime requirements are satisfied. This + * is an asynchronous request which will complete with a callback. + * + * @param aResumingTests If ETrue, then runtime checks which do not apply + * to resumed test execution will be skipped. + */ + void CheckRuntimeRequirementsL( TBool aResumingTests ); + + /** + * Returns the runtime requirements result, which indicates if the runtime + * requirements were satisfied. + * + * @return The runtime requirements result. + */ + TResult Result() const; + + /** + * Displays the dialog associated with the result of the runtime checks. + * + * @return The command the dialog is dismissed with. + */ + TInt DisplayDialogL() const; + + +private: // Data Types + + /** + * The state of the runtime requirements. This is used to handle + * completion of the asynchronous requests. + */ + enum TState + { + EStateInitial = 0, + EStateCheckingBattery, + EStateComplete + }; + + +private: // New Functions + + /** + * C++ constructor. + * + * @param aFs A reference to a connected file system object. + * @param aDb A reference to a connection results database session. + * @param aCallback A general callback that indicates when checking the + * runtime requirements has finished. + */ + CDevDiagRuntimeReqsInfo( RFs& aFs, + RDiagResultsDatabase& aDb, + TCallBack aCallback ); + + /** + * Two-phased constructor. + */ + void ConstructL(); + + /** + * Reads the runtime requirements values from the central repository and + * stores them to the object. + */ + void ReadCentralRepositoryValuesL(); + + + /** + * Checks if there is enough free estimated disk space to log test + * results. Updates the member data with the disk space information. + */ + void CheckDiskSpaceL(); + + /** + * Checks if the phone's battery level is adequate to run tests. Updates + * the member data with the battery level information. + */ + void CheckBatteryLevelL(); + + /** + * This is a utility function to handle the common checking for completion + * of the runtime requirements checks. If a runtime check failed, this + * will set the object active so that the runtime checking completes. + * + * @return ETrue if checking is done, EFalse if checking should continue. + */ + TBool CheckCompletion(); + + /** + * Utility function to display a message dialog associated with the + * specified resource. + * + * @param aResource The resource of the message query dialog to display. + * @return The button pressed to dismiss the dialog. + */ + static TInt DisplayMessageQueryDialogL( TInt aResource ); + + +private: // From base class CActive + + /** + * From CActive. + * This function is called when an active request completes. + */ + virtual void RunL(); + + /** + * From CActive. + * This function is called to cancel any outstanding asynchronous + * requests. + */ + virtual void DoCancel(); + + +private: // Data + + /** + * A reference to a connected file server session, used to check the disk + * space. + */ + RFs& iFs; + + /** + * A reference to a connected results database session, used to get + * information about the maximum executions. + */ + RDiagResultsDatabase& iDb; + + /** + * A general callback that indicates when checking the runtime + * requirements has finished. + */ + TCallBack iCallback; + + /** + * A telephony object used to check some of the runtime requirements + * checks. + * Own. + */ + CTelephony* iTelephony; + + /** + * A battery info object used to satisfy the runtime requirement check for + * minimum battery level. + */ + CTelephony::TBatteryInfoV1 iBatteryInfo; + + /** + * A package object for the battery information. + */ + CTelephony::TBatteryInfoV1Pckg iBatteryInfoPackage; + + /** + * Indicates if the runtime requirements are being checked for resumed + * test execution. If ETrue, then runtime checks which do not apply to + * resumed test execution will be skipped. + */ + TBool iResumingTests; + + /** + * The runtime requirements status, which will contain error code values + * to indicate if the runtime requirements are satisfied. + */ + TResult iResult; + + /** + * The state, which is used when handling asynchronous requests. + */ + TState iState; + + /** + * The current battery level. + */ + TInt iBatteryLevel; + + /** + * The minimum required battery level. + */ + TInt iMinBatteryLevel; + + /** + * The current amount of free disk space (in bytes). + */ + TInt64 iDiskSpaceFree; + + /** + * The minimum required free disk space (in bytes). + */ + TInt64 iMinDiskSpaceFree; + + + }; + +#endif // DEVDIAGRUNTIMEREQSINFO_H