diff -r 000000000000 -r 4e1aa6a622a0 resourcemgmt/hwresourcesmgr/test/multiclient/common/testcasecontroller.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/resourcemgmt/hwresourcesmgr/test/multiclient/common/testcasecontroller.cpp Tue Feb 02 00:53:00 2010 +0200 @@ -0,0 +1,7174 @@ +// Copyright (c) 2007-2009 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: +// + +#include "testcasecontroller.h" +#include +#include +#include +#include +#include "TestScheduler.h" + + +const TInt KSDKAPIAllowedTargets( + CHWRMExtendedLight::EPrimaryDisplay | + CHWRMExtendedLight::EPrimaryKeyboard | + CHWRMExtendedLight::ESecondaryDisplay | + CHWRMExtendedLight::ESecondaryKeyboard | + CHWRMExtendedLight::ECustomTarget1 | + CHWRMExtendedLight::ECustomTarget2 | + CHWRMExtendedLight::ECustomTarget3 | + CHWRMExtendedLight::ECustomTarget4 + ); + +const TInt KExtendedAPIAllowedTargets( + CHWRMExtendedLight::EPrimaryDisplay | + CHWRMExtendedLight::EPrimaryKeyboard | + CHWRMExtendedLight::ESecondaryDisplay | + CHWRMExtendedLight::ESecondaryKeyboard | + CHWRMExtendedLight::ECustomTarget1 | + CHWRMExtendedLight::ECustomTarget2 | + CHWRMExtendedLight::ECustomTarget3 | + CHWRMExtendedLight::ECustomTarget4 | + CHWRMExtendedLight::ECustomTarget5 | + CHWRMExtendedLight::ECustomTarget6 | + CHWRMExtendedLight::ECustomTarget7 | + CHWRMExtendedLight::ECustomTarget8 | + CHWRMExtendedLight::ECustomTarget9 | + CHWRMExtendedLight::ECustomTarget10 | + CHWRMExtendedLight::ECustomTarget11 | + CHWRMExtendedLight::ECustomTarget12 | + CHWRMExtendedLight::ECustomTarget13 | + CHWRMExtendedLight::ECustomTarget14 | + CHWRMExtendedLight::ECustomTarget15 | + CHWRMExtendedLight::ECustomTarget16 | + CHWRMExtendedLight::ECustomTarget17 | + CHWRMExtendedLight::ECustomTarget18 | + CHWRMExtendedLight::ECustomTarget19 | + CHWRMExtendedLight::ECustomTarget20 | + CHWRMExtendedLight::ECustomTarget21 | + CHWRMExtendedLight::ECustomTarget22 | + CHWRMExtendedLight::ECustomTarget23 | + CHWRMExtendedLight::ECustomTarget24 | + CHWRMExtendedLight::ECustomTarget25 | + CHWRMExtendedLight::ECustomTarget26 | + CHWRMExtendedLight::ECustomTarget27 + ); + +const TInt KEnhancedAPIAllowedTargets = KExtendedAPIAllowedTargets; + +//Delay in milliseconds. +const TUint KHwrmtestsLightMoreDelay = 2000; +const TUint KHwrmtestsVibraMoreDelay = 2000; +const TInt KTestCategory = 0x101FB3E7; +const TUint32 KHWRMColorStatus = 0x00001000; +const TUint8 KHWRMRedShift = 16; +const TUint8 KHWRMGreenShift = 8; + + +CHwrmTestCaseController* CHwrmTestCaseController::NewL(MHwrmTestCaseObserver& aObserver) + { + CHwrmTestCaseController* self = new (ELeave) CHwrmTestCaseController(aObserver); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +CHwrmTestCaseController::CHwrmTestCaseController(MHwrmTestCaseObserver& aObserver) : + iObserver(aObserver) + ,iApiType(EHWRMApiTypeNoAPI) + { + } + +void CHwrmTestCaseController::ConstructL() + { + iSession = CRepository::NewL(KCRUidVibraCtrl); + } + +CHwrmTestCaseController::~CHwrmTestCaseController() + { + delete iSession; + delete iMyLight; + delete iVibra; + delete iMcFramework; + } + +void CHwrmTestCaseController::SetApiType(THWRMLightTestFAPIType aApiType) + { + iApiType = aApiType; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::RunTestCases +// Run test cases +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::RunBasicTestCases(THWRMLightTestFAPIType aApiType) + { + SetApiType(aApiType); + UpdateSupportedTargets(); + + RunTestCases( EBasicTestIdFirst, EBasicTestIdLast ); + } + +void CHwrmTestCaseController::RunMulticlientTestCases() + { + if (iMcFramework == NULL) + { + TRAPD(err,iMcFramework = CMcFramework::NewL()); + if (err) + { + _LIT(KErrorMsg,"Failed to instantiate CMcFramework. Aborting multiclient cases"); + iObserver.LogMessage(KErrorMsg); + return; + } + } + + RunTestCases( EMulticlientTestIdFirst, EMulticlientTestIdLast ); + } + +void CHwrmTestCaseController::UpdateSupportedTargets() + { + if( iApiType == EHWRMApiTypeXAPI ) + { + CHWRMExtendedLight* tmpLight = CHWRMExtendedLight::NewL(); + iSupportedTargets = tmpLight->SupportedTargets(); + delete tmpLight; + } + else if( iApiType == EHWRMApiTypeSAPI ) + { + CHWRMLight* tmpLight = CHWRMLight::NewL(); + iSupportedTargets = tmpLight->SupportedTargets(); + delete tmpLight; + } + else if( iApiType == EHWRMApiTypeEAPI ) + { + CHWRMEnhancedLight* tmpLight = CHWRMEnhancedLight::NewL(); + iSupportedTargets = tmpLight->SupportedTargets(); + delete tmpLight; + } + } + +void CHwrmTestCaseController::RunTestCases(TInt aCase) + { + RunTestCases( aCase, aCase ); + } + +void CHwrmTestCaseController::RunTestCases(TInt aFirst, TInt aLast) + { + _LIT(KLogMessage1,"Running test cases from %d to %d.."); + _LIT(KLogMessage2,"Using API: %d."); + + TBuf<256> logMessage; + logMessage.Format(KLogMessage1,aFirst,aLast); + iObserver.LogMessage(logMessage); + + logMessage.Format(KLogMessage2,iApiType); + iObserver.LogMessage(logMessage); + + TInt i; + + for( i = aFirst; i <= aLast; i++ ) + { + iErrCode = 1; + + iObserver.InfoMessage(_L("Executing test case...")); + switch(i) + { + // Basic test cases start + case EBasicTestIdFirst: + FormatMessageL(EHwrmMessageOpDebug, _L( "Start test case number %d" ), i ); + iObserver.InfoMessage( _L("Basic tests start...") ); + break; + + /** + * This case runs LightTest for all targets supported by the device defined in CenRep (10200C8C.txt) + * Targets can be removed for this test by defining a mask to targetsToBeSkipped + * * Nokia Core OS * + */ + case EAllSupportedTargetsLightTest: + { + //define here targets not to be tested in this case + TInt targetsToBeSkipped(0); + + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug,_L( "All Supported Targets Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0002 . \nAll Supported Targets Light Test::SDK Light API used." ) ); + LightTestAllSupportedSDKTargets( targetsToBeSkipped ); + + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( "All Supported Targets Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0002 . \nAll Supported Targets Test::Extended Light API used." ) ); + LightTestAllSupportedExtendedTargets( targetsToBeSkipped ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( "All Targets Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0002 .\nAll Targets Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + /** + * This case runs LightTest for all possible targets + */ + case EAllTargetsLightTest: + { + + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0003 . \nAll Targets Light Test::SDK Light API used." ) ); + LightTargetTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0003 .\nAll Targets Light Test::Extended Light API used." ) ); + LightTargetTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0003 . \nAll Targets Light Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + // Possibility to test just one target. Main use could be System Target testing + // Expected result is passed to LogResult function as 3rd parameter + case ESingleTargetLightTest1: + { + + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightTargetTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0004 . HWRM [LightOnWithSingleTarget] System target" ), iErrCode, KErrNone ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightTargetTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0004 . HWRM [LightOnWithSingleTarget] System target " ), iErrCode, KErrNone ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( "HWRM [LightOnWithSingleTarget], API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0004 . HWRM [LightOnWithSingleTarget]t, API Type not determined. Skipping test..." ) ); + } + break; + } + + // In order to pass, this case needs EPrimaryDisplay to be supported + // Expected result is passed to LogResult function as 3rd parameter + case ECombinedTargetsLightTest1: + { + iErrCode = KErrNone; + + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + CHWRMLight* myLight = CHWRMLight::NewLC(); + TRAP( iErrCode, myLight->LightOnL( CHWRMLight::EPrimaryDisplay | CHWRMLight::ESystemTarget ) ); + if( iErrCode == KErrNone ) + { + iErrCode = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOn ); + } + LogResult( _L( "\n @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0005 . HWRM [LightOnWithCombinedTargets] PrimaryDisplay | SystemTarget " ), iErrCode ); + LogResult( _L( "\nHWRM [LightOnWithCombinedTargets] PrimaryDisplay | SystemTarget " ), iErrCode, KErrNone ); + CleanupStack::PopAndDestroy( myLight ); + } + else if( iApiType == EHWRMApiTypeXAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + CHWRMExtendedLight* myLight = CHWRMExtendedLight::NewLC(); + TRAP( iErrCode, myLight->LightOnL( CHWRMExtendedLight::EPrimaryDisplay | CHWRMExtendedLight::ESystemTarget ) ); + if( iErrCode == KErrNone ) + { + iErrCode = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + } + LogResult( _L( "\n @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0005 . HWRM [LightOnWithCombinedTargets] PrimaryDisplay | SystemTarget " ), iErrCode, KErrNone ); + CleanupStack::PopAndDestroy( myLight ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + CHWRMEnhancedLight* myLight = CHWRMEnhancedLight::NewLC(); + TRAP( iErrCode, myLight->LightOnL( CHWRMExtendedLight::EPrimaryDisplay | CHWRMExtendedLight::ESystemTarget ) ); + if( iErrCode == KErrNone ) + { + iErrCode = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + } + LogResult( _L( "\n @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0005 . HWRM [LightOnWithCombinedTargets] PrimaryDisplay | SystemTarget " ), iErrCode, KErrNone ); + CleanupStack::PopAndDestroy( myLight ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Combined Targets Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0005 . Combined Targets Test, API Type not determined. Skipping test..." ) ); + } + break; + } + + //In order to pass, this case needs EPrimaryDisplayAndKeyboard and ECustomTarget1 to be supported + // Expected result is passed to LogResult function as 3rd parameter + case ECombinedTargetsLightTest2: + { + iErrCode = KErrNone; + + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + CHWRMLight* myLight = CHWRMLight::NewLC(); + TRAP( iErrCode, myLight->LightOnL( CHWRMLight::EPrimaryDisplayAndKeyboard | CHWRMLight::ECustomTarget1 ) ); + LogResult( _L( "\n @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0006 . HWRM [LightOnWithCombinedTargets] PrimaryDisplayAndKeyboard | ECustomTarget1 " ), iErrCode, KErrNotSupported ); + CleanupStack::PopAndDestroy( myLight ); + } + else if( iApiType == EHWRMApiTypeXAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + CHWRMExtendedLight* myLight = CHWRMExtendedLight::NewLC(); + TRAP( iErrCode, myLight->LightOnL( CHWRMExtendedLight::EPrimaryDisplayAndKeyboard | CHWRMExtendedLight::ECustomTarget1 ) ); + LogResult( _L( "\n @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0006 . HWRM [LightOnWithCombinedTargets] PrimaryDisplayAndKeyboard | ECustomTarget1 " ), iErrCode, KErrNotSupported ); + CleanupStack::PopAndDestroy( myLight ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + CHWRMEnhancedLight* myLight = CHWRMEnhancedLight::NewLC(); + TRAP( iErrCode, myLight->LightOnL( CHWRMExtendedLight::EPrimaryDisplayAndKeyboard | CHWRMExtendedLight::ECustomTarget1 ) ); + LogResult( _L( "\n @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0006 . HWRM [LightOnWithCombinedTargets] PrimaryDisplayAndKeyboard | ECustomTarget1 " ), iErrCode, KErrNotSupported ); + CleanupStack::PopAndDestroy( myLight ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Combined Targets Test, API Type not determined. Skipping test..." ) ); + LogResult(_L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0006 .Combined Targets Test, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightOnDurationTest for all possible targets + */ + case EAllTargetsLightOnDurationTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light on Duration Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0007 . All Targets Light on Duration Test::SDK Light API used." ) ); + LightOnDurationTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light on Duration Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0007 .All Targets Light on Duration Test::Extended Light API used." ) ); + LightOnDurationTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light on Duration Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0007 . All Targets Light on Duration Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + //possibility to test just one target. Main use could be System Target testing + case ESingleTargetLightOnDurationTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOnDurationTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0008 . HWRM [LightOnDurationWithSingleTarget] System target" ), iErrCode ); + } + else if( iApiType == EHWRMApiTypeXAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOnDurationTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0008 . HWRM [LightOnDurationWithSingleTarget] System target " ), iErrCode ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOnDurationTestEnhanced( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0008 . HWRM [LightOnDurationWithSingleTarget] System target " ), iErrCode ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightOnDurationWithSingleTarget, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0008 . LightOnDurationWithSingleTarget, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightOffDurationTest for all possible targets + */ + case EAllTargetsLightOffDurationTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Off Duration Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0009 . All Targets Light Off Duration Test::SDK Light API used." ) ); + LightOffDurationTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeXAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Off Duration Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0009 . All Targets Light Off Duration Test::Extended Light API used." ) ); + LightOffDurationTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Off Duration Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0009 . All Targets Light Off Duration Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + //possibility to test just one target. Main use could be System Target testing + case ESingleTargetLightOffDurationTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOffDurationTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0010 . HWRM [LightOffDurationWithSingleTarget] System target" ), iErrCode ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOffDurationTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0010 . HWRM [LightOffDurationWithSingleTarget] System target " ), iErrCode ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightOffDurationWithSingleTarget, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0010 . LightOffDurationWithSingleTarget, API Type not determined. Skipping test..." ) ); + } + break; + } + + + /** + * This case runs LightIntensityTest for all possible targets + */ + case EAllTargetsLightIntensityTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Intensity Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0011 . All Targets Light Intensity Test::SDK Light API used." ) ); + LightIntensityTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Intensity Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0011 . All Targets Light Intensity Test::Extended Light API used." ) ); + LightIntensityTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Intensity Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0011 . All Targets Light Intensity Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + + //possibility to test just one target. Main use could be System Target testing + case ESingleTargetLightIntensityTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightIntensityTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0012 . HWRM [LightIntensityWithSingleTarget] System target" ), iErrCode ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightIntensityTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0012 . HWRM [LightIntensityWithSingleTarget] System target " ), iErrCode ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightIntensityWithSingleTarget, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0012 .LightIntensityWithSingleTarget, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightBlinkTest for all possible targets + */ + case EAllTargetsLightBlinkTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0013 .All Targets Light Blink Test::SDK Light API used." ) ); + LightBlinkTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0013 .All Targets Light Blink Test::Extended Light API used." ) ); + LightBlinkTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0013 .All Targets Light Blink Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + //possibility to test just one target. Main use could be System Target testing + case ESingleTargetLightBlinkTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0014 .HWRM [LightBlinkWithSingleTarget] System target" ), iErrCode ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0014 .HWRM [LightBlinkWithSingleTarget] System target " ), iErrCode ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightBlinkWithSingleTarget, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0014 .LightBlinkWithSingleTarget, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightBlinkDurationTest for all possible targets + */ + case EAllTargetsLightBlinkDurationTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Duration Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0015 .All Targets Light Blink Duration Test::SDK Light API used." ) ); + LightBlinkDurationTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Duration Test, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0015 .All Targets Light Blink Duration Test::Extended Light API used." ) ); + LightBlinkDurationTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Duration Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0015 .All Targets Light Blink Duration Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + //possibility to test just one target. Main use could be System Target testing + case ESingleTargetLightBlinkDurationTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkDurationTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0016 .HWRM [LightBlinkDurationWithSingleTarget] System target" ), iErrCode ); + } + else if( iApiType == EHWRMApiTypeXAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkDurationTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0016 .HWRM [LightBlinkDurationWithSingleTarget] System target " ), iErrCode ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkDurationTestEnhanced( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0016 .HWRM [LightBlinkDurationWithSingleTarget] System target " ), iErrCode ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightBlinkDurationWithSingleTarget, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0016 .LightBlinkDurationWithSingleTarget, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightBlinkOnOffTest for all possible targets + */ + case EAllTargetsLightBlinkOnOffTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink On/Off Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0017 .All Targets Light Blink On/Off Test::SDK Light API used." ) ); + LightBlinkOnOffTest( KSDKAPIAllowedTargets ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink On/Off Testt, API Type: Extended Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0017 .All Targets Light Blink On/Off Test::Extended Light API used." ) ); + LightBlinkOnOffTest( KExtendedAPIAllowedTargets ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink On/Off Test, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0017 .All Targets Light Blink On/Off Test, API Type not determined. Skipping test..." ) ); + } + + break; + } + + //possibility to test just one target. Main use could be System Target testing + case ESingleTargetLightBlinkOnOffTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkOnOffTestSDK( CHWRMLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0018 .HWRM [LightBlinkOnOffWithSingleTarget] System target" ), iErrCode ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkOnOffTestExtended( CHWRMExtendedLight::ESystemTarget ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0018 .HWRM [LightBlinkOnOffWithSingleTarget] System target " ), iErrCode ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightBlinkOnOffWithSingleTarget, API Type not determined. Skipping test..." ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0018 .LightBlinkOnOffWithSingleTarget, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightOnDurationRGBTest for all possible targets + */ + case EAllTargetsLightOnDurationRGBTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light on Duration RGB Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0018A . All Targets Light on Duration RGB Test::SDK Light API used." ) ); + LightOnDurationTest( KSDKAPIAllowedTargets, ETrue, 0xFF, 0, 0 ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Enhanced Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light on Duration RGB Test, API Type: Enhanced Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0018A .All Targets Light on Duration RGB Test::Enhanced Light API used." ) ); + LightOnDurationTest( KEnhancedAPIAllowedTargets, ETrue, 0, 0xff, 0 ); + } + break; + } + + //possibility to test just one target. Main use could be System Target testing + case EAllTargetsLightOnDurationRGBTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOnDurationTestSDK( CHWRMLight::ESystemTarget, ETrue, 0, 0, 0xff ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-00018B . HWRM [LightOnDurationWithSingleTarget] System target" ), iErrCode ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Enhanced Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightOnDurationTestEnhanced( CHWRMExtendedLight::ESystemTarget, ETrue, 0xff, 0, 0 ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-00018B . HWRM [LightOnDurationWithSingleTarget] System target " ), iErrCode ); + } + break; + } + + /** + * This case runs LightBlinkDurationRGBTest for all possible targets + */ + case EAllTargetsLightBlinkDurationRGBTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Duration RGB Test, API Type: SDK Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0018C . All Targets Light Blink Duration RGB Test::SDK Light API used." ) ); + LightBlinkDurationTest( KSDKAPIAllowedTargets, ETrue, 0, 0xff, 0 ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Enhanced Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Targets Light Blink Duration RGB Test, API Type: Enhanced Light API" ) ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0018C .All Targets Light Blink Duration RGB Test::Enhanced Light API used." ) ); + LightBlinkDurationTest( KEnhancedAPIAllowedTargets, ETrue, 0, 0, 0xff); + } + break; + } + + //possibility to test just one target. Main use could be System Target testing + case EAllTargetsLightBlinkDurationRGBTest1: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkDurationTestSDK( CHWRMLight::ESystemTarget, ETrue, 0xff, 0, 0); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-00018D . HWRM [LightOnDurationWithSingleTarget] System target" ), iErrCode ); + } + else if( iApiType == EHWRMApiTypeEAPI ) // Enhanced Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightBlinkDurationTestEnhanced( CHWRMExtendedLight::ESystemTarget, ETrue, 0, 0xff, 0 ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-00018D . HWRM [LightOnDurationWithSingleTarget] System target " ), iErrCode ); + } + break; + } + + + /** + * This case runs LightTests(On/Off/Blink) for multiple hardcoded targets + */ + case ELightDifferentTargetsTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightWithDifferentTargetsSDK( ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0019 .HWRM [LightWithDifferentTargets]" ), iErrCode, KErrNone ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightWithDifferentTargetsExtended(); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0019 .HWRM [LightWithDifferentTargets]" ), iErrCode, KErrNone ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightWithDifferentTargets, API Type not determined. Skipping test..." ) ); + LogResult( _L(" @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0019 .LightWithDifferentTargets, API Type not determined. Skipping test..." ) ); + } + break; + } + + /** + * This case runs LightTests(On/Off/Blink) for multiple hardcoded targets with + * invalid duration + */ + case ELightInvalidDurationTest: + { + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightWithInvalidDurationSDK( ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0020 .HWRM [LightWithInvalidDuration]" ), iErrCode, KErrNone ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = LightWithInvalidDurationExtended(); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0020 .HWRM [LightWithInvalidDuration]" ), iErrCode, KErrNone ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightWithInvalidDuration, API Type not determined. Skipping test %d..." ) ,i ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0020 .LightWithInvalidDuration, API Type not determined. Skipping test..." ) ); + } + break; + } + + + case ELightIntensityTest2: + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + if( iApiType == EHWRMApiTypeSAPI ) // SDK Light API + { + iErrCode = LightIntensitySDK( ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-SDKAPI-L-0021 .HWRM [LightWithIntensity]" ), iErrCode, KErrNone ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) // Extended Light API + { + iErrCode = LightIntensityExtended(); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-EXTAPI-L-0021 .HWRM [LightWithIntensity]" ), iErrCode, KErrNone ); + } + else // No API selected, skip the test + { + FormatMessageL(EHwrmMessageOpDebug, _L( " LightWithIntensity, API Type not determined. Skipping test %d..." ), i ); + LogResult( _L( " @SYMTestCaseID:DEVSRVS-HWRMMC-NOAPI-L-0021 .LightWithIntensity, API Type not determined. Skipping test..." ) ); + } + break; + } + + + case EBasicTestIdLast: + iObserver.InfoMessage( _L("Basic tests end...") ); + break; + + // End of Basic test cases + + + + // Multiclient cases start + + case EMulticlientTestIdFirst: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iObserver.InfoMessage( _L("Multiclient tests start...") ); + iErrCode = Verify_MCFramework_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-L-0023 .HWRM [Verify_MCFramework_M] "), iErrCode); + break; + + case EMCPrimaryDisplayLight: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Primary_display_light_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-L-0024 .HWRM [MC_Primary_display_light_M] "), iErrCode); + break; + + case EMCDisplayOnKbBlink: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Display_on_and_keyboard_blink_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-L-0025 .HWRM [MC_Display_on_and_keyboard_blink_M] "), iErrCode); + break; + + case EMCDisplayOnKbReserved: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Display_on_and_keyboard_reserved_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-L-0026 .HWRM [MC_Display_on_and_keyboard_reserved_M] "), iErrCode); + break; + + case EMCDisplayAndKbBlink: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Display_and_keyboard_blink_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-L-0027 .HWRM [MC_Display_and_keyboard_blink_M] "), iErrCode); + break; + + case EMCDisplayRGBColor: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Display_RGB_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-L-0027A .HWRM [MC_Display_RGB_M1] "), iErrCode); + break; + + case EMCVibraBasicUsage: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Vibra_Basic_Usage_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-V-0028 .HWRM [MC_Vibra_Basic_Usage_M] "), iErrCode); + break; + + case EMCCombinedLightAndVibra1: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Combined_light_and_vibra_usage_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-LV-0029 .HWRM [MC_Combined_light_and_vibra_usage_M] "), iErrCode); + break; + + case EMCCombinedLightAndVibra2: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_Combined_light_and_vibra_usage_2_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-LV-0030 .HWRM [MC_Combined_light_and_vibra_usage_2_M] "), iErrCode); + break; + + case EMCFmTxBasicUsage: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iErrCode = MC_FmTx_Basic_Usage_M(); + if (iErrCode != KErrNone) + { + iMcFramework->StepExecuted(KErrGeneral); + } + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-F-0031 .HWRM [MC_FmTx_Basic_Usage_M] "), iErrCode); + break; + + case EMulticlientTestIdLast: + FormatMessageL(EHwrmMessageOpDebug, _L( " Start test case number %d" ), i ); + iMcFramework->StopMultiClientTestInSlave( ); + break; + + // End of Multiclient cases + + + // Repeat invalid parameters + // Expected to return KErrArgument + case ERepeatInvalidParamsTest: + FormatMessageL(EHwrmMessageOpDebug,_L(" Start test case %d [%d]"), i, iErrCode); + iErrCode = RunRepeatedlyInvalidValues(); + FormatMessageL(EHwrmMessageOpDebug,_L(" End test case %d [%d]"), i, iErrCode ); + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-LV-0034 .HWRM [Repeated Invalid Values] "), iErrCode, KErrArgument); + break; + + // Vibra test (30 min) + case EMaliciousVibraTest: + FormatMessageL(EHwrmMessageOpDebug,_L(" Start test case %d [%d]"), i, iErrCode); + iErrCode = MaliciousVibra(); + FormatMessageL(EHwrmMessageOpDebug,_L(" End test case %d [%d]"), i, iErrCode); + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-V-0035 .HWRM [Malicious Vibra Usage] "), iErrCode); + break; + + // Wait charging notify (5 min) + case EWaitForChargingNotify: + FormatMessageL(EHwrmMessageOpDebug,_L(" Start test case %d [%d]"), i, iErrCode); + iErrCode = ChargingNotify(); + FormatMessageL(EHwrmMessageOpDebug,_L(" End test case %d [%d]"), i, iErrCode); + LogResult(_L(" @SYMTestCaseID:DEVSRVS-HWRMMC-V-0036 .HWRM [Wait Charging Notify] "), iErrCode); + + break; + + default: + break; + + + } + + + CTestScheduler::StartAndStopL(2000); // Short delay after each test case + + //iErrCode set to 1 in the beginning. If not changed, no case has been executed + if( !iErrCode ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" End test case %d, error code [%d]"), i, iErrCode); + FormatMessageL(EHwrmMessageOpDebug,_L("")); + FormatMessageL(EHwrmMessageOpDebug,_L("#############################################################")); + FormatMessageL(EHwrmMessageOpDebug,_L("")); + + if(iErrCode == KErrNone) + { + iObserver.InfoMessage(_L("Test case PASSED")); + } + else + { + iObserver.InfoMessage(_L("Test case FAILED")); + } + } + + } + + } + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::TargetSupported +// ----------------------------------------------------------------------------- +// +TBool CHwrmTestCaseController::TargetSupported( TInt aTarget ) + { + return( iSupportedTargets & aTarget); + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightTestAllSupportedTargets +// This method +// -runs LightTest for all targets supported by the device defined in CenRep (10200C8C.txt) +// Targets can be removed for this test by defining a mask to targetsToBeSkipped +// -logs results +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightTestAllSupportedSDKTargets( TInt aTargetsToBeSkipped ) +{ + + TBuf<100> msg( KNullDesC ); + + _LIT( KMessageText, "HWRM [All supported targets test]: target 0x%x" ); + + TInt counter(0); + + TInt testTargets(0); + + testTargets = iSupportedTargets & ( ~aTargetsToBeSkipped ); + + //loop through supported targets mask and execute LightTargetTest if current target is supported + while( testTargets ) + { + + TInt currentTarget = ( 1 << counter ); + + if( testTargets & 1 ) + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Supported Targets Test, target 0x%x" ), currentTarget ); + iErrCode = LightTargetTestSDK( currentTarget ); + msg.Format( KMessageText, currentTarget ); + LogResult( msg, iErrCode ); + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Supported Targets Test, target 0x%x SKIPPED. Target not supported" ), (TInt)currentTarget ); + msg.Format( KMessageText, currentTarget ); + msg.Append(_L(" - SKIPPED. Target not supported" ) ); + LogResult( msg ); + } + + + counter++; + + //remove tested target from the mask + testTargets >>= 1; + + } +} + +void CHwrmTestCaseController::LightTestAllSupportedExtendedTargets( TInt aTargetsToBeSkipped ) +{ + + TBuf<100> msg( KNullDesC ); + + _LIT( KMessageText, "HWRM [All supported targets test]: target 0x%x" ); + + TInt counter(0); + + TInt testTargets(0); + + testTargets = iSupportedTargets & ( ~aTargetsToBeSkipped ); + + //loop through supported targets mask and execute LightTargetTest if current target is supported + while( testTargets ) + { + + TInt currentTarget = ( 1 << counter ); + + if( testTargets & 1 ) + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Supported Targets Test, target 0x%x" ), currentTarget ); + iErrCode = LightTargetTestExtended( currentTarget ); + msg.Format( KMessageText, currentTarget ); + LogResult( msg, iErrCode ); + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L( " All Supported Targets Test, target 0x%x SKIPPED. Target not supported" ), (TInt)currentTarget ); + msg.Format( KMessageText, currentTarget ); + msg.Append(_L(" - SKIPPED. Target not supported" ) ); + LogResult( msg ); + } + + + counter++; + + //remove tested target from the mask + testTargets >>= 1; + + } +} + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::TestLightOn +// This method +// - call LightOnL method with given parameters +// - Run 100ms delay +// - Print parameters to log +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::TestLightOn(TInt aTarget, TInt aDur, TInt aIntens, TBool aFadeIn) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightOnL(aTarget, aDur, aIntens, aFadeIn)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightONL ->error:%d"), errorStatus); + return errorStatus; +} + +TInt CHwrmTestCaseController::TestLightOn(TInt aTarget) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightOnL(aTarget)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightONL ->error:%d"), errorStatus); + return errorStatus; +} + +TInt CHwrmTestCaseController::TestLightOnColor(TInt aTarget, TInt aDur, THWRMLightColor& aColor) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightOnL(aTarget, aDur, aColor)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightONL ->error:%d"), errorStatus); + return errorStatus; +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::TestLightOff +// This method +// - call LightOffL method with given parameters +// - Run 100ms delay +// - Print parameters to log +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::TestLightOff(TInt aTarget, TInt aDuration, TBool aFadeOut) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightOffL(aTarget, aDuration, aFadeOut)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightOffL ->error:%d"), errorStatus); + return errorStatus; +} + +TInt CHwrmTestCaseController::TestLightOff(TInt aTarget) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightOffL(aTarget)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightOffL ->error:%d"), errorStatus); + return errorStatus; +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::TestLightBlink +// This method +// - call LightBlinkL method with given parameters +// - Run 100ms delay +// - Print parameters to log +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::TestLightBlink(TInt aTarget, + TInt aDuration, + TInt aOnDuration, + TInt aOffDuration, + TInt aIntensity) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightBlinkL(aTarget, aDuration, aOnDuration, aOffDuration, aIntensity)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightBlinkL ->error:%d"), errorStatus); + return errorStatus; +} + +TInt CHwrmTestCaseController::TestLightBlink(TInt aTarget, + TInt aDuration) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightBlinkL(aTarget, aDuration)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightBlinkL ->error:%d"), errorStatus); + return errorStatus; +} + +TInt CHwrmTestCaseController::TestLightBlink(TInt aTarget) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iMyLight->LightBlinkL(aTarget)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" LightBlinkL ->error:%d"), errorStatus); + return errorStatus; +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::RunTestVibra +// This method +// - call LightBlinkL method with given parameters +// - Run 100ms delay +// - Print parameters to log +// ----------------------------------------------------------------------------- +// + +TInt CHwrmTestCaseController::RunTestVibra( TInt howLong, TInt whatIntensity) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iVibra->StartVibraL(howLong, whatIntensity)); + CTestScheduler::StartAndStopL(100); + return errorStatus; +} + +TInt CHwrmTestCaseController::RunTestVibra( TInt howLong ) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iVibra->StartVibraL(howLong)); + CTestScheduler::StartAndStopL(100); + return errorStatus; +} + + +TInt CHwrmTestCaseController::StopTestVibra() +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iVibra->StopVibraL()); + CTestScheduler::StartAndStopL(100); + return errorStatus; +} + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::RunTestFmTx +// This method +// - call EnableL method with given parameters +// - Run 100ms delay +// - Print parameters to log +// ----------------------------------------------------------------------------- +// + +TInt CHwrmTestCaseController::RunTestFmTx( TInt aFrequency ) +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iFmTx->EnableL(aFrequency)); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" EnableL ->error:%d"), errorStatus); + return errorStatus; +} + + +TInt CHwrmTestCaseController::StopTestFmTx() +{ + TInt errorStatus(KErrNone); + TRAP(errorStatus, iFmTx->DisableL()); + CTestScheduler::StartAndStopL(100); + FormatMessageL(EHwrmMessageOpDebug,_L(" DisableL ->error:%d"), errorStatus); + return errorStatus; +} + +TInt CHwrmTestCaseController::Verify_RGBColorValue(THWRMLightColor& aColor) +{ + TInt colorval; + + RProperty::Get( TUid::Uid( KTestCategory ), KHWRMColorStatus, colorval ); + + if(((colorval>>KHWRMRedShift) & 0xFF) != aColor.iRed) + { + FormatMessageL(EHwrmMessageOpDebug,_L("Red value not correct. Expected=0x%x, Received=0x%x"), ((colorval>>KHWRMRedShift) & 0xFF), aColor.iRed); + return KErrArgument; + } + if(((colorval>>KHWRMGreenShift) & 0xFF) != aColor.iGreen) + { + FormatMessageL(EHwrmMessageOpDebug,_L("Green value not correct. Expected=0x%x, Received=0x%x"), ((colorval>>KHWRMGreenShift) & 0xFF), aColor.iGreen); + return KErrArgument; + } + if((colorval & 0xFF) != aColor.iBlue) + { + FormatMessageL(EHwrmMessageOpDebug,_L("Blue value not correct. Expected=0x%x, Received=0x%x"), (colorval & 0xFF), aColor.iBlue); + return KErrArgument; + } + return KErrNone; +} + +/*******************************************************************************/ +/* M U L T I C L I E N T C A S E S */ +// +// +TInt CHwrmTestCaseController::MC_Display_RGB_S() +{ + TInt mcResult; + mcResult = KErrNone; + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_RGB_S()")); + iObserver.InfoMessage(_L("MC_Display_RGB_S")); + CHWRMLight::TLightStatus currStatus; + + TRAP( mcResult, iMyLight = CHWRMLight::NewL(this) ); + + if( mcResult == KErrNone ) + { + //Reserve Primary display, Restore current state after reservation, Don't force CoeEnv "on" */ + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplay, ETrue, ETrue)); + + if( mcResult == KErrNone ) + { + THWRMLightColor red; + red.iRed = 0xff; + red.iGreen = 0; + red.iBlue = 0; + + TRAP( mcResult, iMyLight->SetLightColorL(CHWRMLight::EPrimaryDisplay, red)); + + if( mcResult == KErrNone ) + { + mcResult = Verify_RGBColorValue(red); + + if( mcResult == KErrNone ) + { + THWRMLightColor green; + green.iRed = 0; + green.iGreen = 0xff; + green.iBlue = 0; + mcResult = TestLightOnColor(CHWRMLight::EPrimaryDisplay, 10000, green); + + if( mcResult == KErrNone) + { + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if( currStatus == CHWRMLight::ELightOn ) + { + CTestScheduler::StartAndStopL(5000); + + mcResult = Verify_RGBColorValue(green); + + if( mcResult == KErrNone ) + { + CTestScheduler::StartAndStopL(8000); + + mcResult = Verify_RGBColorValue(red); // base state color + + if( mcResult == KErrNone ) + { + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplay); + iMcFramework->StepExecuted(KErrNone); + mcResult = KErrNone; + } + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Expected light status failed. error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("Expected light status failed. error [%d]"), mcResult); + } + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Verify_RGBColorValue returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("Verify_RGBColorValue returned error [%d]"), mcResult); + } + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" SetLightColorL returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("SetLightColorL returned error [%d]"), mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ReserveLightL returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("ReserveLightL returned error [%d]"), mcResult); + } + } + + delete iMyLight; + return mcResult; + +} + +TInt CHwrmTestCaseController::MC_Display_RGB_M() + { + TInt mcResult; + mcResult = KErrNone; + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_RGB_M()")); + iObserver.InfoMessage(_L("MC_Display_RGB_M")); + CHWRMLight::TLightStatus currStatus; + + TRAP( mcResult, iMyLight = CHWRMLight::NewL(this) ); + + if( mcResult == KErrNone ) + { + //Reserve Primary display, Restore current state after reservation, Don't force CoeEnv "on" */ + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplay, ETrue, EFalse)); + + if( mcResult == KErrNone ) + { + THWRMLightColor blue; + blue.iRed = 0; + blue.iGreen = 0; + blue.iBlue = 0xff; + + TRAP( mcResult, iMyLight->SetLightColorL(CHWRMLight::EPrimaryDisplay, blue)); + + if( mcResult == KErrNone ) + { + mcResult = Verify_RGBColorValue(blue); + + if( mcResult == KErrNone ) + { + mcResult = TestLightOff(CHWRMLight::EPrimaryDisplay); + + if( mcResult == KErrNone) + { + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if( currStatus == CHWRMLight::ELightOff ) + { + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase14); + + if( mcResult == KErrNone ) + { + + mcResult = Verify_RGBColorValue(blue); + + if( mcResult == KErrNone ) + { + + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplay); + + iMcFramework->StepExecuted(KErrNone); + mcResult = KErrNone; + } + + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Expected light status failed. error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("Expected light status failed. error [%d]"), mcResult); + } + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Verify_RGBColorValue returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("Verify_RGBColorValue returned error [%d]"), mcResult); + } + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" SetLightColorL returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("SetLightColorL returned error [%d]"), mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ReserveLightL returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("ReserveLightL returned error [%d]"), mcResult); + } + } + + delete iMyLight; + return mcResult; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Primary_display_light_M +// Light usage with two applications / This application is on front +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Primary_display_light_M() + { + TInt mcResult; + mcResult = KErrNone; + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Primary_display_light_M()")); + iObserver.InfoMessage(_L("MC_Primary_display_light_M")); + CHWRMLight::TLightStatus currStatus; + //CHWRMLight::TLightStatus origStatus; + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + + if(mcResult == KErrNone) + { + + //Reserve Primary display, Restore current state after reservation, Don't force CoeEnv "on" */ + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplay, ETrue, EFalse)); + + if (mcResult == KErrNone) + { + //CTestScheduler::StartAndStopL(1000); + + //origStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + //FormatMessageL(EHwrmMessageOpDebug,_L(" Light reserved while Status:%d"),origStatus); + /********************/ + /* L I G H T O F F */ + /********************/ + + mcResult = TestLightOff(CHWRMLight::EPrimaryDisplay); + + if(mcResult == KErrNone) + { + /* Setting light off succeeded */ + + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + if (currStatus == CHWRMLight::ELightOff) + { + /*****************/ + /* Step executed */ + /*****************/ + + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase1); + + /* Peer (background application) does following: + * -------------------------------------------------- + * - Reserve Primary display with higher priority + * - Set Primary Display light blinking for 10 seconds + */ + + if (mcResult == KErrNone) + { + // check light status + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currStatus == CHWRMLight::ELightBlink) + { + /******************/ + /* L I G H T O N */ + /******************/ + mcResult = TestLightOn(CHWRMLight::EPrimaryDisplay, 5000, 75, ETrue); + + if(mcResult == KErrNone) /* Reserved for Slave!!! */ + { + // check light status + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currStatus == CHWRMLight::ELightBlink) + { + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + mcResult = iMcFramework->WaitNextTestStep(); + + /* SLAVE (background application) does following: + * -------------------------------------------------- + * - Idle 10 seconds + * - Release primary display light reservation + * - End test case execution + */ + + if (mcResult == KErrNone) + { + /* Light reservation has returned back to this application */ + + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currStatus == CHWRMLight::ELightOff) + { + /* Light status should now be OFF because it was the original setting before peer application reserved it */ + + /******************/ + /* L I G H T O N */ + /******************/ + mcResult = TestLightOn(CHWRMLight::EPrimaryDisplay, 5000, 100, ETrue); + + if (mcResult == KErrNone) + { + /* Light on succeeded */ + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + if (currStatus == CHWRMLight::ELightOn) + { + CTestScheduler::StartAndStopL(5000); + + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + if(currStatus == CHWRMLight::ELightOff) + { + /*****************/ + /* Release light */ + /*****************/ + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplay); + + mcResult = KErrNone; + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong light status %d expected ELightOff"), currStatus); + //iObserver.LogMessage(_L(" Wrong light status [%d]. Expected [ELightOff]"), currStatus); + FormatMessageL(EHwrmMessageOpLog, _L("Wrong light status [%d]. Expected [ELightOff]"), currStatus); + mcResult = KErrGeneral; + } + } + else + { + // Wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong light status %d expected ELightOn"), currStatus); + FormatMessageL(EHwrmMessageOpLog, _L("Wrong light status [%d]. Expected [ELightOn]"), currStatus); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("TestLightOn returned error [%d]"), mcResult); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong light status [%d]. Expected [ELightOff]"), currStatus); + FormatMessageL(EHwrmMessageOpLog, _L("Wrong light status [%d]. Expected [ELightOff]"), currStatus); + mcResult = KErrGeneral; + } + + } + else + { + // Error happened peer. End test, report result and clean situation + // Peer should clean itself and be ready for next test case + FormatMessageL(EHwrmMessageOpDebug,_L(" peer error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("error from peer [%d]"), mcResult); + } + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong light status [%d]. Expected [ELightBlink]"), currStatus); + FormatMessageL(EHwrmMessageOpLog, _L("wrong light status [%d]. Expected [ELightBlink]"), currStatus); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" TestLightOn returned wrong error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("TestLightOn returned wrong error [%d]"), mcResult); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong light status [%d]. Expected [ELightBlink]"), currStatus); + FormatMessageL(EHwrmMessageOpLog, _L("wrong light status [%d]. Expected [ELightBlink]"), currStatus); + mcResult = KErrGeneral; + } + } + else + { + // Error happened peer. End test, report result and clean situation + // Peer should clean itself and be ready for next test case + FormatMessageL(EHwrmMessageOpDebug,_L(" peer returned error: [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("peer returned error: [%d]"), mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong light status [%d]. Expected [ELightOff]"), currStatus); + FormatMessageL(EHwrmMessageOpLog, _L("wrong light status [%d], Expected [ELightOff]"), currStatus); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" TestLightOff returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("TestLightOff returned error [%d]"), mcResult); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ReserveLightL returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("ReserveLightL returned error [%d]"), mcResult); + } + + // Q: Mitä tapahtuu jos light-instanssi tuhotaan vapauttamatta targettia? + } + + delete iMyLight; + return mcResult; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Display_on_and_keyboard_blink_M() +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Display_on_and_keyboard_blink_M() + { + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("MC_Display_on_and_keyboard_blink_M")); + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_on_and_keyboard_blink_M()")); + + CHWRMLight::TLightStatus keybStatus; + CHWRMLight::TLightStatus dispStatus; + //CHWRMLight::TLightStatus origDispStatus; + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + + if(mcResult == KErrNone) + { + + /*****************/ + /* Step executed */ + /*****************/ + + TInt mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase2); + + if (mcResult == KErrNone) + { + /* Step executed succesfully by peer */ + + /* Query keyboard status */ + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + dispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if (keybStatus == CHWRMLight::ELightBlink) + { + /* OK Keyboard status is Blink (set in peer application) */ + + /* Reserve Primary Display light */ + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplay, ETrue, ETrue)); + + if ( mcResult == KErrNone) + { + /*******************/ + /* L I G H T ON */ + /*******************/ + mcResult = TestLightOn(CHWRMLight::EPrimaryDisplay, 5000, 1, ETrue); + + /* Check light status */ + dispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if (mcResult == KErrNone && dispStatus == CHWRMLight::ELightOn && keybStatus == CHWRMLight::ELightBlink) + { + /* Pause 5s */ + CTestScheduler::StartAndStopL(5000); + + /* Release primary display light reservation */ + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplay); + + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + + mcResult = iMcFramework->WaitNextTestStep(); + + if (mcResult != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L("peer returned error [%d]"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("Slave returned error: [%d]"), mcResult); + } + //************************* + // else -> Case passed OK + //************************* + } + else + { + /* Light status was wrong or setting of light failed */ + FormatMessageL(EHwrmMessageOpDebug,_L(" display status:%d Keyboard status:%d, Error:%d"), dispStatus, keybStatus, mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("display status:%d Keyboard status:%d, Error:%d"),dispStatus, keybStatus, mcResult); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" reservation failed. Error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("reservation failed. Error:%d"), mcResult); + } + } + else + { + // Wrong keyboard status + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong keyboard status:%d"),keybStatus); + FormatMessageL(EHwrmMessageOpLog, _L("wrong keyboard status:%d"),keybStatus); + mcResult = KErrGeneral; + } + } + } + delete iMyLight; + return mcResult; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController:: +// +// ----------------------------------------------------------------------------- +// + +TInt CHwrmTestCaseController::MC_Display_on_and_keyboard_reserved_M() + { + TInt mcResult; + mcResult = KErrNone; + iObserver.InfoMessage(_L("MC_Display_on_and_keyboard_reserved_M")); + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_on_and_keyboard_reserved_M()")); + //CHWRMLight::TLightStatus currStatus; + CHWRMLight::TLightStatus displayStatus; + CHWRMLight::TLightStatus keybStatus; + CHWRMLight::TLightStatus originalKStatus; + CHWRMLight::TLightStatus originalDStatus; + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + + if(mcResult == KErrNone) + { + + //Reserve Primary display and keyboard + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, EFalse)); + + if (mcResult == KErrNone) + { + + CTestScheduler::StartAndStopL(1000); + + // Valojen statusten kysely testin alussa: + originalDStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + originalKStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase3); + + if (mcResult == KErrNone) + { + // Tarkista että valojen statukset ei ole muuttuneet alkutilanteesta + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if(displayStatus == originalDStatus && keybStatus == originalKStatus) + { + + mcResult = TestLightOn(CHWRMLight::EPrimaryDisplayAndKeyboard); + + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if(mcResult == KErrNone && displayStatus == CHWRMLight::ELightOn && keybStatus == CHWRMLight::ELightOn) + { + CTestScheduler::StartAndStopL(5000); + + mcResult = TestLightOff(CHWRMLight::EPrimaryDisplay); + + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if (mcResult == KErrNone && displayStatus == CHWRMLight::ELightOff && keybStatus == CHWRMLight::ELightOn) + { + /*****************************/ + /* Test executed succesfully */ + /*****************************/ + mcResult = KErrNone; + } + else + { + // Wrong status or error + FormatMessageL(EHwrmMessageOpDebug,_L(" light off failed. Error:%d, Display status:[%d] Keyboard status:[%d]"),mcResult, displayStatus, keybStatus); + FormatMessageL(EHwrmMessageOpLog, _L("light off failed. Error:%d, Display status:[%d] Keyboard status:[%d]"), mcResult, displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" light on failed. Error:%d, Display status:[%d] Keyboard status:[%d]"), mcResult, displayStatus, keybStatus); + FormatMessageL(EHwrmMessageOpLog, _L("light on failed. Error:%d, Display status:[%d] Keyboard status:[%d]"), mcResult, displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" original light status did not remain. Display:%d,%d, Keyboard:%d,%d"),displayStatus,originalDStatus, keybStatus, originalKStatus); + FormatMessageL(EHwrmMessageOpLog, _L("original light status did not remain. Display:%d,%d, Keyboard:%d,%d"),displayStatus,originalDStatus, keybStatus, originalKStatus); + mcResult = KErrGeneral; + } + } + else + { + // Testi feilasi tausta-aplikaatiossa + FormatMessageL(EHwrmMessageOpDebug,_L(" execution failed peer. Error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("execution failed peer. Error:%d"), mcResult); + mcResult = KErrGeneral; + } + + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplayAndKeyboard); + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" reservation failed. Error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("reservation failed. Error:%d"), mcResult); + mcResult = KErrGeneral; + } + + } + delete iMyLight; + return mcResult; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Display_and_keyboard_blink_M() +// +// ----------------------------------------------------------------------------- +// + +TInt CHwrmTestCaseController::MC_Display_and_keyboard_blink_M() + { + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("MC_Display_and_keyboard_blink_M")); + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_and_keyboard_blink_M()")); + CHWRMLight::TLightStatus displayStatus; + CHWRMLight::TLightStatus keybStatus; + //CHWRMLight::TLightStatus origDispStatus; + //CHWRMLight::TLightStatus origKeybStatus; + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + + if(mcResult == KErrNone) + { + + //Reserve Primary display and keyboard + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, EFalse)); + + //origDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + //origKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if (mcResult == KErrNone) + { + /*****************/ + /* Step executed */ + /*****************/ + + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase4); + + if (mcResult == KErrNone) + { + /************************/ + /* L I G H T B L I N K */ + /************************/ + + mcResult = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard, 5000, 1000, 1000, 66); + + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if (mcResult == KErrNone && displayStatus == CHWRMLight::ELightBlink && keybStatus == CHWRMLight::ELightBlink) + { + + CTestScheduler::StartAndStopL(5000); + + mcResult = TestLightOn(CHWRMLight::EPrimaryDisplayAndKeyboard); + + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if( displayStatus == CHWRMLight::ELightOn && keybStatus == CHWRMLight::ELightOn ) + { + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + + mcResult = iMcFramework->WaitNextTestStep(); + + if (mcResult != KErrNone) + { + // Tapaus feilasi toisessa aplikaatiossa + FormatMessageL(EHwrmMessageOpDebug,_L(" test execution failed in peer application. Error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("test execution failed in peer application. Error:%d"), mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" wrong light status. Display:%d Keyboard:%d"), displayStatus, keybStatus); + FormatMessageL(EHwrmMessageOpLog, _L("wrong light status. Display:%d Keyboard:%d"), displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" light blink failed Display:%d Keyboard:%d Error:%d"), displayStatus, keybStatus, mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("light blink failed Display:%d Keyboard:%d Error:%d"), displayStatus, keybStatus, mcResult); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" test failed in peer application. Error:%d"), mcResult); + FormatMessageL(EHwrmMessageOpLog, _L("test failed in peer application. Error:%d"), mcResult); + } + + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplayAndKeyboard); + + } + } + delete iMyLight; + return mcResult; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::Verify_MCFramework_M +// Master side test case to verify McFramework functionality +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::Verify_MCFramework_M() +{ + + TInt mcResult; + mcResult = KErrNone; + iObserver.InfoMessage(_L("Verify_MCFramework_M")); + FormatMessageL(EHwrmMessageOpDebug,_L("Verify_MCFramework_M() starting")); + iObserver.InfoMessage(_L("Verify_MCFramework_M")); + + CTestScheduler::StartAndStopL(1000); + + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase6); + /* <- Käynnistää testin uosritukset taustalla ja jää odottamaan vastausta (stepin tulosta) */ + + CTestScheduler::StartAndStopL(1000); // ootellaan sekunti + + iMcFramework->StepExecuted(KErrNone); // käynnistää suorituksen taustalla + mcResult = iMcFramework->WaitNextTestStep(); // menee odottamaan stepin tulosta + + FormatMessageL(EHwrmMessageOpDebug,_L("Verify_MCFramework_M() done")); + + return mcResult; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Vibra_Basic_Usage_M +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Vibra_Basic_Usage_M() +{ + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("MC_Vibra_Basic_Usage_M")); + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Vibra_Basic_Usage_M()")); + // CRepository* iSession; + CHWRMVibra::TVibraStatus vibraStatus; + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + + TRAP(mcResult, iVibra = CHWRMVibra::NewL()); + if(mcResult == KErrNone) + { + + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + + /* Reserve Vibra */ + TRAP(mcResult, iVibra->ReserveVibraL(ETrue, EFalse)); + + if (mcResult == KErrNone) + { + /*****************/ + /* Step executed */ + /*****************/ + + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase5); + + if (mcResult == KErrNone) + { + /******************/ + /* V I B R A O N */ + /******************/ + + mcResult = RunTestVibra(5000); // Run vibra 5s + if (mcResult == KErrNone) + { + // Vibra start OK + CTestScheduler::StartAndStopL(100); + // Check status + vibraStatus = iVibra->VibraStatus(); + /* Should be stopped because vibra is reserved to another application */ + if(vibraStatus == CHWRMVibra::EVibraStatusStopped) + { + CTestScheduler::StartAndStopL(5000); + + // Check status + vibraStatus = iVibra->VibraStatus(); + if(vibraStatus == CHWRMVibra::EVibraStatusStopped) + { + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + mcResult = iMcFramework->WaitNextTestStep(); + + if( mcResult == KErrNone) + { + + CTestScheduler::StartAndStopL(500); + + vibraStatus = iVibra->VibraStatus(); + if(vibraStatus == CHWRMVibra::EVibraStatusOn) + { + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + mcResult = iMcFramework->WaitNextTestStep(); + + if( mcResult == KErrNone) + { + // Test succeeded peer + // Vibra is no longer suspended + + /******************/ + /* V I B R A O N */ + /******************/ + mcResult = RunTestVibra(5000); // Run vibra 5s + if (mcResult == KErrNone) + { + CTestScheduler::StartAndStopL(100); + + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus != CHWRMVibra::EVibraStatusOn) + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong vibra status (%d), expected ON"),vibraStatus); + mcResult = KErrGeneral; + } + } + else + { + // Vibra start failed + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra start failed. Error(%d)"),mcResult); + } + } + else + { + // Test failed peer + FormatMessageL(EHwrmMessageOpDebug,_L(" Test failed peer. Reason(%d)"),mcResult); + } + + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong vibra status (%d), expected ON "), vibraStatus); + mcResult = KErrGeneral; + } + } + else + { + // step failed peer + FormatMessageL(EHwrmMessageOpDebug,_L(" Test failed @ peer. Reason(%d)"),mcResult); + } + + } + else + { + // wrong vibra status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong vibra status (%d), expected STOPPED"),vibraStatus); + mcResult = KErrGeneral; + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong vibra status (%d), expected ON"),vibraStatus); + mcResult = KErrGeneral; + } + } + else + { + // Start vibra failed + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra start failed. Reason(%d)"),mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Test failed @ peer. Reason(%d)"),mcResult); + } + + iVibra->ReleaseVibra(); + + } + else + { + // Varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Reservation failed"), mcResult); + } + + } + + delete iVibra; iVibra = NULL; + return mcResult; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_M +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_M() +{ + TInt mcResult; + mcResult = KErrNone; + iObserver.InfoMessage(_L("MC_Combined_light_and_vibra_usage_M")); + // CRepository* iSession; + CHWRMVibra::TVibraStatus vibraStatus; + CHWRMLight::TLightStatus displayStatus; + CHWRMLight::TLightStatus keybStatus; + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + + TRAP(mcResult, iVibra = CHWRMVibra::NewL()); + { + // + // OG 13/03/07 + if (mcResult != KErrNone) + { + return mcResult; + } + // + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + if(mcResult == KErrNone) + { + + //Reserve Primary display and keyboard + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, EFalse)); + //origDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + //origKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + /* Reserve Vibra */ + TRAP(mcResult, iVibra->ReserveVibraL(ETrue, EFalse)); + if (mcResult == KErrNone) + { + TRAP(mcResult, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, ETrue)); + + if (mcResult == KErrNone) + { + /******************/ + /* V I B R A O N */ + /******************/ + + mcResult = RunTestVibra(0,75); + + if (mcResult == KErrNone) + { + vibraStatus = iVibra->VibraStatus(); + + if (vibraStatus == CHWRMVibra::EVibraStatusOn ) + { + /************************/ + /* L I G H T B L I N K */ + /************************/ + mcResult = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard); + + if(mcResult == KErrNone) + { + + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if( displayStatus == CHWRMLight::ELightBlink && keybStatus == CHWRMLight::ELightBlink) + { + + CTestScheduler::StartAndStopL(2000); + /*****************/ + /* Step executed */ + /*****************/ + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase7); + + if (mcResult == KErrNone) + { + + if(vibraStatus == CHWRMVibra::EVibraStatusOn) + { + /**********************/ + /* S T O P V I B R A */ + /**********************/ + mcResult = StopTestVibra(); + + vibraStatus = iVibra->VibraStatus(); + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if(vibraStatus == CHWRMVibra::EVibraStatusStopped && + displayStatus == CHWRMLight::ELightBlink && + keybStatus == CHWRMLight::ELightBlink) + { + if(mcResult == KErrNone) + { + /********************/ + /* L I G H T O F F */ + /********************/ + mcResult = TestLightOff(CHWRMLight::EPrimaryDisplayAndKeyboard); + + if(mcResult == KErrNone) + { + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if(displayStatus==CHWRMLight::ELightOff && keybStatus==CHWRMLight::ELightOff) + { + + } + else + { + // wrong light status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong light status(%d)(%d) Expected(OFF)(OFF)"),displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + //light off epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Set light off failed. Error(%d)"),mcResult); + } + + } + else + { + //vibra stop epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra stop failed. Error(%d)"),mcResult); + } + } + else + { + // wrong vibra or light status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong status(%d)(%d)(%d) Expected(Stopped)(Blink)(Blink)"),vibraStatus, displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + // wrong vibra status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong vibra status(%d) Expected(ON)"),vibraStatus); + mcResult = KErrGeneral; + } + } + else + { + //suoritus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case failed peer. Error(%d)"),mcResult); + } + } + else + { + // wrong light status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong light status(%d)(%d) Expected(BLINK)(BLINK)"),displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + //blink epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" TestLightBlink failed. Error(%d)"),mcResult); + } + } + else + { + // Väärä vibra status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong vibra status(%d) Expected ON"),vibraStatus); + mcResult = KErrGeneral; + } + } + else + { + //vibra start epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra start failed. Error(%d)"),mcResult); + } + + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplayAndKeyboard); + } + else + { + //valon varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Light reservation failed. Error(%d)"),mcResult); + } + + iVibra->ReleaseVibra(); + } + else + { + //vibran varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra reservation failed. Error(%d)"),mcResult); + } + } + + } + + delete iVibra; iVibra = NULL; + delete iMyLight; iMyLight = NULL; + return mcResult; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_2_M +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_2_M() +{ + TInt mcResult; + mcResult = KErrNone; + iObserver.InfoMessage(_L("MC_Combined_light_and_vibra_usage_2_M")); + // CRepository* iSession; + CHWRMVibra::TVibraStatus vibraStatus; + CHWRMLight::TLightStatus displayStatus; + CHWRMLight::TLightStatus keybStatus; + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + + TRAP(mcResult, iVibra = CHWRMVibra::NewL()); + // + // OG 13/03/07 + if (mcResult != KErrNone) + { + return mcResult; + } + // + + + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + if (mcResult == KErrNone) + { + + /******************/ + /* V I B R A O N */ + /******************/ + mcResult = RunTestVibra(5000,-75); + + if (mcResult == KErrNone) + { + /************************/ + /* L I G H T B L I N K */ + /************************/ + mcResult = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard); + + if (mcResult == KErrNone) + { + vibraStatus = iVibra->VibraStatus(); + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if (displayStatus == CHWRMLight::ELightBlink && keybStatus == CHWRMLight::ELightBlink && vibraStatus == CHWRMVibra::EVibraStatusOn) + { + /*****************/ + /* Step executed */ + /*****************/ + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase8); + + if (mcResult == KErrNone) + { + // Check light + displayStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if (displayStatus != CHWRMLight::ELightOff || keybStatus != CHWRMLight::ELightOff ) + { + // Wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong status (%d)(%d) Expected(OFF)(OFF)"),displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + // failed peer + FormatMessageL(EHwrmMessageOpDebug,_L(" Failed in peer application. Error(%d)"),mcResult); + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong status(%d)(%d)(%d) Expected(ON)(BLINK)(BLINK)"),vibraStatus, displayStatus, keybStatus); + mcResult = KErrGeneral; + } + } + else + { + // light blink failed + FormatMessageL(EHwrmMessageOpDebug,_L(" Blink light failed. Error(%d)"),mcResult); + } + } + else + { + // Start vibra failed + FormatMessageL(EHwrmMessageOpDebug,_L(" Start vibra failed. Error(%d)"),mcResult); + } + } + + + delete iVibra; iVibra = NULL; + delete iMyLight; iMyLight = NULL; + return mcResult; + +} + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_FmTx_Basic_Usage_M +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_FmTx_Basic_Usage_M() + { + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("MC_FmTx_Basic_Usage_M")); + FormatMessageL(EHwrmMessageOpDebug,_L("MC_FmTx_Basic_Usage_M()")); + TFmTxState fmTxState; + TInt fmTxFrequency; + + TRAP(mcResult, iFmTx = CHWRMFmTx::NewL(this)); + if(mcResult == KErrNone) + { + //Reserve FmTx, Don't force CoeEnv "on" + TRAP(mcResult, iFmTx->ReserveL(EFalse)); + + if (mcResult == KErrNone) + { + mcResult = StopTestFmTx(); + /********************/ + /* F M T X O F F */ + /********************/ + + if (mcResult == KErrNone) + { + /* Disabling FmTx succeeded */ + fmTxState = iFmTx->Status(); + + if( fmTxState == EFmTxStateOff) + { + /*****************/ + /* Step executed */ + /*****************/ + + mcResult = iMcFramework->StartTestCaseInSlave(EMultiClientCase9); + + /* Peer (background application) does following: + * -------------------------------------------------- + * - Reserve FmTx with higher priority + * - Enable FmTx with Frequency 89900 KHz + */ + + if (mcResult == KErrNone) + { + fmTxState = iFmTx->Status(); + fmTxFrequency = iFmTx->Frequency(); + + if( (fmTxState == EFmTxStateInactive + || fmTxState == EFmTxStateActive) + && fmTxFrequency == 89900) + { + /******************/ + /* F M T X O N */ + /******************/ + + // try to set in another frequency (88100 KHZ) + mcResult = RunTestFmTx(88100); + + if (mcResult == KErrInUse ) /* Reserved for Slave!!! */ + { + // check FmTx status + fmTxState = iFmTx->Status(); + + fmTxFrequency = iFmTx->Frequency(); + + /* Should be Active or Inactive with frequency 89900 because fmtx is reserved to another application */ + if (fmTxState == EFmTxStateInactive + || fmTxState == EFmTxStateActive) + { + if (fmTxFrequency == 89900) + { + // Attemt to disable the FmTx + mcResult = StopTestFmTx(); + + if ( mcResult == KErrInUse ) /* Reserved for Slave!!! */ + { + // check FmTx status + fmTxState = iFmTx->Status(); + + fmTxFrequency = iFmTx->Frequency(); + + if( (fmTxState == EFmTxStateInactive + || fmTxState == EFmTxStateActive) + && fmTxFrequency == 89900) + { + /*****************/ + /* Step executed */ + /*****************/ + + iMcFramework->StepExecuted(KErrNone); + mcResult = iMcFramework->WaitNextTestStep(); + + /* SLAVE (background application) does following: + * -------------------------------------------------- + * - Release primary display light reservation + * - End test case execution + */ + + if( mcResult == KErrNone) + { + /* FmTx reservation has returned back to this application */ + + fmTxState = iFmTx->Status(); + fmTxFrequency = iFmTx->Frequency(); + + if( ( fmTxState == EFmTxStateInactive + || fmTxState == EFmTxStateActive) + && fmTxFrequency == 89900) + { + + mcResult = RunTestFmTx(88100); + + /***********************/ + /* F M T X (88100 KHz) */ + /***********************/ + + if( mcResult == KErrNone) + { + mcResult = StopTestFmTx(); + + /********************/ + /* F M T X O F F */ + /********************/ + + if( mcResult == KErrNone) + { + fmTxState = iFmTx->Status(); + fmTxFrequency = iFmTx->Frequency(); + + if( fmTxState != EFmTxStateOff + || fmTxFrequency != 88100) + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong FmTx status (%d), expected EFmTxStateInactive OR EFmTxStateActive"), fmTxState); + mcResult = KErrGeneral; + } + } + else + { + // FmTx disable failed + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx disable failed. Reason(%d)"),mcResult); + } + } + else + { + // Test failed peer + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx enable(88100 KHz) failed. Reason(%d)"),mcResult); + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong FmTx status (%d) Or frequency(%d), expected EFmTxStateInactive OR EFmTxStateActive and 89900"),fmTxState, fmTxFrequency); + mcResult = KErrGeneral; + } + } + else + { + // step failed peer + FormatMessageL(EHwrmMessageOpDebug,_L(" Test failed @ peer. Reason(%d)"),mcResult); + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong FmTx status (%d) Or frequency(%d), expected EFmTxStateInactive OR EFmTxStateActive and 89900"),fmTxState, fmTxFrequency); + mcResult = KErrGeneral; + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx disable did not leave with KErrInUse. Reason(%d)"),mcResult); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx disable failed. Reason(%d)"),mcResult); + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong FmTx status (%d), expected ON"),fmTxState); + mcResult = KErrGeneral; + } + } + else + { + // Start FmTx failed + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx enable did not leave with KErrInUse. Reason(%d)"),mcResult); + } + } + else + { + // wrong status ot frequency + FormatMessageL(EHwrmMessageOpDebug,_L(" Wrong FmTx status (%d) OR frequency (%d), expected ON and 89900"),fmTxState, fmTxFrequency); + mcResult = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Test failed @ peer. Reason(%d)"),mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx disable failed. Reason(%d)"),mcResult); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" FmTx enable failed. Reason(%d)"),mcResult); + } + + iFmTx->Release(); + + } + else + { + // Varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L(" Reservation failed"), mcResult); + } + + } + + delete iFmTx; + iFmTx = NULL; + return mcResult; + + } + +/*******************************************************************************/ +/* S E C U R I T Y / S P E C I A L C A S E S */ +// +// These cases might require some special arrangements, manual testing etc... +// +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MaliciousVibra +// +// Run vibra 5 seconds in 6 seconds periods VERY LONG time +// WARNING! This is MALICIOS vibra usage. It might not be good for phones +// health to run vibra this long. +// +// Powerstate notifications are printed to trace. Also dislay light blinks every +// time when notifications is received +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MaliciousVibra() +{ + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("MaliciousVibra")); + // CRepository* iSession; + TInt i; + CTestCasePropertyWatch* iBatteryLevelWatch; + CTestCasePropertyWatch* iBatteryStatusWatch; + CTestCasePropertyWatch* iChargingStatusWatch; + + iBatteryLevelWatch = CTestCasePropertyWatch::NewL(EPSBatteryLevel); + CleanupStack::PushL( iBatteryLevelWatch ); + iBatteryStatusWatch = CTestCasePropertyWatch::NewL(EPSBatteryStatus); + CleanupStack::PushL( iBatteryStatusWatch ); + iChargingStatusWatch = CTestCasePropertyWatch::NewL(EPSChargingStatus); + CleanupStack::PushL( iChargingStatusWatch ); + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + + TRAP(mcResult, iVibra = CHWRMVibra::NewL()); + if(mcResult == KErrNone) + { + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + if (mcResult == KErrNone) + { + for(i=0;i<300;i++) + { + TRAP(mcResult, iVibra->StartVibraL(5000, 99)); + + if (mcResult == KErrLocked) + { + //Wait for vibra to cool off. + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra Locked. Wait for more time ")); + CTestScheduler::StartAndStopL(KHwrmtestsVibraMoreDelay); + TRAP(mcResult, iVibra->StartVibraL(5000, 99)); + } + + if (mcResult == KErrNone) + { + iObserver.InfoMessage(_L("* ")); + CTestScheduler::StartAndStopL(2000); + iObserver.InfoMessage(_L(" * ")); + CTestScheduler::StartAndStopL(2000); + iObserver.InfoMessage(_L(" *")); + CTestScheduler::StartAndStopL(2000); + } + else + { + // Start vibra failed + FormatMessageL(EHwrmMessageOpDebug,_L(" Start vibra failed. Error(%d) Loop(%d)"),mcResult, i); + break; + } + + if(iBatteryLevelWatch->iStatusReceived) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" BatteryLevel changed ->%d"),iBatteryLevelWatch->iKeyResult); + iBatteryLevelWatch->Start(); + mcResult = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard); + } + + if(iBatteryStatusWatch->iStatusReceived) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" BatteryStatus changed ->%d"),iBatteryStatusWatch->iKeyResult); + iBatteryStatusWatch->Start(); + mcResult = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard); + } + + if(iChargingStatusWatch->iStatusReceived) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ChargingStatus changed ->%d"),iChargingStatusWatch->iKeyResult); + iChargingStatusWatch->Start(); + mcResult = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard); + } + } + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" CHWRMVibra::NewL() Returned:%d"),mcResult); + } + CleanupStack::PopAndDestroy(3); + delete iVibra; iVibra = NULL; + return mcResult; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::ChargingNotify +// +// Test case will wait 5 minutes for chargingStatus notification(s) +// Test is passed if at least one notification is received +// Notification should be received when charger is connected to phone +// Number of notifications is stored in counter that is printed to trace +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::ChargingNotify() +{ + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("ChargingNotify")); + TInt i,j = 0; + CTestCasePropertyWatch* iChargingStatusWatch; + + iChargingStatusWatch = CTestCasePropertyWatch::NewL(EPSChargingStatus); + CleanupStack::PushL( iChargingStatusWatch ); + + for(i=0;i<100;i++) + { + iObserver.InfoMessage(_L("* ")); + CTestScheduler::StartAndStopL(500); + iObserver.InfoMessage(_L(" * ")); + CTestScheduler::StartAndStopL(500); + iObserver.InfoMessage(_L(" *")); + CTestScheduler::StartAndStopL(500); + + if(iChargingStatusWatch->iStatusReceived) + { + j++; + FormatMessageL(EHwrmMessageOpDebug,_L(" ChargingStatus changed ->%d"),iChargingStatusWatch->iKeyResult); + iChargingStatusWatch->Start(); + mcResult = KErrNone; + break; + } + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" ChargingStatus changed %d times"),j); + + delete iVibra; + iVibra = NULL; + CleanupStack::PopAndDestroy( iChargingStatusWatch ); + + return mcResult; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::RunRepeatedlyInvalidValues +// +// Tests unsupported values in quite fast loop. Returned test result is always PASS, +// Test purpose is to crash client/server/phone. +// +// ----------------------------------------------------------------------------- + +TInt CHwrmTestCaseController::RunRepeatedlyInvalidValues() +{ + + TInt mcResult; + mcResult = KErrNone; + + iObserver.InfoMessage(_L("RunRepeatedlyInvalidValues")); + // CRepository* iSession; + TInt i,iRandIntensity, iTargets; + TInt64 iSeed; + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + iSeed = 100; + + TRAP(mcResult, iVibra = CHWRMVibra::NewL()); + if(mcResult == KErrNone) + { + + TRAP(mcResult, iMyLight = CHWRMLight::NewL(this)); + if (mcResult == KErrNone) + { + + for(i=0;i<300;i++) + { + TRAP(mcResult, iVibra->StartVibraL(5000, KMaxTInt)); + + iTargets = iMyLight->SupportedTargets(); + + mcResult = TestLightBlink(iTargets, KMaxTInt); + + mcResult = TestLightOn(10, KMaxTInt, KMaxTInt, ETrue); + + mcResult = TestLightBlink(9, KMaxTInt, KMaxTInt, KMaxTInt, KMaxTInt); + + mcResult = TestLightOn(0, -400, KMaxTInt, ETrue); + + iRandIntensity = Math::Rand(iSeed); + + TRAP(mcResult, iVibra->StartVibraL(5000, iRandIntensity)); + iObserver.InfoMessage(_L("* ")); + CTestScheduler::StartAndStopL(200); + iObserver.InfoMessage(_L(" * ")); + CTestScheduler::StartAndStopL(200); + iObserver.InfoMessage(_L(" *")); + CTestScheduler::StartAndStopL(200); + } + } + } + + delete iVibra; + iVibra = NULL; + + return mcResult; + +} + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LogResult +// Write test case result to log file +// ----------------------------------------------------------------------------- +// + +void CHwrmTestCaseController::LogResult( const TDesC& aText ) + { + iObserver.LogMessage(aText); + } + +void CHwrmTestCaseController::LogResult(const TDesC& aTestCase, TInt aErrorCode) + { + TBuf16<256> caseName; + caseName.Append(aTestCase); + + if(aErrorCode == KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" SUCCESS : %S "), &caseName); + FormatMessageL(EHwrmMessageOpLog, _L(" SUCCESS : %S "), &caseName); + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" FAIL : %S \nRTEST: Checkpoint-fail \n"), &caseName); + FormatMessageL(EHwrmMessageOpLog, _L(" FAIL : %S \nRTEST: Checkpoint-fail \n"), &caseName); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case returned with error [%d]"), aErrorCode); + FormatMessageL(EHwrmMessageOpLog, _L("Test case returned with error [%d]"), aErrorCode); + } + +// iErrCode = KErrNone; + } + +// TODO: PASS RESULT (PASS OR FAIL) AS PARAMETER TO THE OBSERVER FOR MORE FLEXIBLE FORMATTING +void CHwrmTestCaseController::LogResult(const TDesC& aTestCase, TInt aErrorCode, TInt aExpected) + { + TBuf16<256> caseName; + caseName.Append(aTestCase); + + if( aErrorCode == aExpected ) + { + FormatMessageL(EHwrmMessageOpDebug, _L( " SUCCESS : %S " ), &caseName ); + FormatMessageL(EHwrmMessageOpLog, _L( " SUCCESS : %S : (Returned: %d, expected: %d)"), &caseName, aErrorCode, aExpected ); + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L( " FAIL : %S \nRTEST: Checkpoint-fail \n" ), &caseName ); + FormatMessageL(EHwrmMessageOpLog, _L( " FAIL : %S : (Returned: %d, expected: %d) \nRTEST: Checkpoint-fail \n" ), &caseName, aErrorCode, aExpected ); + FormatMessageL(EHwrmMessageOpDebug, _L( " Test case returned with error [%d]" ), aErrorCode ); + FormatMessageL(EHwrmMessageOpLog, _L( "Test case returned unexpected error code [%d] (expected %d)" ), aErrorCode, aExpected ); + } + +// iErrCode = KErrNone; + } + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightStatusChanged +// +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightStatusChanged( TInt aTarget, CHWRMLight::TLightStatus aStatus) +{ + + //iObserver.LogMessage(_L("")); + //iMyTarget = aTarget; + iMyStatus = aStatus; + + FormatMessageL(EHwrmMessageOpDebug,_L(" Light state changed for target: 0x%x"), aTarget); + + switch ( aStatus ) + { + case CHWRMLight::ELightOn: + TEST_TRACE(_L(" Light state changed: ELightOn")); + + break; + case CHWRMLight::ELightOff: + TEST_TRACE(_L(" Light state changed: ELightOff")); + + break; + case CHWRMLight::ELightBlink: + TEST_TRACE(_L(" Light state changed: ELightBlink")); + + break; + case CHWRMLight::ELightStatusUnknown: + TEST_TRACE(_L(" Light state changed: ELightStatusUnknown")); + + break; + default: + TEST_TRACE(_L(" Light state changed: UNDEFINED !!!")); + + break; + } +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::VibraStatusChanged +// +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::VibraStatusChanged( CHWRMVibra::TVibraStatus aStatus) + { + iVibraStatus = aStatus; + + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra status changed to %d"), aStatus); + + switch ( aStatus ) + { + case CHWRMVibra::EVibraStatusNotAllowed: + TEST_TRACE(_L(" Vibra status changed: EVibraStatusNotAllowed")); + + break; + case CHWRMVibra::EVibraStatusStopped: + TEST_TRACE(_L(" Vibra status changed: EVibraStatusStopped")); + + break; + case CHWRMVibra::EVibraStatusOn: + TEST_TRACE(_L(" Vibra status changed: EVibraStatusOn")); + + break; + case CHWRMVibra::EVibraStatusUnknown: + TEST_TRACE(_L(" Vibra status changed: EVibraStatusUnknown")); + + break; + default: + TEST_TRACE(_L(" Vibra status changed: UNDEFINED !!!")); + + break; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::VibraModeChanged +// +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::VibraModeChanged( CHWRMVibra::TVibraModeState aStatus) + { + iVibraMode = aStatus; + + FormatMessageL(EHwrmMessageOpDebug,_L(" Vibra mode changed to %d"), aStatus); + + switch ( aStatus ) + { + case CHWRMVibra::EVibraModeUnknown: + TEST_TRACE(_L(" Vibra mode changed: EVibraModeUnknown")); + + break; + case CHWRMVibra::EVibraModeON: + TEST_TRACE(_L(" Vibra mode changed: EVibraModeON")); + + break; + case CHWRMVibra::EVibraModeOFF: + TEST_TRACE(_L(" Vibra mode changed: EVibraModeOFF")); + + break; + default: + TEST_TRACE(_L(" Vibra mode changed: UNDEFINED !!!")); + + break; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::FmTxStatusChanged +// +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::FmTxStatusChanged(TFmTxState aStatus) + { + FormatMessageL(EHwrmMessageOpDebug,_L("FmTx State Changed to %d "), aStatus); + iFmTxState = aStatus; + + switch (aStatus) + { + case EFmTxStateUnknown: + TEST_TRACE(_L("FmTx state changed: EFmTxStateUnknown")); + break; + case EFmTxStateOff: + TEST_TRACE(_L("FmTx state changed: EFmTxStateOff")); + break; + case EFmTxStateActive: + TEST_TRACE(_L("FmTx state changed: EFmTxStateActive")); + break; + case EFmTxStateInactive: + TEST_TRACE(_L("FmTx state changed: EFmTxStateInactive")); + break; + case EFmTxStatePowerSaveInactivity: + TEST_TRACE(_L("FmTx state changed: EFmTxStatePowerSaveInactivity")); + break; + case EFmTxStatePowerSaveAccessory: + TEST_TRACE(_L("FmTx state changed: EFmTxStatePowerSaveAccessory")); + break; + case EFmTxStateScanning: + TEST_TRACE(_L("FmTx state changed: EFmTxStateScanning")); + break; + default: + TEST_TRACE(_L("FmTx state changed: UNDEFINED !")); + break; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::FmTxFrequencyChanged +// +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::FmTxFrequencyChanged(TInt aFrequency) + { + FormatMessageL(EHwrmMessageOpDebug,_L("FmTx Frequency Changed. New Frequency = %d "), aFrequency); + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::GetStatusForSystemTarget +// Check light status for SystemTarget +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::GetLightStatusForSystemTarget( CHWRMLight* aLight, CHWRMLight::TLightStatus aStatus ) + { + + TInt mask(0); + + mask = aLight->SupportedTargets(); + + + if( ( mask & CHWRMLight::EPrimaryDisplay ) && + ( aLight->LightStatus( CHWRMLight::EPrimaryDisplay ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::EPrimaryDisplay. Status doesn't match")); + return KErrGeneral; + } + + if( ( mask & CHWRMLight::EPrimaryKeyboard ) && + ( aLight->LightStatus( CHWRMLight::EPrimaryKeyboard ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::EPrimaryKeyboard. Status doesn't match")); + return KErrGeneral; + } + + if( ( mask & CHWRMLight::ESecondaryDisplay ) && + ( aLight->LightStatus( CHWRMLight::ESecondaryDisplay ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::ESecondaryDisplay. Status doesn't match")); + return KErrGeneral; + } + + if( ( mask & CHWRMLight::ESecondaryKeyboard ) && + ( aLight->LightStatus( CHWRMLight::ESecondaryKeyboard ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::ESecondaryKeyboard. Status doesn't match")); + return KErrGeneral; + } + + return KErrNone; + + } + +TInt CHwrmTestCaseController::GetLightStatusForSystemTarget( CHWRMExtendedLight* aLight, CHWRMExtendedLight::TLightStatus aStatus ) + { + + TInt mask(0); + + mask = aLight->SupportedTargets(); + + + if( ( mask & CHWRMExtendedLight::EPrimaryDisplay ) && + ( aLight->LightStatus( CHWRMExtendedLight::EPrimaryDisplay ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::EPrimaryDisplay. Status doesn't match")); + return KErrGeneral; + } + + if( ( mask & CHWRMExtendedLight::EPrimaryKeyboard ) && + ( aLight->LightStatus( CHWRMExtendedLight::EPrimaryKeyboard ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::EPrimaryKeyboard. Status doesn't match")); + return KErrGeneral; + } + + if( ( mask & CHWRMExtendedLight::ESecondaryDisplay ) && + ( aLight->LightStatus( CHWRMExtendedLight::ESecondaryDisplay ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::ESecondaryDisplay. Status doesn't match")); + return KErrGeneral; + } + + if( ( mask & CHWRMExtendedLight::ESecondaryKeyboard ) && + ( aLight->LightStatus( CHWRMExtendedLight::ESecondaryKeyboard ) != aStatus ) ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" GetLightStatusForSystemTarget::ESecondaryKeyboard. Status doesn't match")); + return KErrGeneral; + } + + return KErrNone; + + } + + + +//------------------------------ TEST CASES------------------------------------- + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::SDKLightTargetTest +// Call Light Target Test for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightTargetTest( TInt aTargetMask ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light target test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light target test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightTargetTestSDK( currentTarget ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) + { + err = LightTargetTestExtended( currentTarget ); + } + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightTargetTest +// Set primary display on and off +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightTargetTestSDK( TInt aTarget) + { + iObserver.InfoMessage(_L("LightTargetTest")); + FormatMessageL(EHwrmMessageOpDebug, _L( " Test case: HWRM SDK [LightOnWithTarget] 0x%x" ), aTarget ); + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget ) ); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set light on for default intensity and infinite duration + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on")); + + TRAP(errVal, myLight->LightOnL( aTarget ) ); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMLight::ESystemTarget ) + { + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOn ); + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for default intensity and infinite duration")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if ( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Target light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + if((myLight->LightStatus( aTarget ) == CHWRMLight::ELightOn)) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for default intensity and infinite duration")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if (errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + } + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Target light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + + } + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + + +TInt CHwrmTestCaseController::LightTargetTestExtended( TInt aTarget) + { + iObserver.InfoMessage(_L("LightTargetTest")); + FormatMessageL(EHwrmMessageOpDebug, _L( " Test case: HWRM Extended [LightOnWithTarget] 0x%x" ), aTarget ); + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget ) ); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set light on for default intensity and infinite duration + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on")); + + TRAP(errVal, myLight->LightOnL( aTarget ) ); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for default intensity and infinite duration")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if ( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Target light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + if((myLight->LightStatus( aTarget ) == CHWRMExtendedLight::ELightOn)) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for default intensity and infinite duration")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if (errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + } + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Target light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + + } + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOnDurationTest +// Call Light Target Test for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightOnDurationTest( TInt aTargetMask, TBool aIsRGBTest, TInt aRed, TInt aGreen, TInt aBlue ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light duration test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light duration test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightOnDurationTestSDK( currentTarget, aIsRGBTest, aRed, aGreen, aBlue ); + } + else if( iApiType == EHWRMApiTypeXAPI ) + { + err = LightOnDurationTestExtended( currentTarget ); + } + else if( iApiType == EHWRMApiTypeEAPI ) + { + err = LightOnDurationTestEnhanced( currentTarget, aIsRGBTest, aRed, aGreen, aBlue ); + } + + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOnDurationTestSDK +// Set target lights on for specified duration. +// ----------------------------------------------------------------------------- +// + +TInt CHwrmTestCaseController::LightOnDurationTestSDK( TInt aTarget, TBool aIsRGBTest, TInt aRed, TInt aGreen, TInt aBlue ) + { + iObserver.InfoMessage(_L("LightOnDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM SDK [LightOnWithDuration], 0x%x"), aTarget); + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target lights off")); + //if light are on, set off for infinite duration + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + if( aIsRGBTest ) + { + TRAP(errVal, myLight->SetLightDefaultColorL( aTarget )); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->SetLightColorL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target lights on")); + + //set light on for default intensity and 3 seconds + if ( aIsRGBTest ) + { + THWRMLightColor aRGBValue; + aRGBValue.iRed = aRed; + aRGBValue.iGreen = aGreen; + aRGBValue.iBlue = aBlue; + TRAP(errVal, myLight->LightOnL( aTarget, 3000, aRGBValue)); + } + else + { + TRAP(errVal, myLight->LightOnL( aTarget, 3000)); + } + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check target light status")); + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMLight::ESystemTarget ) + { + //check that display lights are on + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOn ); + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOn")); + //wait for light on duration to expire + CTestScheduler::StartAndStopL(3100); + FormatMessageL(EHwrmMessageOpDebug,_L(" Check display light status")); + //lights should be off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOff ); + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOff ); + } + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are on + if (myLight->LightStatus( aTarget ) == CHWRMLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOn")); + //wait for light on duration to expire + CTestScheduler::StartAndStopL(3100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check display light status")); + //lights should be off + if (myLight->LightStatus( aTarget ) != CHWRMLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOnDurationTestExtended +// Set target lights on for specified duration. +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightOnDurationTestExtended( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightOnDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightOnWithDuration], 0x%x"), aTarget); + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = CHWRMExtendedLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target lights off")); + //if light are on, set off for infinite duration + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target lights on")); + + //set light on for default intensity and 3 seconds + TRAP(errVal, myLight->LightOnL( aTarget, 3000)); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check target light status")); + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are on + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOn")); + //wait for light on duration to expire + CTestScheduler::StartAndStopL(3100); + FormatMessageL(EHwrmMessageOpDebug,_L(" Check display light status")); + //lights should be off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are on + if (myLight->LightStatus( aTarget ) == CHWRMExtendedLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOn")); + //wait for light on duration to expire + CTestScheduler::StartAndStopL(3100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check display light status")); + //lights should be off + if (myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOnDurationTestEnhanced +// Set target lights on for specified duration. +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightOnDurationTestEnhanced( TInt aTarget, TBool aIsRGBTest, TInt aRed, TInt aGreen, TInt aBlue ) + { + iObserver.InfoMessage(_L("LightOnDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Enhanced [LightOnWithDuration], 0x%x"), aTarget); + TInt errVal = KErrNone; + + //create light instance + CHWRMEnhancedLight* myLight = CHWRMEnhancedLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target lights off")); + //if light are on, set off for infinite duration + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + if ( aIsRGBTest ) + { + TRAP(errVal, myLight->SetLightDefaultColorL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->SetLightColorL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target lights on")); + + //set light on for default intensity and 3 seconds + if ( aIsRGBTest ) + { + THWRMLightColor aRGBValue; + aRGBValue.iRed = aRed; + aRGBValue.iGreen = aGreen; + aRGBValue.iBlue = aBlue; + TRAP(errVal, myLight->LightOnL( aTarget, 3000, aRGBValue)); + } + else + { + TRAP(errVal, myLight->LightOnL( aTarget, 3000)); + } + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check target light status")); + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are on + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOn")); + //wait for light on duration to expire + CTestScheduler::StartAndStopL(3100); + FormatMessageL(EHwrmMessageOpDebug,_L(" Check display light status")); + //lights should be off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are on + if (myLight->LightStatus( aTarget ) == CHWRMExtendedLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOn")); + //wait for light on duration to expire + CTestScheduler::StartAndStopL(3100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check display light status")); + //lights should be off + if (myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOffDurationTest +// Call Light Off Duration Test for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightOffDurationTest( TInt aTargetMask ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light Off duration test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light Off duration test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightOffDurationTestSDK( currentTarget ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) + { + err = LightOffDurationTestExtended( currentTarget ); + } + + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOffDurationTestSDK +// Set target lights on and set lights off for 3 seconds +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightOffDurationTestSDK( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightOffDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L( " Test case: HWRM SDK [LightOffWithDuration], 0x%x"), aTarget ); + TInt errVal = KErrNone; + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target (0x%x) lights on"), aTarget); + //Set target light on for infinite duration + TRAP(errVal, myLight->LightOnL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL (0x%x) failed [%d]"), aTarget, errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target (0x%x) lights off"), aTarget); + //set light off for default intensity and 3 seconds + TRAP(errVal, myLight->LightOffL( aTarget, 3000)); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL (0x%x) failed [%d]"), aTarget, errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMLight::ESystemTarget ) + { + //check that display lights are off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOff ); + + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOff (0x%x)"), aTarget); + CTestScheduler::StartAndStopL(3100); + + //should be back on baseline (lights on) + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOn ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOn ); + } + if ( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are off + if (myLight->LightStatus( aTarget ) == CHWRMLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOff (0x%x)"), aTarget); + CTestScheduler::StartAndStopL(3100); + + //should be back on baseline (lights on) + if(myLight->LightStatus( aTarget ) != CHWRMLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightOffDurationTestExtended +// Set target lights on and set lights off for 3 seconds +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightOffDurationTestExtended( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightOffDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L( " Test case: HWRM Extended [LightOffWithDuration], 0x%x"), aTarget ); + TInt errVal = KErrNone; + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target (0x%x) lights on"), aTarget); + //Set target light on for infinite duration + TRAP(errVal, myLight->LightOnL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL (0x%x) failed [%d]"), aTarget, errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set target (0x%x) lights off"), aTarget); + //set light off for default intensity and 3 seconds + TRAP(errVal, myLight->LightOffL( aTarget, 3000)); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL (0x%x) failed [%d]"), aTarget, errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + /*Light status can be checked for one target only. If System Target is included in current target, + GetLightStatusForSystemTarget is called to check light status */ + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOff (0x%x)"), aTarget); + CTestScheduler::StartAndStopL(3100); + + //should be back on baseline (lights on) + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOn ); + } + if ( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are off + if (myLight->LightStatus( aTarget ) == CHWRMExtendedLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" ELightOff (0x%x)"), aTarget); + CTestScheduler::StartAndStopL(3100); + + //should be back on baseline (lights on) + if(myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target:(0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightIntensityTest +// Call LightIntensityTest for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightIntensityTest( TInt aTargetMask ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light intensity test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light intensity test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightIntensityTestSDK( currentTarget ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) + { + err = LightIntensityTestExtended( currentTarget ); + } + + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightIntensityTest +// Set target lights on and with different intensity levels. +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightIntensityTestSDK( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightIntensityTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" HWRM SDK [LightOnWithIntensity]")); + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + //set lights off for infinite duration + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set lights on with different intensity values + for(TInt i=0; i<=100; i+=10) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on with %d intensity"), i); + //set light on + TRAP(errVal, myLight->LightOnL( aTarget, 2000, i, ETrue)); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal ); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set timer to wait the duration + CTestScheduler::StartAndStopL(2100); + + + if( aTarget & CHWRMLight::ESystemTarget ) + { + //check that display lights are off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOff ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOff ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target(0x%x"), aTarget); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are off again + if(myLight->LightStatus( aTarget ) != CHWRMLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target(0x%x"), aTarget); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + } + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + +TInt CHwrmTestCaseController::LightIntensityTestExtended( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightIntensityTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" HWRM Extended [LightOnWithIntensity]")); + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + //set lights off for infinite duration + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set lights on with different intensity values + for(TInt i=0; i<=100; i+=10) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on with %d intensity"), i); + //set light on + TRAP(errVal, myLight->LightOnL( aTarget, 2000, i, ETrue)); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOnL() failed [%d]"), errVal ); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set timer to wait the duration + CTestScheduler::StartAndStopL(2100); + + + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are off + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target(0x%x"), aTarget); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + //check that display lights are off again + if(myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK, target(0x%x"), aTarget); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + } + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkTest +// Call LightBlinkTest for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightBlinkTest( TInt aTargetMask ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light blink test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light blink test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightBlinkTestSDK( currentTarget ); + } + else if( iApiType == EHWRMApiTypeXAPI || (iApiType == EHWRMApiTypeEAPI) ) + { + err = LightBlinkTestExtended( currentTarget ); + } + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkTestSDK +// Set target lights blink for infinite duration +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightBlinkTestSDK( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightBlinkTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM SDK [LightBlinkTest] target:0x%x"), aTarget ); + + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink + TRAP(errVal, myLight->LightBlinkL( aTarget )); + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + if( aTarget & CHWRMLight::ESystemTarget ) + { + //check that display lights are blinking + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightBlink ); + + + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + + //set lights off for 3 sec + TRAP(errVal, myLight->LightOffL( aTarget, 3000)); + + CTestScheduler::StartAndStopL( 100 ); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" iMyLight->LightOffL() (0x%x) failed [%d]"), aTarget, errVal ); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //wait 3+ seconds + CTestScheduler::StartAndStopL( 3100 ); + + //check that lights are blinking again... + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightBlink ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightBlink ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + if( myLight->LightStatus( aTarget ) == CHWRMLight::ELightBlink) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + + //set lights off for 3 sec + TRAP(errVal, myLight->LightOffL( aTarget, 3000)); + + CTestScheduler::StartAndStopL( 100 ); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" iMyLight->LightOffL() failed [%d]"), errVal ); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //wait 3+ seconds + CTestScheduler::StartAndStopL( 3100 ); + + //check that lights are blinking again... + if( myLight->LightStatus( aTarget ) != CHWRMLight::ELightBlink ) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkTestExtended +// Set target lights blink for infinite duration +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightBlinkTestExtended( TInt aTarget ) + { + + iObserver.InfoMessage(_L("LightBlinkTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightBlinkTest] target:0x%x"), aTarget ); + + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink + TRAP(errVal, myLight->LightBlinkL( aTarget )); + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are blinking + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightBlink ); + + + if( errVal == KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + + //set lights off for 3 sec + TRAP(errVal, myLight->LightOffL( aTarget, 3000)); + + CTestScheduler::StartAndStopL( 100 ); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" iMyLight->LightOffL() (0x%x) failed [%d]"), aTarget, errVal ); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //wait 3+ seconds + CTestScheduler::StartAndStopL( 3100 ); + + //check that lights are blinking again... + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightBlink ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightBlink ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + else + { + if( myLight->LightStatus( aTarget ) == CHWRMExtendedLight::ELightBlink) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + + //set lights off for 3 sec + TRAP(errVal, myLight->LightOffL( aTarget, 3000)); + + CTestScheduler::StartAndStopL( 100 ); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" iMyLight->LightOffL() failed [%d]"), errVal ); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //wait 3+ seconds + CTestScheduler::StartAndStopL( 3100 ); + + //check that lights are blinking again... + if( myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightBlink ) + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L(" Light status not OK, target: 0x%x"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug, _L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + } + } + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkDurationTest +// Call LightBlinkTest for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightBlinkDurationTest( TInt aTargetMask, TBool aIsRGBTest, TInt aRed, TInt aGreen, TInt aBlue ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light blink duration test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light blink duration test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightBlinkDurationTestSDK( currentTarget, aIsRGBTest, aRed, aGreen, aBlue ); + } + else if( iApiType == EHWRMApiTypeXAPI ) + { + err = LightBlinkDurationTestExtended( currentTarget ); + } + else if( iApiType == EHWRMApiTypeEAPI ) + { + err = LightBlinkDurationTestEnhanced( currentTarget, aIsRGBTest, aRed, aGreen, aBlue ); + } + + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkDurationTestSDK +// Set target lights to blink for defined duration +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightBlinkDurationTestSDK( TInt aTarget, TBool aIsRGBTest, TInt aRed, TInt aGreen, TInt aBlue ) + { + + //define duration for lights to blink + TInt duration( 4000 ); + + iObserver.InfoMessage(_L("LightBlinkDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM SDK [LightBlinkWithDuration], target: 0x%x"), aTarget ); + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + if ( aIsRGBTest ) + { + TRAP(errVal, myLight->SetLightDefaultColorL( aTarget )); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->SetLightDefaultColorL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink for seconds + if ( aIsRGBTest ) + { + THWRMLightColor aRGBValue; + aRGBValue.iRed = aRed; + aRGBValue.iGreen = aGreen; + aRGBValue.iBlue = aBlue; + TRAP(errVal, myLight->LightBlinkL( aTarget, duration, aRGBValue)); + } + else + { + TRAP(errVal, myLight->LightBlinkL( aTarget, duration )); + } + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + CHWRMLight::TLightStatus expectedStatus( CHWRMLight::ELightBlink ); + + if( aTarget & CHWRMLight::ESystemTarget ) + { + //check that display lights are blinking + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + + if( errVal == KErrNone ) + { + CTestScheduler::StartAndStopL( duration + 100 ); + + //check that target lights are off again + expectedStatus = CHWRMLight::ELightOff; + + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x)no OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x) not OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus); + errVal = KErrGeneral; + } + } + else + { + + if( myLight->LightStatus( aTarget ) == expectedStatus ) + { + CTestScheduler::StartAndStopL( duration + 100 ); + + //check that target lights are off again + expectedStatus = CHWRMLight::ELightOff; + + if(myLight->LightStatus( aTarget ) != expectedStatus) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status no OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x) not OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus); + errVal = KErrGeneral; + } + } + + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + return errVal; + + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkDurationTestExtended +// Set target lights to blink for defined duration +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightBlinkDurationTestExtended( TInt aTarget ) + { + + //define duration for lights to blink + TInt duration( 4000 ); + + iObserver.InfoMessage(_L("LightBlinkDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightBlinkWithDuration], target: 0x%x"), aTarget ); + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = CHWRMExtendedLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink for seconds + TRAP(errVal, myLight->LightBlinkL( aTarget, duration )); + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + CHWRMExtendedLight::TLightStatus expectedStatus( CHWRMExtendedLight::ELightBlink ); + + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are blinking + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + + if( errVal == KErrNone ) + { + CTestScheduler::StartAndStopL( duration + 100 ); + + //check that target lights are off again + expectedStatus = CHWRMExtendedLight::ELightOff; + + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x)no OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x) not OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus); + errVal = KErrGeneral; + } + } + else + { + + if( myLight->LightStatus( aTarget ) == expectedStatus ) + { + CTestScheduler::StartAndStopL( duration + 100 ); + + //check that target lights are off again + expectedStatus = CHWRMExtendedLight::ELightOff; + + if(myLight->LightStatus( aTarget ) != expectedStatus) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status no OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x) not OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus); + errVal = KErrGeneral; + } + } + + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + return errVal; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkDurationTestEnhanced +// Set target lights to blink for defined duration +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightBlinkDurationTestEnhanced( TInt aTarget, TBool aIsRGBTest, TInt aRed, TInt aGreen, TInt aBlue ) + { + + //define duration for lights to blink + TInt duration( 4000 ); + + iObserver.InfoMessage(_L("LightBlinkDurationTest")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightBlinkWithDuration], target: 0x%x"), aTarget ); + TInt errVal = KErrNone; + + //create light instance + CHWRMEnhancedLight* myLight = CHWRMEnhancedLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + if ( aIsRGBTest ) + { + TRAP(errVal, myLight->SetLightDefaultColorL( aTarget )); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->SetLightDefaultColorL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink for seconds + if ( aIsRGBTest ) + { + THWRMLightColor aRGBValue; + aRGBValue.iRed = aRed; + aRGBValue.iGreen = aGreen; + aRGBValue.iBlue = aBlue; + TRAP(errVal, myLight->LightBlinkL( aTarget, duration, aRGBValue)); + } + else + { + TRAP(errVal, myLight->LightBlinkL( aTarget, duration )); + } + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + CHWRMExtendedLight::TLightStatus expectedStatus( CHWRMExtendedLight::ELightBlink ); + + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + //check that display lights are blinking + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + + if( errVal == KErrNone ) + { + CTestScheduler::StartAndStopL( duration + 100 ); + + //check that target lights are off again + expectedStatus = CHWRMExtendedLight::ELightOff; + + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + + if(errVal != KErrNone) + { + //All targets might not be reset, so wait for some more time. + FormatMessageL(EHwrmMessageOpDebug,_L(" Wait for more time")); + CTestScheduler::StartAndStopL(KHwrmtestsLightMoreDelay); + errVal = GetLightStatusForSystemTarget( myLight, expectedStatus ); + } + + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x)no OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x) not OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus); + errVal = KErrGeneral; + } + } + else + { + + if( myLight->LightStatus( aTarget ) == expectedStatus ) + { + CTestScheduler::StartAndStopL( duration + 100 ); + + //check that target lights are off again + expectedStatus = CHWRMExtendedLight::ELightOff; + + if(myLight->LightStatus( aTarget ) != expectedStatus) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status no OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus ); + errVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status (0x%x) not OK"), aTarget ); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x, expected: 0x%x"), iMyStatus, expectedStatus); + errVal = KErrGeneral; + } + } + + + //delete light instance + CleanupStack::PopAndDestroy( myLight ); + return errVal; + + } + + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkDurationTest +// Call LightBlinkTest for multiple targets depending on selected API +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::LightBlinkOnOffTest( TInt aTargetMask ) + { + TInt currentTarget(1); + TInt err( KErrNone ); + TInt expectedResult( KErrNone ); + + TBuf<100> msg( KNullDesC ); + + _LIT( KSupportedMessageText, "HWRM [Light blink on/off test]: Target 0x%x supported" ); + _LIT( KNotSupportedMessageText, "HWRM [Light blink on/off test]: Target 0x%x not supported" ); + + //loop through all possible targets + for( TInt i = 0; i < 31; i++ ) + { + //if current target is not included in the given mask, or not defined in CenRep, KErrNot Supported is expected + if( ( aTargetMask & currentTarget ) & iSupportedTargets ) + { + expectedResult = KErrNone; + msg.Format( KSupportedMessageText, currentTarget ); + } + else + { + expectedResult = KErrNotSupported; + msg.Format( KNotSupportedMessageText, currentTarget ); + } + + + if( iApiType == EHWRMApiTypeSAPI ) + { + err = LightBlinkOnOffTestSDK( currentTarget ); + } + else if( (iApiType == EHWRMApiTypeXAPI) || (iApiType == EHWRMApiTypeEAPI) ) + { + err = LightBlinkOnOffTestExtended( currentTarget ); + } + + + LogResult( msg, err, expectedResult ); + + // shift the target ready for next loop + currentTarget <<= 1; + } + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkOnOffTestSDK +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightBlinkOnOffTestSDK( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightBlinkOnOff")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM SDK [LightBlinkOnOff], target: 0x%x"), aTarget ); + + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check light status")); + + if( aTarget & CHWRMLight::ESystemTarget ) + { + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightOff ); + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + } + + } + else + { + if(myLight->LightStatus( aTarget ) != CHWRMLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + } + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink for 5 sec + TRAP(errVal, myLight->LightBlinkL( aTarget, 5000, 500, 300, 100)); + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + //check that target lights are blinking + if( aTarget & CHWRMLight::ESystemTarget ) + { + errVal = GetLightStatusForSystemTarget( myLight, CHWRMLight::ELightBlink ); + + if(errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not Ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + //wait before returning + CTestScheduler::StartAndStopL(5000); + } + } + else + { + if(myLight->LightStatus( aTarget ) != CHWRMLight::ELightBlink) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not Ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + //wait before returning + CTestScheduler::StartAndStopL(5000); + } + } + + // delete light instance + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightBlinkOnOffTestExtended +// +// ----------------------------------------------------------------------------- +// + TInt CHwrmTestCaseController::LightBlinkOnOffTestExtended( TInt aTarget ) + { + iObserver.InfoMessage(_L("LightBlinkOnOff")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightBlinkOnOff], target: 0x%x"), aTarget ); + + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Check light status")); + + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightOff ); + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + } + else + { + if(myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightOff) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off")); + TRAP(errVal, myLight->LightOffL( aTarget )); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + } + } + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink")); + + //set lights to blink for 5 sec + TRAP(errVal, myLight->LightBlinkL( aTarget, 5000, 500, 300, 100)); + + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" iMyLight->LightBlinkL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + + //check that target lights are blinking + if( aTarget & CHWRMExtendedLight::ESystemTarget ) + { + errVal = GetLightStatusForSystemTarget( myLight, CHWRMExtendedLight::ELightBlink ); + + if(errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not Ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + //wait before returning + CTestScheduler::StartAndStopL(5000); + } + } + else + { + if( myLight->LightStatus( aTarget ) != CHWRMExtendedLight::ELightBlink) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not Ok")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), iMyStatus); + errVal = KErrGeneral; + //wait before returning + CTestScheduler::StartAndStopL(5000); + } + } + + // delete light instance + CleanupStack::PopAndDestroy( myLight ); + return errVal; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightWithDifferentTargetsSDK +// Set primary display lights off and on with different targets +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightWithDifferentTargetsSDK( ) + { + iObserver.InfoMessage( _L( "LightWithDifferentTargetsSDK" ) ); + FormatMessageL(EHwrmMessageOpDebug, _L( " Test case: HWRM SDK [LightWithDifferentTargets]" ) ); + + TInt errVal( KErrNone ); + CHWRMLight::TLightStatus myStatus; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + //set lights off + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + TRAP( errVal, myLight->LightOffL( CHWRMLight::EPrimaryDisplayAndKeyboard ) ); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set lights on + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + //set lights on for 3 sec + TRAP(errVal, myLight->LightOnL(CHWRMLight::EPrimaryDisplayAndKeyboard, 3000)); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //check that display lights are on + myStatus = myLight->LightStatus(CHWRMLight::EPrimaryDisplay); + if(myStatus != CHWRMLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug, _L( "LightWithDifferentTargetsSDK # Display Light status not OK!!! Status: 0x%x" ), myStatus ); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //check that keyboard lights are on + myStatus = myLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + if(myStatus != CHWRMLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L("LightWithDifferentTargetsSDK # Keyboard Light status not OK!!! Status:0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //wait that lights are off again + CTestScheduler::StartAndStopL(3100); + + //set lights on for primary keyboard + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary keyboard")); + TRAP(errVal, myLight->LightOnL(CHWRMLight::EPrimaryKeyboard, 5000)); + CTestScheduler::StartAndStopL(1000); + if (errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //check that keyboard lights are on + myStatus = myLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + + if( myStatus == CHWRMLight::ELightOn ) + { + //set lights to blink + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink for primary keyboard")); + TRAP(errVal, myLight->LightBlinkL(CHWRMLight::EPrimaryKeyboard, 5000)); + CTestScheduler::StartAndStopL(1000); + //check light status + myStatus = myLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + if(myStatus != CHWRMLight::ELightBlink) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L("LightWithDifferentTargetsSDK # Keyboard light status: 0x%x"), myStatus); + errVal = KErrGeneral; + } + else + { + errVal = KErrNone; + } + CTestScheduler::StartAndStopL(4100); + + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Light status not OK" ) ); + FormatMessageL(EHwrmMessageOpDebug, _L( " Keyboard light status: 0x%x" ), myStatus ); + errVal = KErrGeneral; + } + + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightWithDifferentTargetsExtended +// Set primary display lights off and on with different targets +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightWithDifferentTargetsExtended( ) + { + iObserver.InfoMessage( _L( "LightWithDifferentTargetsExtended" ) ); + FormatMessageL(EHwrmMessageOpDebug, _L( " Test case: HWRM Extended [LightWithDifferentTargets]" ) ); + + TInt errVal( KErrNone ); + CHWRMExtendedLight::TLightStatus myStatus; + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + //set lights off + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + TRAP( errVal, myLight->LightOffL( CHWRMExtendedLight::EPrimaryDisplayAndKeyboard ) ); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOffL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //set lights on + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + //set lights on for 3 sec + TRAP(errVal, myLight->LightOnL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard, 3000)); + CTestScheduler::StartAndStopL(100); + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + //check that display lights are on + myStatus = myLight->LightStatus(CHWRMExtendedLight::EPrimaryDisplay); + if(myStatus != CHWRMExtendedLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug, _L( "LightWithDifferentTargetsExtended # Display Light status not OK!!! Status: 0x%x" ), myStatus ); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //check that keyboard lights are on + myStatus = myLight->LightStatus(CHWRMExtendedLight::EPrimaryKeyboard); + if(myStatus != CHWRMExtendedLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L("LightWithDifferentTargetsExtended # Keyboard Light status not OK!!! Status:0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //wait that lights are off again + CTestScheduler::StartAndStopL(3100); + + //set lights on for primary keyboard + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary keyboard")); + TRAP(errVal, myLight->LightOnL(CHWRMExtendedLight::EPrimaryKeyboard, 5000)); + CTestScheduler::StartAndStopL(1000); + if (errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //check that keyboard lights are on + myStatus = myLight->LightStatus(CHWRMExtendedLight::EPrimaryKeyboard); + + if( myStatus == CHWRMExtendedLight::ELightOn ) + { + //set lights to blink + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights to blink for primary keyboard")); + TRAP(errVal, myLight->LightBlinkL(CHWRMExtendedLight::EPrimaryKeyboard, 5000)); + CTestScheduler::StartAndStopL(1000); + //check light status + myStatus = myLight->LightStatus(CHWRMExtendedLight::EPrimaryKeyboard); + if(myStatus != CHWRMExtendedLight::ELightBlink) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L("LightWithDifferentTargetsSDK # Keyboard light status: 0x%x"), myStatus); + errVal = KErrGeneral; + } + else + { + errVal = KErrNone; + } + CTestScheduler::StartAndStopL(4100); + + } + else + { + FormatMessageL(EHwrmMessageOpDebug, _L( " Light status not OK" ) ); + FormatMessageL(EHwrmMessageOpDebug, _L( " Keyboard light status: 0x%x" ), myStatus ); + errVal = KErrGeneral; + } + + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightWithInvalidDurationSDK() +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightWithInvalidDurationSDK( ) + { + iObserver.InfoMessage(_L("LightWithInvalidDurationSDK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM SDK [LightWithInvalidDuration]")); + + CHWRMLight::TLightStatus myStatus; + TInt retVal1(KErrNone); + TInt retVal2(KErrNone); + TInt retVal3(KErrNone); + TInt retVal4(KErrNone); + TInt maxDuration(KHWRMLightMaxDuration); + TInt infDuration(KHWRMInfiniteDuration); + TInt errVal = KErrNone; + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //Set lights off for infinite duration + TRAP(errVal, myLight->LightOffL(CHWRMLight::EPrimaryDisplayAndKeyboard)); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + //set lights on for too long duration KHWRMLightMaxDuration+1 //KErrArgument + TRAP(retVal1, myLight->LightOnL(CHWRMLight::EPrimaryDisplayAndKeyboard, (maxDuration+1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + //set lights on for infinite duration KHWRMInfiniteDuration//KErrArgument + TRAP(retVal2, myLight->LightOnL(CHWRMLight::EPrimaryDisplayAndKeyboard, (infDuration-1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + myLight->LightOnL(CHWRMLight::EPrimaryDisplayAndKeyboard, KHWRMInfiniteDuration); + CTestScheduler::StartAndStopL(100); + + //check light status for primary display + myStatus = myLight->LightStatus( CHWRMLight::EPrimaryDisplay ); + if( myStatus != CHWRMLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Primary display light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + //check light status for primary keyboard + myStatus = myLight->LightStatus( CHWRMLight::EPrimaryKeyboard ); + if( myStatus != CHWRMLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Primary keyboard light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //set lights off for too long duration KHWRMInfiniteDuration-1 //KErrArgument + TRAP(retVal3, myLight->LightOffL(CHWRMLight::EPrimaryDisplayAndKeyboard, (infDuration-1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //set lights off for too long duration KHWRMLightMaxDuration+1 //KErrArgument + TRAP(retVal4, myLight->LightOffL(CHWRMLight::EPrimaryDisplayAndKeyboard, (maxDuration+1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" ret1[%d], ret2[%d], ret3[%d], ret4[%d]"), retVal1, retVal2, retVal3, retVal4); + + if (retVal1 != KErrArgument || retVal2 != KErrArgument || retVal3 != KErrArgument || retVal4 != KErrArgument) + { + errVal = KErrGeneral; + } + else + { + errVal = KErrNone; + } + + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightWithInvalidDurationExtended() +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightWithInvalidDurationExtended() + { + iObserver.InfoMessage(_L("LightWithInvalidDurationExtended")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightWithInvalidDuration]")); + + CHWRMExtendedLight::TLightStatus myStatus; + TInt retVal1(KErrNone); + TInt retVal2(KErrNone); + TInt retVal3(KErrNone); + TInt retVal4(KErrNone); + TInt maxDuration(KHWRMLightMaxDuration); + TInt infDuration(KHWRMInfiniteDuration); + TInt errVal = KErrNone; + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //Set lights off for infinite duration + TRAP(errVal, myLight->LightOffL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard)); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + //set lights on for too long duration KHWRMLightMaxDuration+1 //KErrArgument + TRAP(retVal1, myLight->LightOnL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard, (maxDuration+1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + //set lights on for infinite duration KHWRMInfiniteDuration//KErrArgument + TRAP(retVal2, myLight->LightOnL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard, (infDuration-1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display and keyboard")); + myLight->LightOnL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard, KHWRMInfiniteDuration); + CTestScheduler::StartAndStopL(100); + + //check light status for primary display + myStatus = myLight->LightStatus( CHWRMExtendedLight::EPrimaryDisplay ); + if( myStatus != CHWRMExtendedLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Primary display light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + //check light status for primary keyboard + myStatus = myLight->LightStatus( CHWRMExtendedLight::EPrimaryKeyboard ); + if( myStatus != CHWRMExtendedLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Primary keyboard light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //set lights off for too long duration KHWRMInfiniteDuration-1 //KErrArgument + TRAP(retVal3, myLight->LightOffL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard, (infDuration-1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //set lights off for too long duration KHWRMLightMaxDuration+1 //KErrArgument + TRAP(retVal4, myLight->LightOffL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard, (maxDuration+1))); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" ret1[%d], ret2[%d], ret3[%d], ret4[%d]"), retVal1, retVal2, retVal3, retVal4); + + if (retVal1 != KErrArgument || retVal2 != KErrArgument || retVal3 != KErrArgument || retVal4 != KErrArgument) + { + errVal = KErrGeneral; + } + else + { + errVal = KErrNone; + } + + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightIntensitySDK() +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightIntensitySDK( ) + { + //iObserver.InfoMessage(_L("LightIntensity")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM SDK [LightWithIntensity]")); + + CHWRMLight::TLightStatus myStatus; + TInt defIntensity( KHWRMDefaultIntensity ); + TInt maxIntensity( KHWRMLightMaxIntensity ); + TInt minIntensity( KHWRMLightMinIntensity ); + + TInt errVal( KErrNone ); + + //create light instance + CHWRMLight* myLight = CHWRMLight::NewLC(); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //Set lights off for infinite duration + TRAP(errVal, myLight->LightOffL(CHWRMLight::EPrimaryDisplayAndKeyboard)); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display")); + + TRAP( errVal, myLight->LightOnL( CHWRMLight::EPrimaryDisplay, 2000, defIntensity, ETrue ) ); + CTestScheduler::StartAndStopL(100); + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + myStatus = myLight->LightStatus( CHWRMLight::EPrimaryDisplay ); + if ( myStatus != CHWRMLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + CTestScheduler::StartAndStopL(2000); + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary keyboard")); + + TRAP( errVal, myLight->LightOnL( CHWRMLight::EPrimaryKeyboard, 2000, maxIntensity, ETrue ) ); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + myStatus = myLight->LightStatus( CHWRMLight::EPrimaryKeyboard ); + if(myStatus != CHWRMLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Keyboard light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //wait that lights are off + CTestScheduler::StartAndStopL(2000); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display")); + + TRAP(errVal, myLight->LightOnL(CHWRMLight::EPrimaryDisplay, 2000, minIntensity, ETrue)); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + myStatus = myLight->LightStatus( CHWRMLight::EPrimaryDisplay ); + if( myStatus != CHWRMLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + CTestScheduler::StartAndStopL(2000); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for keyboard display (-100)")); //KErrArgument + + TRAP(errVal, myLight->LightOnL(CHWRMLight::EPrimaryDisplay, 2000, -100, ETrue)); + CTestScheduler::StartAndStopL(100); + if( errVal == KErrArgument ) + { + errVal = KErrNone; + } + + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightIntensityExtended() +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::LightIntensityExtended( ) + { + iObserver.InfoMessage(_L("LightIntensityExtended")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Test case: HWRM Extended [LightWithIntensity]")); + + CHWRMExtendedLight::TLightStatus myStatus; + TInt defIntensity( KHWRMDefaultIntensity ); + TInt maxIntensity( KHWRMLightMaxIntensity ); + TInt minIntensity( KHWRMLightMinIntensity ); + + TInt errVal( KErrNone ); + + //create light instance + CHWRMExtendedLight* myLight = NULL; + + if ( iApiType == EHWRMApiTypeEAPI ) + { + myLight = CHWRMEnhancedLight::NewLC(); + } + else + { + myLight = CHWRMExtendedLight::NewLC(); + } + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights off for primary display and keyboard")); + //Set lights off for infinite duration + TRAP(errVal, myLight->LightOffL(CHWRMExtendedLight::EPrimaryDisplayAndKeyboard)); + CTestScheduler::StartAndStopL(100); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display")); + + TRAP( errVal, myLight->LightOnL( CHWRMExtendedLight::EPrimaryDisplay, 2000, defIntensity, ETrue ) ); + CTestScheduler::StartAndStopL(100); + if( errVal != KErrNone ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + myStatus = myLight->LightStatus( CHWRMExtendedLight::EPrimaryDisplay ); + if ( myStatus != CHWRMExtendedLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + CTestScheduler::StartAndStopL(2000); + + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary keyboard")); + + TRAP( errVal, myLight->LightOnL( CHWRMExtendedLight::EPrimaryKeyboard, 2000, maxIntensity, ETrue ) ); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + myStatus = myLight->LightStatus( CHWRMExtendedLight::EPrimaryKeyboard ); + if(myStatus != CHWRMExtendedLight::ELightOn) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Keyboard light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + //wait that lights are off + CTestScheduler::StartAndStopL(2000); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for primary display")); + + TRAP(errVal, myLight->LightOnL(CHWRMExtendedLight::EPrimaryDisplay, 2000, minIntensity, ETrue)); + CTestScheduler::StartAndStopL(100); + + if(errVal != KErrNone) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" myLight->LightOnL() failed [%d]"), errVal); + CleanupStack::PopAndDestroy( myLight ); + return errVal; + } + + myStatus = myLight->LightStatus( CHWRMExtendedLight::EPrimaryDisplay ); + if( myStatus != CHWRMExtendedLight::ELightOn ) + { + FormatMessageL(EHwrmMessageOpDebug,_L(" Light status not OK")); + FormatMessageL(EHwrmMessageOpDebug,_L(" Display light status: 0x%x"), myStatus); + CleanupStack::PopAndDestroy( myLight ); + return KErrGeneral; + } + + CTestScheduler::StartAndStopL(2000); + + FormatMessageL(EHwrmMessageOpDebug,_L(" Set lights on for keyboard display (-100)")); //KErrArgument + + TRAP(errVal, myLight->LightOnL(CHWRMExtendedLight::EPrimaryDisplay, 2000, -100, ETrue)); + CTestScheduler::StartAndStopL(100); + if( errVal == KErrArgument ) + { + errVal = KErrNone; + } + + CleanupStack::PopAndDestroy( myLight ); + + return errVal; + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::LightWithInvalidTarget +// +// ----------------------------------------------------------------------------- +// +/*TInt CHwrmTestCaseController::LightWithInvalidTarget( ) + { + iObserver.InfoMessage(_L("LightWithInvalidTarget")); + TInt retVal1(0), retVal2(0); + CHWRMLight::TLightTarget invalidTarget = 20; + + errVal = KErrNone; + //create light instance + iMyLight = CHWRMLight::NewL(this); + + //Set lights off for infinite duration + iMyLight->LightOffL(CHWRMLight::EPrimaryDisplayAndKeyboard); + + //try to set lights on for invalid target //KErrNotSupported + TRAP(retVal1, iMyLight->LightOnL(invalidTarget, KHWRMLightMaxDuration)); + + iMyLight->LightOnL(CHWRMLight::EPrimaryDisplayAndKeyboard, KHWRMInfiniteDuration); + CTestScheduler::StartAndStopL(1000); + + if(iMyStatus != ELightOn) + { + delete iMyLight; + return (errVal = KErrGeneral); + } + + //try to set lights off for invalid target //KErrNotSupported + TRAP(retVal2, iMyLight->LightOffL(invalidTarget, KHWRMInfiniteDuration); + + if (retVal1 == KErrNotSupported && retVal2 == KErrNotSupported) + { + errVal = KErrNone; + } + else + { + errVal = KErrGeneral; + } + + delete iMyLight; + return errVal; + + }*/ + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage) + { + SendMessage(aOp,aMessage); + } + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage, TInt aArg1) + { + HBufC* message = HBufC::NewLC(aMessage.Length() + 10); + message->Des().Format(aMessage,aArg1); + SendMessage(aOp,*message); + CleanupStack::PopAndDestroy(message); + } + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage, TInt aArg1, TInt aArg2) + { + HBufC* message = HBufC::NewLC(aMessage.Length() + 20); + message->Des().Format(aMessage,aArg1,aArg2); + SendMessage(aOp,*message); + CleanupStack::PopAndDestroy(message); + } + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage, TInt aArg1, TInt aArg2, TInt aArg3) + { + HBufC* message = HBufC::NewLC(aMessage.Length() + 30); + message->Des().Format(aMessage,aArg1,aArg2,aArg3); + SendMessage(aOp,*message); + CleanupStack::PopAndDestroy(message); + } + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage, TInt aArg1, TInt aArg2, TInt aArg3, TInt aArg4) + { + HBufC* message = HBufC::NewLC(aMessage.Length() + 40); + message->Des().Format(aMessage,aArg1,aArg2,aArg3,aArg4); + SendMessage(aOp,*message); + CleanupStack::PopAndDestroy(message); + } + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage, const TDesC* aArg1) + { + HBufC* message = HBufC::NewLC(aMessage.Length() + aArg1->Length() + 10); + message->Des().Format(aMessage,aArg1); + SendMessage(aOp,*message); + CleanupStack::PopAndDestroy(message); + } + +void CHwrmTestCaseController::FormatMessageL(THwrmMessageOp aOp, const TDesC& aMessage, const TDesC* aArg1, TInt aArg2, TInt aArg3) + { + HBufC* message = HBufC::NewLC(aMessage.Length() + aArg1->Length() + 20); + message->Des().Format(aMessage,aArg1,aArg2,aArg3); + SendMessage(aOp,*message); + CleanupStack::PopAndDestroy(message); + } + +// NOTE: this is not very elegant, but it's just test code... improve in future if needed +void CHwrmTestCaseController::SendMessage(THwrmMessageOp aOp, const TDesC& aMessage) + { + switch(aOp) + { + case EHwrmMessageOpInfo: + iObserver.InfoMessage(aMessage); + break; + case EHwrmMessageOpLog: + iObserver.LogMessage(aMessage); + break; + case EHwrmMessageOpDebug: + iObserver.DebugMessage(aMessage); + break; + default: + break; + } + } + +// +// +// + +/* TeK -> */ + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::RunSlaveMode +// +// This method is called when application is started in SLAVE-mode +// +// ----------------------------------------------------------------------------- +// +void CHwrmTestCaseController::RunSlaveMode() +{ + if (iMcFramework == NULL) + { + TRAPD(err,iMcFramework = CMcFramework::NewL()); + if (err) + { + _LIT(KErrorMsg,"Failed to instantiate CMcFramework. Aborting multiclient cases (slave mode)"); + iObserver.LogMessage(KErrorMsg); + return; + } + } + + TInt tcase = 0; + TInt recStat = KErrNone; + + while (tcase != EHWRMQuitTest) + { + tcase = iMcFramework->WaitTestToStart(); + + if (tcase != EHWRMQuitTest) + { + switch(tcase) + { + case (EMultiClientCase1): + recStat = MC_Primary_display_light_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase2): + recStat = MC_Display_on_and_keyboard_blink_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase3): + recStat = MC_Display_on_and_keyboard_reserved_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase4): + recStat = MC_Display_and_keyboard_blink_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase5): + recStat = MC_Vibra_Basic_Usage_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase6): + recStat = Verify_MCFramework_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase7): + recStat = MC_Combined_light_and_vibra_usage_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase8): + recStat = MC_Combined_light_and_vibra_usage_2_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase9): + recStat = MC_FmTx_Basic_Usage_S(); + iMcFramework->StepExecuted(recStat); + break; + case (EMultiClientCase14): + recStat = MC_Display_RGB_S(); + iMcFramework->StepExecuted(recStat); + break; + default: + iMcFramework->StepExecuted(KErrGeneral); + } + } + + } +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::Verify_MCFramework_S +// Slave side test case to verify McFramework functionality +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::Verify_MCFramework_S() +{ + + FormatMessageL(EHwrmMessageOpDebug,_L("Verify_MCFramework_S() starting")); + + CTestScheduler::StartAndStopL(1000); // Testin suoritusta + + iMcFramework->StepExecuted(KErrNone); // palautetaan testistepin tulos + TInt execStep = iMcFramework->WaitNextTestStep(); // mennään odottamaan seuraavaa steppiä + + CTestScheduler::StartAndStopL(1000); // Testin suoritus jatkuu + + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + + FormatMessageL(EHwrmMessageOpDebug,_L("Verify_MCFramework_S() done")); + + return KErrNone; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Primary_display_light_S +// Light usage with two applications / This application is on the background +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Primary_display_light_S() + { + + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Primary_display_light_S()")); + TInt iErrVal = KErrNone; + CHWRMLight::TLightStatus currStatus; + CHWRMLight::TLightStatus origStatus; + + //create light instance + TRAP(iErrVal, iMyLight = CHWRMLight::NewL(this)); + + if (iErrVal == KErrNone) + { + + origStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + //reserve light, Restore state after release = True, Force CoeNoeEnvOn = True + TRAP(iErrVal, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplay, ETrue, ETrue)); + + if (iErrVal == KErrNone) + { + // Reservation was OK + + // Set primary display light blinking + iErrVal = TestLightBlink(CHWRMLight::EPrimaryDisplay, 10000, 1000, 1000, 100); + + if (iErrVal == KErrNone) + { + // Check light status + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if (currStatus == CHWRMLight::ELightBlink ) + { + /* Light status is OK */ + + iMcFramework->StepExecuted(KErrNone); + iErrVal = iMcFramework->WaitNextTestStep(); + + if (iErrVal == KErrNone) + { + /* Test execution was OK in peer-application */ + + /* Check current light status */ + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if (currStatus == CHWRMLight::ELightBlink) + { + /* OK, light is still blinking */ + + /* Wait 10 seconds */ + CTestScheduler::StartAndStopL(10000); + + // Release light, then status should return in state as it was before reservation + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplay); + + CTestScheduler::StartAndStopL(2000); + /* Check light status */ + currStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currStatus == origStatus) + { + /* OK, light is not blinking anymore */ + iErrVal = KErrNone; + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong light status %d. Expected original: %d"), currStatus, origStatus); + iErrVal = KErrGeneral; + } + + } + else + { + // wrong light status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong light status:%d. Expected [Blink]"), currStatus); + iErrVal = KErrGeneral; + } + } + else + { + // execution failed in peer-application + FormatMessageL(EHwrmMessageOpDebug,_L("Execution failed peer. Error:%d"), iErrVal); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong light status [%d]. Expected [Blink]"), currStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Set light blinking failed + FormatMessageL(EHwrmMessageOpDebug,_L("Set light blink Error:%d"),iErrVal); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("ReserveLightL returned error %d"), iErrVal); + } + } + delete iMyLight; + return iErrVal; + + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Display_on_and_keyboard_blink_S +// Light usage with two applications +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Display_on_and_keyboard_blink_S() + { + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_on_and_keyboard_blink_S()")); + TInt iErrVal = KErrNone; + CHWRMLight::TLightStatus currKeybStatus; + CHWRMLight::TLightStatus currDispStatus; + CHWRMLight::TLightStatus origKeybStatus; + CHWRMLight::TLightStatus origDispStatus; + + TRAP(iErrVal, iMyLight = CHWRMLight::NewL(this)); + + if (iErrVal == KErrNone) + { + + origKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + if(origKeybStatus == CHWRMLight::ELightStatusUnknown) + { + origKeybStatus = CHWRMLight::ELightOff; + } + + origDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + if(origDispStatus == CHWRMLight::ELightStatusUnknown) + { + origDispStatus = CHWRMLight::ELightOff; + } + + //reserve light + TRAP(iErrVal, iMyLight->ReserveLightL(CHWRMLight::EPrimaryKeyboard, ETrue, ETrue)); + + if (iErrVal == KErrNone) + { + iErrVal = TestLightBlink(CHWRMLight::EPrimaryKeyboard, 10000, 1000, 1000, 100); + + if (iErrVal == KErrNone) + { + currKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + currDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currKeybStatus == CHWRMLight::ELightBlink && currDispStatus == origDispStatus) + { + /* Step executed succesfully */ + + iMcFramework->StepExecuted(KErrNone); + iErrVal = iMcFramework->WaitNextTestStep(); + + if (iErrVal == KErrNone) + { + + currKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + currDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currKeybStatus == CHWRMLight::ELightBlink /*&& currDispStatus == CHWRMLight::ELightOn*/) //SELVITÄ ONKO OK? + { + + CTestScheduler::StartAndStopL(5000); + + iMyLight->ReleaseLight(CHWRMLight::EPrimaryKeyboard); // Muutos 22.6. TeK + + currKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + currDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if(currKeybStatus == origKeybStatus /*&& currDispStatus == origDispStatus*/) + { + + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + iErrVal = KErrNone; + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong status Display:%d, Keyboard:%d"),currDispStatus, currKeybStatus); + iErrVal = KErrGeneral; + } + + + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("H\xd6\xd6\xd6Wrong status. Expected:%d, received:%d"),CHWRMLight::ELightBlink, currKeybStatus); + iErrVal = KErrGeneral; + } + + } + else + { + // testi feilasi masterissa + FormatMessageL(EHwrmMessageOpDebug,_L("Error from peer application:%d"),iErrVal); + } + } + else + { + // väärä status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong status! Display:%d, Keyboard:%d"),currDispStatus, currKeybStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Blink failed + FormatMessageL(EHwrmMessageOpDebug,_L("Set keyboard light blink failed:%d"),iErrVal); + } + } + else + { + // valon varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L("Light reservation failed"),iErrVal); + } + } + + delete iMyLight; + return iErrVal; + } + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Display_on_and_keyboard_reserved_S +// Light usage with two applications +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Display_on_and_keyboard_reserved_S() + { + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_on_and_keyboard_reserved_S()")); + TInt iErrVal = KErrNone; + CHWRMLight::TLightStatus currKeyStatus; + CHWRMLight::TLightStatus currDispStatus; + CHWRMLight::TLightStatus origKeybStatus; + CHWRMLight::TLightStatus origDispStatus; + + TRAP(iErrVal, iMyLight = CHWRMLight::NewL(this)); + + if (iErrVal == KErrNone) + { + + origKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + origDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + //reserve light + TRAP(iErrVal, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, EFalse)); + + if(iErrVal != KErrNone /*== KErrNotReady*/) + { + // Reservation cannot succeed because trying to reserve while on background + + iErrVal = TestLightBlink(CHWRMLight::EPrimaryDisplayAndKeyboard); + + if(iErrVal != KErrNone /*== KErrInUse*/ ) + { + // Cannot set light because foreground application has reserved display and keyboard + + currKeyStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + currDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if ( origKeybStatus == currKeyStatus && origDispStatus == currDispStatus ) + { + // Status has not changed -> OK + + CTestScheduler::StartAndStopL(2000); + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplayAndKeyboard); + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + iErrVal = KErrNone; + } + else + { + // Status has changed -> error + FormatMessageL(EHwrmMessageOpDebug,_L("Unexpected status change :From:%d,%d To:%d,%d"),origKeybStatus, origDispStatus, currKeyStatus, currDispStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Test blink antoi väärän errorin + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong error from peer application:%d"),iErrVal); + + } + } + else + { + // varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L("Reservation failed reason:%d"),iErrVal); + } + } + + delete iMyLight; + return iErrVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Display_and_keyboard_blink_S +// Light usage with two applications +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Display_and_keyboard_blink_S() + { + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Display_and_keyboard_blink_S()")); + TInt iErrVal = KErrNone; + CHWRMLight::TLightStatus currKeyStatus(CHWRMLight::ELightBlink); + CHWRMLight::TLightStatus currDispStatus(CHWRMLight::ELightBlink); + CHWRMLight::TLightStatus origKeyStatus; + CHWRMLight::TLightStatus origDispStatus; + + TRAP(iErrVal, iMyLight = CHWRMLight::NewL(this)); + + if (iErrVal == KErrNone) + { + + CTestScheduler::StartAndStopL(1000); + + origKeyStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + origDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + //reserve light + TRAP(iErrVal, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, EFalse)); + + if(iErrVal == KErrNotReady) // was KErrone + { + iErrVal = TestLightOn(CHWRMLight::EPrimaryDisplayAndKeyboard, 5000, 75, EFalse); + + if(iErrVal == KErrInUse) + { + CTestScheduler::StartAndStopL(2000); + + // Tarkista valo + currKeyStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + currDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + /* Light should be same as at the beginning */ + + if (origKeyStatus == currKeyStatus && origDispStatus == currDispStatus) + { + iMcFramework->StepExecuted(KErrNone); + + iErrVal = iMcFramework->WaitNextTestStep(); + + if (iErrVal == KErrNone) + { + // Light status should be now ON + + currKeyStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + currDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if (currKeyStatus == CHWRMLight::ELightOn && currDispStatus == CHWRMLight::ELightOn) + { + // status is OK + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplayAndKeyboard); + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + iErrVal = KErrNone; + } + else + { + // Display status has not restóred to original values + FormatMessageL(EHwrmMessageOpDebug,_L("Unexpected status. Keyboard:%d Display:%d"),currKeyStatus, currDispStatus); + iErrVal = KErrGeneral; + + } + + } + else + { + // Test failed peer + FormatMessageL(EHwrmMessageOpDebug,_L("Test failed failed peer:%d"),iErrVal); + } + } + else + { + // light status has changed for some reason??? + // it should not because this client is not allowed to do changes in light + // and client that has reserved light has not ordered any change in light + FormatMessageL(EHwrmMessageOpDebug,_L("Unexpected status. Keyboard:%d Display:%d"),currKeyStatus, currDispStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Light on epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L("Unexpected status. Keyboard:%d Display:%d"),currKeyStatus, currDispStatus); + iErrVal = KErrGeneral; + } + } + else + { + // varaus epäonnistui + FormatMessageL(EHwrmMessageOpDebug,_L("Reservation failed:%d"),iErrVal); + } + } + + delete iMyLight; + return iErrVal; + } + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Vibra_Basic_Usage_S +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Vibra_Basic_Usage_S() +{ + + FormatMessageL(EHwrmMessageOpDebug,_L("MC_Vibra_Basic_Usage_S()")); + TInt iErrVal = KErrNone; + CHWRMVibra::TVibraStatus vibraStatus; + + TRAP(iErrVal, iVibra = CHWRMVibra::NewL()); + + if (iErrVal == KErrNone) + { + /*****************/ + /* Reserve Vibra */ + /*****************/ + TRAP(iErrVal, iVibra->ReserveVibraL(ETrue, ETrue)); + + if (iErrVal == KErrNone) + { + /*************************/ + /* S T A R T V I B R A */ + /*************************/ + iErrVal = RunTestVibra(2000); // Run vibra 2s + + if (iErrVal == KErrNone) + { + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus == CHWRMVibra::EVibraStatusOn /* || vibraStatus == CHWRMVibra::EVibraStatusUnknown*/) + { + CTestScheduler::StartAndStopL(2000); + + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus == CHWRMVibra::EVibraStatusStopped) + { + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + iErrVal = iMcFramework->WaitNextTestStep(); + + /*************************/ + /* S T A R T V I B R A */ + /*************************/ + iErrVal = RunTestVibra(5000); // Run vibra 5s + if (iErrVal == KErrNone) + { + // Vibra start OK + // Check status + vibraStatus = iVibra->VibraStatus(); + if(vibraStatus == CHWRMVibra::EVibraStatusOn) + { + /*****************/ + /* Step executed */ + /*****************/ + iMcFramework->StepExecuted(KErrNone); + iErrVal = iMcFramework->WaitNextTestStep(); + + if (iErrVal == KErrNone) + { + // Check status + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus == CHWRMVibra::EVibraStatusOn) + { + //OK + CTestScheduler::StartAndStopL(5000); + + vibraStatus = iVibra->VibraStatus(); + if(vibraStatus == CHWRMVibra::EVibraStatusStopped) + { + // Test is over --> release resources + /*****************/ + /* Step executed */ + /*****************/ + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + + iErrVal = KErrNone; + } + else + { + // Wrong vibra status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status5 (%d), expected STOPPED"),vibraStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Wrong status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status4 (%d), expected ON"),vibraStatus); + iErrVal = KErrGeneral; + } + } + else + { + // test failed in master + FormatMessageL(EHwrmMessageOpDebug,_L("Error from peer (%d)"),iErrVal); + } + + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status3 (%d), expected ON"),vibraStatus); + iErrVal = KErrGeneral; + } + + } + else + { + // Start vibra failed + FormatMessageL(EHwrmMessageOpDebug,_L("Vibra start failed (%d)"),iErrVal); + + } + } + else + { + // Wrong status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status2 (%d), expected STOPPED"),vibraStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Wrong vibra status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status1 (%d), expected ON"),vibraStatus); + iErrVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("Vibra start failed (%d)"),iErrVal); + + } + + /*****************/ + /* Release vibra */ + /*****************/ + iVibra->ReleaseVibra(); + } + else + { + // Reserve failed + FormatMessageL(EHwrmMessageOpDebug,_L("Vibra reservation failed (%d)"),iErrVal); + + } + } + delete iVibra; iVibra = NULL; + return iErrVal; + +} + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_S +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_S() +{ + + TInt iErrVal = KErrNone; + + // CRepository* iSession; + CHWRMVibra::TVibraStatus vibraStatus; + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + + TRAP(iErrVal, iVibra = CHWRMVibra::NewL()); + + if (iErrVal == KErrNone) + { + // Check status + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus == CHWRMVibra::EVibraStatusOn) + { + /*************************/ + /* S T A R T V I B R A */ + /*************************/ + iErrVal = RunTestVibra(2000); + + if(iErrVal == KErrInUse) + { + /* Error is expected because another application has reserved vibra */ + + CTestScheduler::StartAndStopL(2000); + + // Check status + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus == CHWRMVibra::EVibraStatusOn) + { + /*****************/ + /* Step executed */ + /*****************/ + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + iErrVal = KErrNone; + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status (%d)"),vibraStatus); + iErrVal = KErrGeneral; + } + + } + else + { + // Wrong status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong status(%d). Expected KErrInUse"),iErrVal); + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong vibra status (%d)"),vibraStatus); + iErrVal = KErrGeneral; + } + } + delete iVibra; iVibra = NULL; + + return iErrVal; + +} + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_2_S +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_Combined_light_and_vibra_usage_2_S() +{ + TInt iErrVal = KErrNone; + // CRepository* iSession; + CHWRMVibra::TVibraStatus vibraStatus; + CHWRMLight::TLightStatus dispStatus; + CHWRMLight::TLightStatus keybStatus; + //CHWRMLight::TLightStatus origDispStatus; + //CHWRMLight::TLightStatus origKeybStatus; + + // iSession = CRepository::NewL(KCRUidVibraCtrl); + iSession->Set(KVibraCtrlProfileVibraEnabled, 1); + + TRAP(iErrVal, iVibra = CHWRMVibra::NewL()); + if(iErrVal == KErrNone) + { + + TRAP(iErrVal, iMyLight = CHWRMLight::NewL(this)); + + if(iErrVal == KErrNone) + { + + //Reserve Primary display and keyboard + + //origDispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + //origKeybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + vibraStatus = iVibra->VibraStatus(); + + TRAP(iErrVal, iVibra->ReserveVibraL(ETrue, ETrue)); + + if (iErrVal == KErrNone) + { + TRAP(iErrVal, iMyLight->ReserveLightL(CHWRMLight::EPrimaryDisplayAndKeyboard, ETrue, ETrue)); + + if(iErrVal == KErrNone) + { + CTestScheduler::StartAndStopL(5000); + + /*******************/ + /* L I G H T O N */ + /*******************/ + + iErrVal = TestLightOn(CHWRMLight::EPrimaryDisplayAndKeyboard); + + if (iErrVal == KErrNone) + { + keybStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryKeyboard); + dispStatus = iMyLight->LightStatus(CHWRMLight::EPrimaryDisplay); + + if (keybStatus == CHWRMLight::ELightOn && dispStatus == CHWRMLight::ELightOn) + { + CTestScheduler::StartAndStopL(5000); + + /*******************/ + /* V I B R A O N */ + /*******************/ + + iErrVal = RunTestVibra(5000,75); + + if(iErrVal == KErrNone) + { + vibraStatus = iVibra->VibraStatus(); + + if (vibraStatus == CHWRMVibra::EVibraStatusOn) + { + CTestScheduler::StartAndStopL(5000); + + vibraStatus = iVibra->VibraStatus(); + + if(vibraStatus == CHWRMVibra::EVibraStatusStopped) + { + + /*****************/ + /* Release vibra */ + /*****************/ + iVibra->ReleaseVibra(); + + /*****************/ + /* Release light */ + /*****************/ + iMyLight->ReleaseLight(CHWRMLight::EPrimaryDisplayAndKeyboard); + + /*****************/ + /* Step executed */ + /*****************/ + //iMcFramework->StepExecuted(KErrNone); last step execution is reported in RunSlaveMode() + + iErrVal = KErrNone; + } + else + { + // Wrong vibra status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong status(%d). Expected EVibraStatusStopped"), vibraStatus); + iErrVal = KErrGeneral; + } + } + else + { + // wrong vibra status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong status(%d). Expected EVibraStatusOn"), vibraStatus); + iErrVal = KErrGeneral; + } + } + else + { + // start vibra failed + FormatMessageL(EHwrmMessageOpDebug,_L("Vibra start failed(%d)."), iErrVal); + } + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong status keyboard(%d) display(%d)"), keybStatus, dispStatus); + iErrVal = KErrGeneral; + } + } + else + { + // Set light on failed + FormatMessageL(EHwrmMessageOpDebug,_L("Light on failed(%d)"), iErrVal); + } + } + else + { + // Reserve light failed + FormatMessageL(EHwrmMessageOpDebug,_L("Reserve light failed(%d)"), iErrVal); + } + } + else + { + // Reserve vibra failed + FormatMessageL(EHwrmMessageOpDebug,_L("Reserve vibra failed(%d)"), iErrVal); + } + } + } + delete iVibra; iVibra = NULL; + delete iMyLight; iMyLight = NULL; + return iErrVal; + +} + + +// ----------------------------------------------------------------------------- +// CHwrmTestCaseController::MC_FmTx_Basic_Usage_S +// +// ----------------------------------------------------------------------------- +// +TInt CHwrmTestCaseController::MC_FmTx_Basic_Usage_S() +{ + FormatMessageL(EHwrmMessageOpDebug,_L("MC_FmTx_Basic_Usage_S()")); + TInt iErrVal = KErrNone; + TFmTxState fmTxState; + + TRAP(iErrVal, iFmTx = CHWRMFmTx::NewL(this)); + + if (iErrVal == KErrNone) + { + //Reserve FmTx, Don't force CoeEnv "on" + TRAP(iErrVal, iFmTx->ReserveL(ETrue)); + + if (iErrVal == KErrNone) + { + // Reservation was OK + + // Enable FmTx + iErrVal = RunTestFmTx(89900); //89900 KHz + + if (iErrVal == KErrNone) + { + // Check FmTx status + fmTxState = iFmTx->Status(); + + if(fmTxState == EFmTxStateActive || fmTxState == EFmTxStateInactive) + { + /* FmTx status is OK */ + + iMcFramework->StepExecuted(KErrNone); + iErrVal = iMcFramework->WaitNextTestStep(); + + if (iErrVal == KErrNone) + { + /* Test execution was OK in peer-application */ + + /* Check current FmTx status */ + fmTxState = iFmTx->Status(); + + if( fmTxState == EFmTxStateInactive + || fmTxState == EFmTxStateActive) + { + /* OK, status is Active or Inactive */ + /*****************/ + /* Step executed */ + /*****************/ + iFmTx->Release(); + + } + else + { + // wrong status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong FmTx status2 (%d), expected ON"),fmTxState); + iErrVal = KErrGeneral; + } + + } + else + { + // Start FmTx failed + FormatMessageL(EHwrmMessageOpDebug,_L("FmTx enable failed (%d)"),iErrVal); + } + } + else + { + // Wrong FmTx status + FormatMessageL(EHwrmMessageOpDebug,_L("Wrong FmTx status1 (%d), expected ON"),fmTxState); + iErrVal = KErrGeneral; + } + } + else + { + FormatMessageL(EHwrmMessageOpDebug,_L("FmTx enable failed (%d)"),iErrVal); + } + } + else + { + // Reserve failed + FormatMessageL(EHwrmMessageOpDebug,_L("FmTx reservation failed (%d)"),iErrVal); + + } + } + delete iFmTx; + iFmTx = NULL; + return iErrVal; + + }