devicediagnostics/diagplugins/DiagInternalMemoryPlugin/src/diaginternalmemoryplugin.cpp
changeset 18 7d11f9a6646f
parent 4 75a71fdb4c92
child 21 c707676bf59f
--- a/devicediagnostics/diagplugins/DiagInternalMemoryPlugin/src/diaginternalmemoryplugin.cpp	Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,596 +0,0 @@
-/*
-* 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:  Internal Memory Test Plugin
-*
-*/
-
-
-// CLASS DECLARATION
-#include "diaginternalmemoryplugin.h"
-
-// SYSTME INCLUDE FILES
-#include <featmgr.h>                    // feature manager for MMC support checking
-#include <features.hrh>
-//#ifndef RD_MULTIPLE_DRIVE
-#include <pathinfo.h>                   //PathInfo
-//#endif // RD_MULTIPLE_DRIVE
-#include <sysutil.h>                    //SysUtil
-#include <StringLoader.h>               // StringLoader
-
-#include <DiagTestObserver.h>           // MDiagTestObserver
-#include <DiagTestExecParam.h>          // TDiagTestExecParam
-#include <DiagResultsDbItemBuilder.h>   // CDiagResultsDbItemBuilder
-#include <DiagResultDetailBasic.h>      // CDiagResultDetailBasic
-#include <DiagFrameworkDebug.h>         // LOGSTRING
-#include <devdiaginternalmemorypluginrsc.rsg>
-
-#include "diaginternalmemoryplugin.hrh" // ADO & Platformization Changes
-
-#include <AknDialog.h> // ADO & Platformization Changes
-#include <aknmessagequerydialog.h>  // ADO & Platformization Changes
-#include <DiagCommonDialog.h>          // for EDiagCommonDialogConfirmCancelAll 
-#include <DiagEngineCommon.h> 
- 
-
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS 
-const TInt KDiagInternalMemoryStepsMaxCount = 3;   //total test steps
-_LIT( KText1, "PhoneDoctor Internal Memory Test" );
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ==============================
-
-// ========================= MEMBER FUNCTIONS ================================
-
-// ----------------------------------------------------------------------------
-// CDiagInternalMemoryPlugin::CDiagInternalMemoryPlugin()
-//
-// Constructor
-// ----------------------------------------------------------------------------
-//
-CDiagInternalMemoryPlugin::CDiagInternalMemoryPlugin( CDiagPluginConstructionParam* aParam )
-    :   CDiagTestPluginBase( aParam )
-    {
-    }
-
-
-// ---------------------------------------------------------------------------
-// CDiagInternalMemoryPlugin::NewL()
-//
-// Symbian OS default constructor
-// ---------------------------------------------------------------------------
-MDiagPlugin* CDiagInternalMemoryPlugin::NewL( TAny* aInitParams )
-    {
-    ASSERT( aInitParams );
-    LOGSTRING( "CDiagInternalMemory::NewL" );
-    
-
-    CDiagPluginConstructionParam* param = 
-            static_cast<CDiagPluginConstructionParam*>( aInitParams );    
-    CleanupStack::PushL( param );    
-    CDiagInternalMemoryPlugin* self = new( ELeave ) CDiagInternalMemoryPlugin (param);
-    CleanupStack::Pop( param );
-    
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self ); // self    
-    return self;
-    }
-
-
-
-// ---------------------------------------------------------------------------
-// CDiagInternalMemoryPlugin::ConstructL()
-//
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------
-void CDiagInternalMemoryPlugin::ConstructL()
-    {
-    LOGSTRING("CDiagInternalMemoryPlugin::ConstructL: Plugin created.");
-    idialogOn = EFalse;
-	idialogDismissed = EFalse;
-    BaseConstructL ( KDiagInternalMemoryPluginResourceFileName );            
-    }
-
-
-// ----------------------------------------------------------------------------
-// CDiagInternalMemoryPlugin::~CDiagInternalMemoryPlugin
-//
-// Destructor
-// ----------------------------------------------------------------------------
-CDiagInternalMemoryPlugin::~CDiagInternalMemoryPlugin()
-    {        
-    
-    }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagInternalMemoryPlugin::IsVisible()
-// ---------------------------------------------------------------------------
-TBool CDiagInternalMemoryPlugin::IsVisible() const
-    {
-    return ETrue;
-    }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagInternalMemoryPlugin::IsSupported()
-// ---------------------------------------------------------------------------
-TBool CDiagInternalMemoryPlugin::IsSupported() const
-    {
-    return ETrue;
-    }    
-
-        
-// ---------------------------------------------------------------------------
-// From MDiagTestPlugin
-// CDiagInternalMemoryPlugin::RunMode()
-// ---------------------------------------------------------------------------
-MDiagTestPlugin::TRunMode CDiagInternalMemoryPlugin::RunMode() const
-    {
-    return EAutomatic;
-    }
-
-
-
-
-// ---------------------------------------------------------------------------
-// From MDiagTestPlugin
-// CDiagInternalMemoryPlugin::TotalSteps()
-// ---------------------------------------------------------------------------
-TUint CDiagInternalMemoryPlugin::TotalSteps() const
-    {
-    return KDiagInternalMemoryStepsMaxCount;
-    }
-
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagInternalMemoryPlugin::GetPluginName
-// ---------------------------------------------------------------------------
-HBufC* CDiagInternalMemoryPlugin::GetPluginNameL( TNameLayoutType aLayoutType ) const
-    {
-    
-    switch ( aLayoutType )
-        {
-        case ENameLayoutListSingle:
-            return StringLoader::LoadL ( R_DIAG_LST_INTERNAL_MEMORY );
-            
-        case ENameLayoutHeadingPane:
-             return StringLoader::LoadL ( R_QTN_DIAG_MSG_TITLE_INTERNAL_MEMORY );
-        
-        case ENameLayoutPopupInfoPane:
-              return StringLoader::LoadL ( R_QTN_DIAG_MSG_INFO_INTERNAL_MEMORY );
-        
-        case ENameLayoutTitlePane:
-             return StringLoader::LoadL ( R_QTN_DIAG_TITLE_TEST_INTERNAL_MEMORY );
-        
-        case ENameLayoutListSingleGraphic:
-             return StringLoader::LoadL ( R_QTN_DIAG_LST_TEST_INTERNAL_MEMORY );            
-
-        default:
-            LOGSTRING2( "CDiagInternalMemoryPlugin::GetPluginNameL: "
-                L"ERROR: Unsupported layout type %d", aLayoutType )
-            __ASSERT_DEBUG( 0, User::Invariant() );
-            return StringLoader::LoadL ( R_DIAG_LST_INTERNAL_MEMORY );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// From MDiagPlugin
-// CDiagInternalMemoryPlugin::Uid
-// ---------------------------------------------------------------------------
-TUid CDiagInternalMemoryPlugin::Uid() const
-    {
-    return KDiagInternalMemoryPluginUid;
-    }
-
-    
-// ---------------------------------------------------------------------------
-// From CActive
-// CDiagInternalMemoryPlugin::RunL
-// ---------------------------------------------------------------------------
-void CDiagInternalMemoryPlugin::RunL()
-    {
-    
-    //report test progress     	    
-    if ( iCounter > 0 )
-        {
-        iCounter--;    
-        ReportTestProgressL( KDiagInternalMemoryStepsMaxCount - iCounter );
-        }     
-    	
-    // handle read or write action    	
-    switch ( iState )
-        {
-        case EWriting:                            
-    		if (idialogDismissed)
-	    		{
-	    		ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
-	    		LOGSTRING("CDiagExternalMediaCardPlugin::RunL dialogDismissed=EWriting");
-	    		//reset the var
-	    		idialogDismissed = EFalse;
-	    		return;
-	    		}
-            //check if write is okay
-            if ( iStatus == KErrNone )
-                {
-                LOGSTRING( "CDiagInternalMemory::RunL, write ok" );
-                iFile.Close();
-					
-                // read test			
-                TInt errorCodeOpen = iFile2.Open( iFs, iFileName, EFileRead );				
-                if ( errorCodeOpen!=KErrNone )
-                    {
-                    LOGSTRING( "CDiagInternalMemory::RunL,iFile2 open fail" );				
-                    ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
-                    return;
-                    }			    
-                LOGSTRING( "CDiagInternalMemory::RunL, iFile2 open okay" );
-				
-                // Start read test
-                SetState( EReading ); 
-                iBufr.Zero();
-                iFile2.Read( iBufr, iStatus );
-         				
-                SetActive();                
-                
-                }
-            else   //write fail
-                {
-                LOGSTRING( "CDiagInternalMemory::RunL, write fail" );	
-                //set test result fail
-                ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );       			
-                }
-            break;
-    			
-        case EReading:        
-    		if (idialogDismissed)
-	    		{
-	    		ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
-	    		LOGSTRING("CDiagExternalMediaCardPlugin::RunL dialogDismissed=EReading");
-	    		//reset the var
-	    		idialogDismissed = EFalse;	    		
-	    		return;
-	    		}
-            //check if read is okay
-            if( iStatus == KErrNone )
-                {
-                LOGSTRING( "CDiagInternalMemory::RunL, read okay" );
-								
-                //compare data and set test result				
-                CDiagResultsDatabaseItem::TResult result = ( iBufr == iBufw )? 
-                                                            CDiagResultsDatabaseItem::ESuccess
-				                                            : CDiagResultsDatabaseItem::EFailed;
-                ReportResultToPluginL( result );
-                LOGSTRING2( "CDiagInternalMemory::RunL,test result %d", result );
-                }
-            else  //read fail
-                {
-                LOGSTRING( "CDiagInternalMemory::RunL, read fail" );  		
-                //set result fail
-                ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
-                }
-            break;
-        default:
-            LOGSTRING( "CDiagInternalMemory::RunL, default case" );
-            //set result fail
-            ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );       			
-            break;
-        }           
-    }    
-
-
-// ---------------------------------------------------------------------------
-// From CActive
-// CDiagInternalMemoryPlugin::DoCancel
-// ---------------------------------------------------------------------------
-void CDiagInternalMemoryPlugin::DoCancel()
-    {     
-    switch ( iState )
-        {
-        case EReading:
-            iFile.ReadCancel(iStatus);
-            break;
-            
-        default:
-            // No action needed
-            break;
-        }    
-    }    
-
-
-// ---------------------------------------------------------------------------
-// From CDiagTestPluginBase
-// CDiagInternalMemoryPlugin::DoRunTestL()
-// ---------------------------------------------------------------------------
-void CDiagInternalMemoryPlugin::DoRunTestL()
-    {
-    TInt aButtonId; // ADO & Platformization Changes
-    iCounter = KDiagInternalMemoryStepsMaxCount;
-    // ADO & Platformization Changes
-    
-    ShowMessageQueryL(R_MESSAGEQUERY_TITLE_INTERNALMEMORY,aButtonId);
-    
-    if(aButtonId == ECBACmdCancel)
-    	{
-    	ReportResultToPluginL( CDiagResultsDatabaseItem::ESkipped );
-        return;
-    	}
-    
-    if(aButtonId == ECBACmdSkip)
-    	{
-		TInt confirmResult = 0;
-            
-        CAknDialog* dlg = ExecutionParam().Engine().
-        CreateCommonDialogLC( EDiagCommonDialogConfirmSkipAll, NULL );
-    
-        if ( !RunWaitingDialogL( dlg, confirmResult ) )
-            {
-            return;
-            }
-        
-        if ( confirmResult)
-            {
-            return;
-            }
-    	}
-    // Changes Ends
-    
-    
-    //Start my test
-    
-    ShowProgressNoteL();
-    
-    SetState( EIdle );
-        	            	  
-    //check the drive number for internal memory
-    TInt phoneMemoryDriveNum( 0 );
-    // If path length is zero, driveLetterBuf will be empty.
-    TBuf<1> driveLetterBuf = PathInfo::PhoneMemoryRootPath ().Left( 1 );
-
-    TInt errorCode( KErrNotFound );
-    if ( driveLetterBuf.Length() > 0 )
-        {
-        LOGSTRING( "CDiagInternalMemory::DoRunTestL, driveLetterBuf ok" );
-        TChar driveLetter = driveLetterBuf[0];
-        errorCode = RFs::CharToDrive( driveLetter, phoneMemoryDriveNum );
-        }
-    else
-        {
-        LOGSTRING( "CDiagInternalMemory::DoRunTestL, driveLetterBuf empty" );
-        }
-            
-    if ( errorCode != KErrNone )
-        {        
-        LOGSTRING( "CDiagInternalMemory::DoRunTestL, no drive" );               	
-        ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
-        return;       			
-       	}
-        	                  
- 
-    User::LeaveIfError( iFs.Connect() );  // Connects a client process to the fileserver
-    LOGSTRING( "CDiagInternalMemory::DoRunTestL, iFs connect" );
-   // check disk space            		       		
-    if ( SysUtil::DiskSpaceBelowCriticalLevelL( &iFs, iBufw.MaxLength(), phoneMemoryDriveNum ) )
-        {
-        //disk is out of memory
-        LOGSTRING( "CDiagInternalMemory::DoRunTestL, out of memory" );
-        ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
-        return;	
-        }
-    	 
-    //Try to create a temp file for test	    		
-    TFileName filePath;
-    TDriveUnit unit( phoneMemoryDriveNum );
-    errorCode = iFs.CreatePrivatePath( unit );
-		
-    if ( ( errorCode != KErrNone ) && ( errorCode != KErrAlreadyExists ) )
-        {
-        LOGSTRING( "CDiagInternalMemory::DoRunTestL, CreatePrivatePath fail" );
-        ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );	
-        return;
-        }
-			
-    iFs.PrivatePath( filePath );
-    filePath.Insert( 0, unit.Name() );
-								    		
-    errorCode = iFile.Temp( iFs, filePath, iFileName, EFileWrite );
-    LOGSTRING2( "CDiagInternalMemory::DoRunTestL, Temp err = %d", errorCode );
-											
-    if ( errorCode != KErrNone )
-        {
-        //Temp file creation failed
-        ReportResultToPluginL( CDiagResultsDatabaseItem::EFailed );
-        return;
-        }
-    		
-    // Temp file created, start the write test					
-							
-    iBufw.Zero();
-    iBufw.Copy( KText1 );
-			
-    SetState( EWriting ); 
-		
-    iFile.Write( iBufw, iStatus );
-    SetActive();        
-    
-    //report test progress     	    
-    if ( iCounter > 0 )
-        {
-        iCounter--;    
-        ReportTestProgressL( KDiagInternalMemoryStepsMaxCount - iCounter );        
-        }  
-    }
-
-
-//---------------------------------------------------------------------------
-// CDiagInternalMemoryPlugin::DoStopAndCleanupL
-//---------------------------------------------------------------------------
-void CDiagInternalMemoryPlugin::DoStopAndCleanupL()
-    {
-    switch ( iState )
-        {
-        case EWriting: 
-            iFile.Close();
-            iFs.Delete( iFileName ); // delete the file created by Temp									
-            iFs.Close();
-            break;
-    		
-        case EReading:
-            iFile2.Close();	
-            iFs.Delete( iFileName ); // delete the file created by Temp						
-            iFs.Close();   		
-            break;
-    		 
-        case EIdle:
-            iFs.Close();
-            break;
-    	    
-        default:
-            ASSERT ( EFalse );      //this should never happen
-            break;
-        }
-        
-	if ( iWaitDialog )
-	delete iWaitDialog;   
-    idialogOn = EFalse;
-	idialogDismissed = EFalse;  
-       
-    SetState( EIdle );
-    }
-
-
-// ----------------------------------------------------------------------------
-// CDiagExternalMediaCardPlugin::ShowProgressNoteL
-//
-// Progress Note
-// ----------------------------------------------------------------------------
-
-void CDiagInternalMemoryPlugin::ShowProgressNoteL()
-    {
-		if ( iWaitDialog )
-		    {
-		    delete iWaitDialog;
-		    iWaitDialog = NULL;
-		    }
-
-		                    
-		// WAIT NOTE DIALOG
-		iWaitDialog = new (ELeave) CAknWaitDialog(
-									(REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), 
-									ETrue);
-
-		iWaitDialog->PrepareLC(R_INTMEM_PLUGIN_WAIT_NOTE);
-		iWaitDialog->SetCallback(this);
-		iWaitDialog->RunLD();
-		idialogOn = ETrue;
-		LOGSTRING("CDiagInternalMemoryPlugin::ShowProgressNoteL()");
-
-    }
-
-//*********************************************************
-// CallBack from AKnWaitDialog when Cancel is pressed
-//*********************************************************
-
-void CDiagInternalMemoryPlugin::DialogDismissedL( TInt aButtonId )
-	{
-		 LOGSTRING2("CDiagInternalMemoryPlugin::DialogDismissedL() = %d",aButtonId);
-		 
-		 if (aButtonId == ECBACmdCancel && idialogOn) 
-		 {
-		 // cancel the tests based on which point the dialog is dismissed
-		 LOGSTRING2("CDiagInternalMemoryPlugin::DialogDismissed @ iState= %d",iState);
-		 if (iState == EReading)
-	     iFile.ReadCancel(iStatus);
-		
-	     iWaitDialog = NULL;
-	     idialogOn = EFalse;
-	     idialogDismissed = ETrue;      
-		 }
-	}    
-
-void CDiagInternalMemoryPlugin::ReportResultToPluginL(CDiagResultsDatabaseItem::TResult aResult)
-	{
-		// clear the dialogue only if dialog is running.    
-		if(idialogOn)    
-		iWaitDialog->ProcessFinishedL();
-		LOGSTRING("CDiagInternalMemoryPlugin::ReportResultToPluginL()");
-		CompleteTestL( aResult );
-	}
-	    
-//---------------------------------------------------------------------------
-// CDiagInternalMemoryPlugin::SetState()
-//---------------------------------------------------------------------------
-void CDiagInternalMemoryPlugin::SetState( TStates aState )
-    {
-    iState = aState;
-    }
-    
-    
-// ADO & Platformization Changes
-TBool CDiagInternalMemoryPlugin::ShowMessageQueryL( TInt aResourceId, TInt &aButtonId  )
-    {
-    LOGSTRING( "CDiagAudioPlugin::ShowMessageQueryL IN" )
-    CAknMessageQueryDialog* dlg    = NULL;
-    TBool                   result = EFalse;
-
-    // Create CAknMessageQueryDialog instance
-    dlg = new ( ELeave ) CAknMessageQueryDialog();
-
-    dlg->PrepareLC( aResourceId );
-     
-    CEikButtonGroupContainer& cba = dlg->ButtonGroupContainer();
-
-        switch ( aResourceId )
-            {
-            case R_MESSAGEQUERY_TITLE_INTERNALMEMORY: 
-         	   {
-            	if ( SinglePluginExecution() )
-        		{
-        			cba.SetCommandSetL( R_INT_MEMORY_SOFTKEYS_OK_CANCEL );		
-        		}
-        	   else 
-        	   	{	
-                	cba.SetCommandSetL( R_INT_MEMORY_SOFTKEYS_OK_SKIP );		
-                }
-        	}
-                break;
-
-            default:
-                break;
-            }
-        	
-    result = RunWaitingDialogL( dlg, aButtonId );
-
-    LOGSTRING3( "CDiagAudioPlugin::ShowMessageQueryL() OUT aButtonId=%d result=%d", aButtonId, result )
-    return result;
-    }
-    
-// End of File