--- /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 <centralrepository.h>
+#include <e32debug.h>
+#include <e32math.h>
+#include <hwrmvibrasdkcrkeys.h>
+#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 <duration> 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 <duration> 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 <duration> 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;
+
+ }