devicediagnostics/diagplugins/diagbatterychargerplugin/src/diagbatterychargercableengine.cpp
changeset 18 7d11f9a6646f
parent 4 75a71fdb4c92
child 21 c707676bf59f
--- a/devicediagnostics/diagplugins/diagbatterychargerplugin/src/diagbatterychargercableengine.cpp	Tue Feb 02 00:03:17 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,449 +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:  This is the implementation class for the engine of Battery charger cable
-*                 test plug-in
-*
-*/
-
-
-// INCLUDE FILES
-// Class declaration
-#include "diagbatterychargercableengine.h"
-
-// System includes
-#include <DiagFrameworkDebug.h>                     // Debugging Macros
-#include <StringLoader.h>                           // StringLoader
-#include <e32property.h>                            // RProperty
-#include <hwrmpowerstatesdkpskeys.h>                // P&S keys of HW Resource Manager
-#include <DiagPluginWaitingDialogWrapper.h>         // CDiagPluginWaitingDialogWrapper
-#include <aknmessagequerydialog.h>                  // CAknQueryDialog
-#include <devdiagbatterychargercabletestpluginrsc.rsg> // Resource definitions
-
-
-// User includes
-#include "diagbatterychargercabletestplugin.hrh"    // command ids
-#include "diagbatterychargercallbackinterface.h"    //MDiagBatteryChargerTestCallBackInterface
-
-
-// EXTERNAL DATA STRUCTURES
-
-// EXTERNAL FUNCTION PROTOTYPES
-
-// CONSTANTS
-
-// MACROS
-
-// LOCAL CONSTANTS AND MACROS
-
-// MODULE DATA STRUCTURES
-
-// LOCAL FUNCTION PROTOTYPES
-
-// FORWARD DECLARATIONS
-
-// ============================= LOCAL FUNCTIONS ==============================
-
-// ========================= MEMBER FUNCTIONS ================================
-   
-// ---------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::NewL()
-//
-// Symbian OS default constructor
-// ---------------------------------------------------------------------------   
-CDiagBatteryChargerCableTestEngine* CDiagBatteryChargerCableTestEngine::NewL(
-    MDiagBatteryChargerTestCallBackInterface& aInterface,
-    TBool aIsSinglePluginExecution)
-    {
-    CDiagBatteryChargerCableTestEngine* self = 
-        new (ELeave)CDiagBatteryChargerCableTestEngine(
-                                    aInterface, aIsSinglePluginExecution);
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;    
-    }
-    
-    
-// ----------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::CDiagBatteryChargerCableTestEngine()
-//
-// Constructor
-// ----------------------------------------------------------------------------
-//    
-CDiagBatteryChargerCableTestEngine::CDiagBatteryChargerCableTestEngine(
-    MDiagBatteryChargerTestCallBackInterface& aInterface,
-    TBool aIsSinglePluginExecution)
-    :   CActive( EPriorityStandard ),
-        iInterface(aInterface),
-        iWaitingDialogWrapper( NULL ),
-        iIsSinglePluginExecution(aIsSinglePluginExecution)
-    {
-    CActiveScheduler::Add( this );
-    }
-    
-// ----------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::~CDiagBatteryChargerCableTestEngine
-//
-// Destructor
-// ----------------------------------------------------------------------------
-CDiagBatteryChargerCableTestEngine::~CDiagBatteryChargerCableTestEngine()
-    {
-    Cancel();
-    
-    delete iWaitingDialogWrapper; //  deleting will dismiss active dialog
-    iWaitingDialogWrapper = NULL;
-    }
-    
-// ---------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::ConstructL()
-//
-// Symbian OS two-phased constructor
-// ---------------------------------------------------------------------------    
-void CDiagBatteryChargerCableTestEngine::ConstructL()
-    {
-    // nothing to do here
-    }
-    
-
-// ----------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::RunBatteryChargerTestL
-//
-// This function starts the Battery charger cable test
-// ----------------------------------------------------------------------------
-void CDiagBatteryChargerCableTestEngine::RunBatteryChargerTestL()
-    {    
-    TInt userResponse;
-    
-    if ( !ConnectAndPressOkL( userResponse ) )
-        {
-        // Return immediately. "this" object may have been deleted.
-        LOGSTRING( "CDiagBatteryChargerCableTestEngine : Connect Battery charger and press ok dialog was dismissed internally" )
-        return;
-        }
-
-    switch( userResponse )
-        {
-        // User selects OK "Connect charger & press ok" dialog
-        case EAknSoftkeyOk: 
-            {            
-            //TInt keySelect;
-            // check if headset cable is connected
-            if( CheckIfChargerDetected() )
-                {
-                // battery charger is detected
-                LOGSTRING( "CDiagBatteryChargerCableTestEngine : Headset detected" );
-                /*
-                if ( !RemoveAllCablesL( keySelect ) )
-                    {
-                    LOGSTRING( "CDiagBatteryChargerCableTestEngine : Remove All Cable dialog was dismissed internally pressed" )
-                    return;
-                    }
-
-                if ( keySelect != EAknSoftkeyOk )
-                    {
-                    LOGSTRING( "CDiagBatteryChargerCableTestEngine : EndKey has pressed" )
-                    return;	
-                    }
-                */ // ADO & Platformization Changes  
-
-                LOGSTRING( "CDiagBatteryChargerCableTestEngine : Report result Success" )    
-                ReportResultToPluginL( CDiagResultsDatabaseItem::ESuccess );
-                }
-            else
-                { 
-                // no cable detected
-                if ( !AskIfRetryL( userResponse ) )
-                    {
-                    // Ask for retry dialog dismissed by framework internally
-                    // Return immediately
-                    LOGSTRING( "CDiagBatteryChargerCableTestEngine Test Ask for retry dialog dismissed by framework internally" )
-                    return;
-                    }
-                
-                switch(userResponse)
-                    {
-                    
-                    //case EAknSoftkeyOk: // ADO & Platformization Changes
-                    	case EBatteryTestConnectBatteryChargerNo:
-                        {
-                        LOGSTRING( "CDiagBatteryChargerCableTestEngine : user selected OK" )
-                        ReportResultToPluginL(CDiagResultsDatabaseItem::EFailed);
-                        }
-                        break;
-                    //case EBatteryTestConnectBatteryChargerBack: //  ADO & Platformization Changes
-                    	case EBatteryTestConnectBatteryChargerYes:
-                        {
-                        LOGSTRING( "CDiagBatteryChargerCableTestEngine : user selected Back" )
-                        // user selected "Back" to retry
-                        // do a self-trigger to start again
-                        TRequestStatus* status = &iStatus;
-                        SetActive();
-                        User::RequestComplete( status, KErrNone );
-                        }
-                        break;
-                    default:
-                        {
-                        // the dialog was dismissed by cancel key
-                        LOGSTRING( "CDiagBatteryChargerCableTestEngine : user selected cancel key" )
-                        }
-                        break;
-                    };
-                }
-            }
-            break;
-        
-        // User selects SKIP  on "Connect charger & press ok" dialog
-        case EBatteryTestConnectBatteryChargerCancel: 
-        case EBatteryTestConnectBatteryChargerSkip:
-            {
-            if(iIsSinglePluginExecution)
-                {
-                LOGSTRING( "CDiagBatteryChargerCableTestEngine Test skipped by user" )
-                ReportResultToPluginL(CDiagResultsDatabaseItem::ESkipped);  
-                }
-            else
-                {
-                if( iInterface.AskCancelExecutionL(userResponse) )
-                    {
-                    // cancel dialog was dismissed by user action
-                    if(userResponse)
-                        {
-                        LOGSTRING( "CDiagBatteryChargerCableTestEngine Test cancelled by user" )
-                        return;
-                        }
-                    else
-                        {
-                        // currently no way to distinguish between "No" and "Cancel" key
-                        LOGSTRING( "CDiagBatteryChargerCableTestEngine : User selected No to Cancel dialog" )
-                        // do a self-trigger to start again
-                        TRequestStatus* status = &iStatus;
-                        SetActive();
-                        User::RequestComplete( status, KErrNone );
-                        }
-    
-                    }
-                else
-                    {
-                    // Though this should not happedn, Cancel All Test execution query dialog was dismissed internally by the framework,
-                    // not by user action. Return immediately
-                    LOGSTRING( "CDiagBatteryChargerCableTestEngine : Cancel query dialog was dismissed internally by the framework, not by user action." )
-                    return;
-                    }
-                }
-            }
-            break;
-        
-        // User selectes CANCEL command (Red Key) on "Connect charger & press ok" dialog
-        default:
-            {
-            // Do nothing
-            LOGSTRING( "CDiagBatteryChargerCableTestEngine : Connect Battery charger and press ok dialog was dismissed by end key" )
-            }
-            break;
-        };
-    }
-    
-// ----------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::CheckIfChargerDetected
-//
-// This function detects the battery charger status
-// ----------------------------------------------------------------------------
-TBool CDiagBatteryChargerCableTestEngine::CheckIfChargerDetected()
-    {
-    TInt charger = -1, retval = EFalse;
-    TInt error = RProperty::Get( KPSUidHWRMPowerState, KHWRMChargingStatus, charger ) ;
-    
-    if( error == KErrNone )
-        {
-        LOGSTRING2( "CDiagBatteryChargerCableTestEngine charging status = %d", charger )
-        switch(charger)
-            {                        
-            case EChargingStatusCharging:           // Device is charging.
-            case EChargingStatusAlmostComplete:     // Charging almost completed.  
-            case EChargingStatusChargingComplete:   // Charging completed.  
-            case EChargingStatusChargingContinued : // Charging continued after brief interruption. 
-                {
-                retval = ETrue;
-                }
-                break;
-                
-                
-            case EChargingStatusError:        // Some error has occurred when charger is connected or charging.
-            case EChargingStatusNotConnected: // Charger not connected/uninitialized. 
-            case EChargingStatusNotCharging:  // Charger is connected, device not charging.
-            default:
-                {
-                retval =  EFalse;
-                }
-                    
-            }
-        }
-    else
-        {
-        LOGSTRING( "CDiagBatteryChargerCableTestEngine : Error in obtaining charger status ")
-        retval =  EFalse;
-        }
-    
-    return retval;
-    }
-
-// ----------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestEngine::ReportResultToPluginL
-//
-// This function reports the result to plugin
-// ----------------------------------------------------------------------------
-void CDiagBatteryChargerCableTestEngine::ReportResultToPluginL(
-                                    CDiagResultsDatabaseItem::TResult aResult)
-    {
-    iInterface.ReportTestResultL(aResult);
-    }
-
-
-// ---------------------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestPlugin::ConnectAndPressOkL
-// This function shows the query dialog : Connect your battery charger. Press OK when ready
-// --------------------------------------------------------------------------------------- 
-TBool CDiagBatteryChargerCableTestEngine::ConnectAndPressOkL( TInt& aUserResponse )
-    {
-    
-    ASSERT( iWaitingDialogWrapper == NULL );
-
-    CAknQueryDialog* dialog = CAknQueryDialog::NewL( CAknQueryDialog::ENoTone );
-    CleanupStack::PushL( dialog );
-
-    dialog->PrepareLC( R_DIAG_BATTERY_CHARGER_CABLE_TEST_CONNECT_AND_PRESS_OK );
-    
-    if( iIsSinglePluginExecution )
-        {
-        CEikButtonGroupContainer& cba = dialog->ButtonGroupContainer();
-        cba.SetCommandSetL( R_CBA_CONNECT_AND_PRESS_OK_SINGLE_EXECUTION );        
-        }       
-    
-    CleanupStack::Pop( dialog );
-
-    // dialog ownership to bepassed to iWaitingDialogWrapper
-    // CDiagPluginWaitingDialogWrapper::NewL will push dialog into clean up stack
-    iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( dialog );
-    dialog = NULL;
-
-    TBool isDialogDismissedByUser = iWaitingDialogWrapper->RunLD( aUserResponse );
-    if ( isDialogDismissedByUser )
-        {
-        // local variable can be accessed only if it was returned due to
-        // user response. iWaitingDialogWrapper self destructs.
-        iWaitingDialogWrapper = NULL;
-        }
-
-    return isDialogDismissedByUser;
-    }  
-    
-// ---------------------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestPlugin::RemoveAllCables
-// This function shows the query dialog : Please remove all cables
-// --------------------------------------------------------------------------------------- 
-TBool CDiagBatteryChargerCableTestEngine::RemoveAllCablesL( TInt& aUserResponse )
-    {
-    ASSERT( iWaitingDialogWrapper == NULL );
-
-    CAknQueryDialog* dialog = CAknQueryDialog::NewL( CAknQueryDialog::ENoTone );    
-
-    dialog->PrepareLC( R_DIAG_CABLE_TEST_REMOVE_ALL_CABLES );
-
-    // dialog ownership to bepassed to iWaitingDialogWrapper
-    // CDiagPluginWaitingDialogWrapper::NewL will push dialog into clean up stack
-    iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( dialog );
-    dialog = NULL;
-
-    TBool isDialogDismissedByUser = iWaitingDialogWrapper->RunLD( aUserResponse );
-    if ( isDialogDismissedByUser )
-        {
-        // local variable can be accessed only if it was returned due to
-        // user response. iWaitingDialogWrapper self destructs.
-        iWaitingDialogWrapper = NULL;
-        }
-
-    return isDialogDismissedByUser;
-    }     
-    
-// ---------------------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestPlugin::AskIfRetryL
-// This function shows the query dialog : No cable detected. Press OK to continue tests
-// or press Back to retry this test.
-// ---------------------------------------------------------------------------------------
-TBool CDiagBatteryChargerCableTestEngine::AskIfRetryL( TInt& aUserResponse )
-    {
-    return DisplayQueryDialogWithHeaderL(
-                                       R_DIAG_BATTERY_CHARGER_CABLE_TEST_NO_CABLE_DETECTED, 
-                                       aUserResponse);                                
-    }                  
-
-   
-// ---------------------------------------------------------------------------------------
-// CDiagBatteryChargerCableTestPlugin::DisplayQueryDialogWithHeaderL
-// This function shows the query dialog. It returns ETrue, if the dialog is dismissed by user
-// if the dialog was dismissed because of time-out, it returns EFalse. 
-// The user response (softkey) is returned in the reference argument aUserResponse
-// ---------------------------------------------------------------------------------------    
-    
-TBool CDiagBatteryChargerCableTestEngine::DisplayQueryDialogWithHeaderL( 
-        TInt aDialogResourceId,
-        TInt& aUserResponse )
-    {
-    ASSERT( iWaitingDialogWrapper == NULL );
-  
-    CAknMessageQueryDialog * dialog = new ( ELeave ) 
-									CAknMessageQueryDialog ( CAknQueryDialog::ENoTone );
-    CleanupStack::PushL( dialog );
-    dialog->PrepareLC( aDialogResourceId );
-    CleanupStack::Pop( dialog );
-
-    // dialog ownership to bepassed to iWaitingDialogWrapper
-    // CDiagPluginWaitingDialogWrapper::NewL will push dialog into clean up stack
-    iWaitingDialogWrapper = CDiagPluginWaitingDialogWrapper::NewL( dialog );
-    dialog = NULL;
-
-    TBool isDialogDismissedByUser = iWaitingDialogWrapper->RunLD( aUserResponse );
-    if ( isDialogDismissedByUser )
-        {
-        // local variable can be accessed only if it was returned due to
-        // user response. iWaitingDialogWrapper self destructs.
-        iWaitingDialogWrapper = NULL;
-        }
-
-    return isDialogDismissedByUser;
-    }    
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::RunL
-// RunL() function is used in this plug-in to handle internal trigger
-// ---------------------------------------------------------------------------------------    
-void CDiagBatteryChargerCableTestEngine::RunL()
-    {
-    if(iStatus == KErrNone)
-        {
-        RunBatteryChargerTestL();
-        }
-    }
-
-// ---------------------------------------------------------------------------------------
-// CDiagHeadsetCableTestEngine::DoCancel
-// Handles cancel request
-// ---------------------------------------------------------------------------------------    
-void CDiagBatteryChargerCableTestEngine::DoCancel()
-    {
-    // no implementation needed
-    }
-    
-// End of File
-