--- /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 <e32base.h> // CActive
+#include <e32def.h> // TInt, TUint, TInt64
+#include <e32std.h> // TTime, TCallBack
+#include <etel.h> // RTelServer
+#include <etel3rdparty.h> // CTelephony Packages
+#include <etelmm.h> // 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