devicediagnostics/devdiagapp/inc/devdiagruntimereqsinfo.h
changeset 0 3ce708148e4d
child 22 9360ca28b668
--- /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