sl@0: sl@0: // ECamAdvSetTest.cpp sl@0: sl@0: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: sl@0: #include sl@0: #include "ECamUnitTestPluginUids.hrh" sl@0: #include "ECamAdvSetTest.h" sl@0: #include sl@0: sl@0: #include sl@0: #include "ECamUnitTestPlugin.h" sl@0: #include "AdvancedSettings.h" sl@0: #include sl@0: #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: #include sl@0: #include sl@0: #endif sl@0: sl@0: const TInt KShutterSpeed = 20; sl@0: const TInt KIsoRate01 = 320; sl@0: const TInt KIsoRate0 = 150; sl@0: const TInt KValue = 100; sl@0: const TInt KContinuousAutoFocusTimeoutValue1 = 10000; sl@0: //const TRgb KRgbConst = TRgb(100,124,130); sl@0: const TInt KWBColorTemperature1 = 4300; sl@0: const TInt KDefaultIsoRating = 200; sl@0: const TInt KDefaultAperture = 280; sl@0: const TInt KAllPreCaptureWarnings = 0x3FFF; sl@0: const TInt KBaselinedFocusRanges = 0x1F; sl@0: const TInt KBaselinedWhiteBalanceModes = 0x01FF; sl@0: const TInt KFlashCompensationStep = 2; sl@0: const TInt KFlashCompensationInSteps = 1; sl@0: const TInt KExposureCompensationStep = 3; sl@0: const TInt KExposureCompensationInSteps = 2; sl@0: const TInt KAutoISOTypes =0x1E; sl@0: /* sl@0: const TInt KDefaultValue = 0; sl@0: const TInt KContinuousAutoFocusTimeoutValue = 20000; sl@0: const TInt KBrightnessAdjMinValue = -50; sl@0: const TInt KBrightnessAdjMaxValue = 50; sl@0: sl@0: const TInt KMaxIsoRate = 200; sl@0: const TInt KMinIsoRate = 0; sl@0: const TInt KDefaultShutterSpeed = 0; sl@0: const TInt KDefaultFocusDistance = 0; sl@0: sl@0: const TInt KBracketStartIndex = 0; sl@0: const TInt KBracketFrames = 2; sl@0: const TBool KDefaultRedEyeReduce = EFalse; sl@0: sl@0: const TBool KExternalFlashPresentState = EFalse; sl@0: const TInt KManualFlashPowerLevel = 0; sl@0: const TBool KApertureExposureLockOn = EFalse; sl@0: const TBool KShootClickOn = EFalse; sl@0: const TInt KTimerInterval = 0; sl@0: const TInt KBurstImages = 0; sl@0: const TBool KExposureLockOn = EFalse; sl@0: const TBool KAutoFocusLockOn = EFalse; sl@0: const TBool KAutomaticSizeSelectionChangeOn = EFalse; sl@0: const TInt KWBColorTemperature = 6000; sl@0: */ sl@0: // sl@0: // RECamAdvSetTest sl@0: // sl@0: RECamAdvSetTest* RECamAdvSetTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetTest* self = new (ELeave) RECamAdvSetTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetTest::RECamAdvSetTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-005-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetTest::DoTestStepL() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: TInt i; sl@0: TInt err; sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoAdvTestStepL()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory ) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamAdvSetTest::DoAdvTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: // using observer 2 if exist sl@0: MCameraObserver2* observer2 = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create advanced settings from CCamera object")); sl@0: settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings object was created")); sl@0: CleanupStack::PopAndDestroy(settings); sl@0: } sl@0: else sl@0: { sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // create a settings object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("KErrNone return from CCamera::New2L()")); sl@0: TRAP(error, settings = CCamera::CCameraAdvancedSettings::NewL(*camera)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings object was created using NewL")); sl@0: CleanupStack::PopAndDestroy(settings); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings object was not created using NewL")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: return result; sl@0: } sl@0: sl@0: RECamAdvSetNotificationTest* RECamAdvSetNotificationTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetNotificationTest* self = new (ELeave) RECamAdvSetNotificationTest(aAllocTest); sl@0: CleanupStack::PushL(self); sl@0: self->ConstructL(); sl@0: CleanupStack::Pop(self); sl@0: return self; sl@0: } sl@0: sl@0: void RECamAdvSetNotificationTest::ConstructL() sl@0: { sl@0: iError = KErrNone; sl@0: } sl@0: sl@0: RECamAdvSetNotificationTest::RECamAdvSetNotificationTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-009-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetNotificationTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: TInt cameraIndex = 1; sl@0: TBool cameraPresent = EFalse; sl@0: sl@0: __MM_HEAP_MARK; sl@0: TInt cameras = CCamera::CamerasAvailable(); sl@0: INFO_PRINTF2(_L("Available %d cameras"), cameras); sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::New2L(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: MCamManagement* extFunct = NULL; sl@0: sl@0: // get the MCamera management inteface implementation sl@0: // remember it is for the purpose of this test written to sl@0: // notify this camera clients... it should be a static(singlenton) sl@0: // to cater for the general case, but this is just a test, not impl example. sl@0: extFunct = static_cast sl@0: (camera->CustomInterface(KUidCameraManagementUid)); sl@0: sl@0: if (extFunct != NULL) sl@0: { sl@0: CleanupStack::PushL(extFunct); sl@0: sl@0: CCamera::CCameraAdvancedSettings* settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: CleanupStack::PushL(settings); sl@0: sl@0: // enumerate camera types sl@0: for (TInt index = 0; index < cameras; index++) sl@0: { sl@0: CCamera::CCameraAdvancedSettings::TCameraType type = settings->CameraType(index); sl@0: INFO_PRINTF3(_L("camera with index %d type %d"), index, type); sl@0: if (type == CCamera::CCameraAdvancedSettings::ECameraUnknown) sl@0: { sl@0: result = EFail; sl@0: } sl@0: } sl@0: sl@0: // check that indexed and non indexed versions work produce the same result sl@0: INFO_PRINTF1(_L("Check that indexed and non indexed versions work in the same way")); sl@0: TInt thisCameraIndex = settings->CameraIndex(); sl@0: // camera type sl@0: if (settings->CameraType() != settings->CameraType(thisCameraIndex)) sl@0: { sl@0: INFO_PRINTF2(_L("CameraType() and CameraType(%d) produce different results"),thisCameraIndex); sl@0: result = EFail; sl@0: } sl@0: // for this camera sl@0: settings->IsCameraPresent(); sl@0: if (settings->IsCameraPresent() != settings->IsCameraPresent(thisCameraIndex)) sl@0: { sl@0: INFO_PRINTF2(_L("IsCameraPresent() and IsCameraPresent(%d) produce different results"),thisCameraIndex); sl@0: result = EFail; sl@0: } sl@0: sl@0: // verify that the required camera is not present - different index sl@0: cameraPresent = settings->IsCameraPresent(cameraIndex); sl@0: INFO_PRINTF3(_L("camera with index %d %d"), cameraIndex, cameraPresent); sl@0: if (cameraPresent) sl@0: { sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF2(_L("Plug in camera with index %d"), cameraIndex); sl@0: extFunct->PlugCameraIn(cameraIndex); sl@0: CheckNotification(KUidECamEventGlobalCamera01PluggedIn, result); sl@0: sl@0: cameraPresent = settings->IsCameraPresent(cameraIndex); sl@0: INFO_PRINTF3(_L("camera with index %d %d"), cameraIndex, cameraPresent); sl@0: if (!cameraPresent) sl@0: { sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF2(_L("Plug out camera with index %d"), cameraIndex); sl@0: extFunct->PlugCameraOut(cameraIndex); sl@0: CheckNotification(KUidECamEventGlobalCamera01PluggedOut, result); sl@0: sl@0: cameraPresent = settings->IsCameraPresent(cameraIndex); sl@0: INFO_PRINTF3(_L("camera with index %d %d"), cameraIndex, cameraPresent); sl@0: if (cameraPresent) sl@0: { sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(settings); sl@0: sl@0: CleanupStack::Pop(extFunct); sl@0: extFunct->Release(); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("Could not obtain camera management interface?")); sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: return result; sl@0: } sl@0: sl@0: sl@0: // sl@0: // RECamAdvSetDefaultsTest // sl@0: // sl@0: RECamAdvSetDefaultsTest* RECamAdvSetDefaultsTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetDefaultsTest* self = new (ELeave) RECamAdvSetDefaultsTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetDefaultsTest::RECamAdvSetDefaultsTest(TBool) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-010-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetDefaultsTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::New2L(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create advanced settings from CCamera object")); sl@0: settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: sl@0: // Supported Focus Modes. Set default Focus Mode. Get Focus Mode. sl@0: iInputEventUid = KUidECamEventCameraSettingFocusMode; sl@0: TInt suppFocusModes = settings->SupportedFocusModes(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Focus Modes 0x%x"), suppFocusModes); sl@0: CCamera::CCameraAdvancedSettings::TFocusMode defaultFocusMode = CCamera::CCameraAdvancedSettings::EFocusModeAuto; sl@0: settings->SetFocusMode(defaultFocusMode); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TFocusMode retrievedFocusMode = settings->FocusMode(); sl@0: if (defaultFocusMode != retrievedFocusMode) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings retrieved Focus Mode 0x%x is not the default 0x%x "), sl@0: retrievedFocusMode, defaultFocusMode); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Supported Focus Range. Set default Focus Range. Get Focus Range. sl@0: iInputEventUid = KUidECamEventCameraSettingFocusRange; sl@0: TInt suppFocusRanges = settings->SupportedFocusRanges(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Focus Ranges 0x%x"), suppFocusRanges); sl@0: CCamera::CCameraAdvancedSettings::TFocusRange defaultFocusRange = CCamera::CCameraAdvancedSettings::EFocusRangeAuto; sl@0: settings->SetFocusRange(defaultFocusRange); sl@0: sl@0: // Check for KUidECamEventCameraSettingFocusRange. sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TFocusRange retrievedFocusRange = settings->FocusRange(); sl@0: if (defaultFocusRange != retrievedFocusRange) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings retrieved Focus Range 0x%x is not the default 0x%x"), sl@0: retrievedFocusRange, defaultFocusRange); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Check for KUidECamEventCameraSettingFocusRangeTwo. sl@0: iInputEventUid = KUidECamEventCameraSettingFocusRange2; sl@0: CheckNotificationTwo(iInputEventUid, result); sl@0: sl@0: // Supported Auto Focus Type. Set default Auto Focus Type. Get Auto Focus Type. sl@0: iInputEventUid = KUidECamEventCameraSettingAutoFocusType; sl@0: TInt suppAutoFocusTypes = settings->SupportedAutoFocusTypes(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Focus Types 0x%x"), suppAutoFocusTypes); sl@0: CCamera::CCameraAdvancedSettings::TAutoFocusType defaultAutoFocusType = CCamera::CCameraAdvancedSettings::EAutoFocusTypeOff; sl@0: settings->SetAutoFocusType(defaultAutoFocusType); sl@0: sl@0: // Check for KUidECamEventCameraSettingAutoFocusType. sl@0: CheckNotification (iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TAutoFocusType retrievedAutoFocusType = settings->AutoFocusType() ; sl@0: if (defaultAutoFocusType!=retrievedAutoFocusType) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings retrieved Auto Focus Type 0x%x is not the default 0x%x"), sl@0: retrievedAutoFocusType, defaultAutoFocusType); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Check for KUidECamEventCameraSettingAutoFocusTypeTwo sl@0: iInputEventUid = KUidECamEventCameraSettingAutoFocusType2; sl@0: CheckNotificationTwo(iInputEventUid, result); sl@0: sl@0: // Supported Auto Focus Area. Set default Auto Focus Area. Get Auto Focus Area. sl@0: iInputEventUid = KUidECamEventCameraSettingAutoFocusArea; sl@0: TInt suppAutoFocusArea = settings->SupportedAutoFocusAreas(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Focus Areas 0x%x"), suppAutoFocusArea); sl@0: CCamera::CCameraAdvancedSettings::TAutoFocusArea defaultAutoFocusArea = CCamera::CCameraAdvancedSettings::EAutoFocusTypeAuto; sl@0: settings->SetAutoFocusArea(defaultAutoFocusArea); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TAutoFocusArea retrievedAutoFocusArea = settings->AutoFocusArea() ; sl@0: if (defaultAutoFocusArea!=retrievedAutoFocusArea) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings retrieved Auto Focus Area 0x%x is not the default 0x%x"), sl@0: retrievedAutoFocusArea, defaultAutoFocusArea); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Focus distance sl@0: iInputEventUid = KUidECamEventCameraSettingFocusDistance; sl@0: TInt dummyFocusDistance = 3; sl@0: settings->SetFocusDistance(dummyFocusDistance); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: TInt retrievedFocusDist = settings->FocusDistance(); sl@0: if (dummyFocusDistance!=retrievedFocusDist) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Focus distance 0x%x is not as expected 0x%x"), sl@0: dummyFocusDistance, retrievedFocusDist); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Min Focal Length sl@0: TInt minFocalLength = settings->GetMinFocalLength(); sl@0: if (KErrNotSupported!=minFocalLength) sl@0: { sl@0: INFO_PRINTF1(_L("Supported min Focal Length")); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Supported Iso Rates. Set default Iso Rate. Get Iso Rate. OLD API sl@0: iInputEventUid = KUidECamEventCameraSettingIsoRate; sl@0: RArray isoRates; sl@0: TInt suppIsoRates = 0; sl@0: settings->GetSupportedIsoRatesL(isoRates); sl@0: suppIsoRates = isoRates[0]; sl@0: isoRates.Close(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Iso Rates 0x%x"), suppIsoRates); sl@0: TInt defaultIsoRate = KDefaultIsoRating; sl@0: settings->SetIsoRate(defaultIsoRate); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: TInt retrievedIsoRate = settings->IsoRate(); sl@0: if (defaultIsoRate!=retrievedIsoRate) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate %d is not as expected %d"), sl@0: defaultIsoRate, retrievedIsoRate); sl@0: result = EFail; sl@0: } sl@0: sl@0: CCamera::CCameraAdvancedSettings::TISORateType isoRateType; sl@0: TInt param =0; sl@0: TInt isoRate =0; sl@0: settings->GetISORateL(isoRateType, param, isoRate); sl@0: sl@0: if (isoRateType != CCamera::CCameraAdvancedSettings::EISOManual) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings New and Old API for Iso Rate Type not consistent 0x%x is not as expected 0x%x"), sl@0: isoRateType, CCamera::CCameraAdvancedSettings::EISOManual); sl@0: result = EFail; sl@0: } sl@0: sl@0: if (defaultIsoRate != isoRate) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings New and Old API for Iso Rate not consistent %d is not as expected %d"), sl@0: isoRate, defaultIsoRate); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Supported Iso Types. Set default Iso Type. Set Default ISO Rate. Get Iso Type and Rate. New API sl@0: iInputEventUid = KUidECamEventCameraSettingIsoRateType; sl@0: sl@0: TInt supportedISORateTypes = 0; sl@0: settings->GetSupportedISORateTypeL(supportedISORateTypes); sl@0: sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Iso Rate Types 0x%x"), supportedISORateTypes); sl@0: defaultIsoRate = KDefaultIsoRating; sl@0: CCamera::CCameraAdvancedSettings::TISORateType defaultIsoRateType = CCamera::CCameraAdvancedSettings::EISOManual; sl@0: if(defaultIsoRateType & supportedISORateTypes) sl@0: { sl@0: settings->SetISORateL(defaultIsoRateType, defaultIsoRate); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: param =0; sl@0: isoRate =0; sl@0: sl@0: settings->GetISORateL(isoRateType, param, isoRate); sl@0: sl@0: if(isoRateType != defaultIsoRateType) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate Type 0x%x is not as expected 0x%x"), sl@0: isoRateType, defaultIsoRateType); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(isoRate != defaultIsoRate) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate %d is not as expected %d"), sl@0: isoRate, defaultIsoRate); sl@0: result = EFail; sl@0: } sl@0: } sl@0: sl@0: // Supported apertures. Set and Get aperture. sl@0: iInputEventUid = KUidECamEventCameraSettingAperture; sl@0: RArray suppApertures; sl@0: TValueInfo valueInfo = ENotActive; sl@0: settings->GetAperturesL(suppApertures, valueInfo); sl@0: // should not have entries sl@0: if (suppApertures.Count() != 0) sl@0: { sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt dummyAperture = KDefaultAperture; sl@0: settings->SetAperture(dummyAperture); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: TInt aperture = settings->Aperture() ; sl@0: if (dummyAperture != aperture) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Aperture 0x%x is not as expected 0x%x"), sl@0: dummyAperture, aperture); sl@0: sl@0: result = EFail; sl@0: } sl@0: sl@0: // Supported shutter speed. Set and Get shutter speed sl@0: iInputEventUid = KUidECamEventCameraSettingShutterSpeed; sl@0: RArray suppShutterSpeed; sl@0: TValueInfo shutterSpeedValueInfo = ENotActive; sl@0: settings->GetShutterSpeedsL(suppShutterSpeed, shutterSpeedValueInfo ); sl@0: // should not have entries sl@0: if (suppShutterSpeed.Count() != 0) sl@0: { sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt dummyShutterSpeed = KShutterSpeed; sl@0: settings->SetShutterSpeed(dummyShutterSpeed); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: TInt shutterSpeed = settings->ShutterSpeed() ; sl@0: if (dummyShutterSpeed != shutterSpeed) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Shutter Speed 0x%x is not as expected 0x%x"), sl@0: dummyShutterSpeed, shutterSpeed); sl@0: sl@0: result = EFail; sl@0: } sl@0: sl@0: // Supported Metering Modes sl@0: iInputEventUid = KUidECamEventCameraSettingMeteringMode; sl@0: TInt suppMeteringModes = settings->SupportedMeteringModes(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Metering Modes 0x%x"), suppMeteringModes); sl@0: CCamera::CCameraAdvancedSettings::TMeteringMode defaultMeteringMode = CCamera::CCameraAdvancedSettings::EMeteringModeAuto; sl@0: settings->SetMeteringMode(defaultMeteringMode); sl@0: sl@0: CheckNotification (iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TMeteringMode retrievedMeteringMode = settings->MeteringMode() ; sl@0: if (defaultMeteringMode != retrievedMeteringMode) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Metering Mode 0x%x is not as expected 0x%x"), sl@0: defaultMeteringMode, retrievedMeteringMode); sl@0: result = EFail; sl@0: } sl@0: sl@0: sl@0: // Supported Bracket Modes sl@0: iInputEventUid = KUidECamEventCameraSettingBracketMode; sl@0: TInt suppBracketModes = settings->SupportedBracketModes(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Bracket Modes 0x%x"), suppBracketModes); sl@0: CCamera::CCameraAdvancedSettings::TBracketMode defaultBracketMode = CCamera::CCameraAdvancedSettings::EBracketModeOff; sl@0: settings->SetBracketMode(defaultBracketMode); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TBracketMode retrievedBracketMode = settings->BracketMode() ; sl@0: if (defaultBracketMode != retrievedBracketMode) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Drive Mode 0x%x is not as expected 0x%x"), sl@0: defaultBracketMode, retrievedBracketMode); sl@0: result = EFail; sl@0: } sl@0: sl@0: sl@0: // Supported AF assistant light. Set and Get AF assistant light. sl@0: iInputEventUid = KUidECamEventCameraSettingAFAssistantLight; sl@0: TInt suppAFAssistantLights =0; sl@0: sl@0: settings->GetSupportedAFAssistantLightL(suppAFAssistantLights); sl@0: sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported AF Assistant Lights 0x%x"), suppAFAssistantLights); sl@0: CCamera::CCameraAdvancedSettings::TAFAssistantLight defaultAFAssistantLight = CCamera::CCameraAdvancedSettings::EAFAssistantLightOff; sl@0: settings->SetAFAssistantLightL(defaultAFAssistantLight); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TAFAssistantLight retrievedAFAssistantLight; sl@0: settings->GetAFAssistantLightL(retrievedAFAssistantLight); sl@0: sl@0: if (defaultAFAssistantLight != retrievedAFAssistantLight) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings AF Assistant Light 0x%x is not as expected 0x%x"), sl@0: retrievedAFAssistantLight, defaultAFAssistantLight); sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt preCaptureWarningSupported = KAllPreCaptureWarnings; // ( = 0x3FFF) sl@0: settings->GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::EModeIdle, preCaptureWarningSupported); sl@0: sl@0: // subscribe for pre capture warnings. Poll for it. Unsubscribe for Pre capture warning. sl@0: settings->SubscribeToPreCaptureWarningL(preCaptureWarningSupported); sl@0: sl@0: //Poll to know the status of every possible warning ... sl@0: TInt warningStatus =0; sl@0: settings->GetPreCaptureWarningL(warningStatus); sl@0: sl@0: settings->UnSubscribePreCaptureWarningL(); sl@0: sl@0: //set reference screen sl@0: iInputEventUid = KUidECamEventCameraSettingReferenceScreen; sl@0: sl@0: CWsScreenDevice* screenDevice = NULL; sl@0: // prepare the screen targetted. sl@0: sl@0: settings->SetReferenceScreenL(*screenDevice); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: sl@0: INFO_PRINTF1(_L("API exercise")); sl@0: // API exercise sl@0: TBool lock = ETrue; sl@0: TInt value = KValue; sl@0: settings->SetApertureExposureLockOn(lock); sl@0: settings->ApertureExposureLockOn(); sl@0: sl@0: // Automatic selection sl@0: settings->SetAutomaticSizeSelectionChangeOn(EFalse); sl@0: settings->AutomaticSizeSelectionChangeOn(); sl@0: sl@0: // stabilization mode sl@0: // settings sl@0: settings->SupportedStabilizationModes(); sl@0: settings->StabilizationMode(); sl@0: settings->SetStabilizationMode(CCamera::CCameraAdvancedSettings::EStabilizationModeVertical); sl@0: sl@0: settings->SupportedBracketParameters(); sl@0: settings->BracketParameter(); sl@0: settings->SetBracketParameter(CCamera::CCameraAdvancedSettings::BracketParameterAutoFocus); sl@0: settings->SupportedBracketSteps(); sl@0: settings->BracketStep(); sl@0: settings->SetBracketStep(CCamera::CCameraAdvancedSettings::EBracketStepMedium); sl@0: sl@0: TInt startIndex; sl@0: TInt frames; sl@0: sl@0: settings->GetBracketMerge(startIndex, frames); sl@0: settings->SetBracketMerge(startIndex, frames); sl@0: sl@0: settings->SupportedFlashModes(); sl@0: settings->FlashMode(); sl@0: settings->SetFlashMode(CCamera::EFlashSlowRearSync); sl@0: settings->RedEyeReduceOn(); sl@0: settings->SetRedEyeReduceOn(EFalse); sl@0: sl@0: RArray steps; sl@0: TValueInfo info; sl@0: sl@0: settings->GetFlashCompensationStepsL(steps, info); sl@0: TInt flashCompensationStep1 = settings->FlashCompensationStep(); sl@0: if(flashCompensationStep1 != KFlashCompensationStep) sl@0: { sl@0: INFO_PRINTF2(_L("old method for FlashCompensationStep retrieving wrong value %d"),flashCompensationStep1); sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt flashCompensationStep2 = 0; sl@0: TInt err = settings->GetFlashCompensationStep(flashCompensationStep2); sl@0: if(flashCompensationStep1 != flashCompensationStep2) sl@0: { sl@0: INFO_PRINTF1(_L("old and new method for FlashCompensationStep retrieving wrong/dissimilar values")); sl@0: result = EFail; sl@0: } sl@0: if(err) sl@0: { sl@0: INFO_PRINTF2(_L("new method for FlashCompensationStep had error %d"),err); sl@0: result = EFail; sl@0: } sl@0: sl@0: settings->SetFlashCompensationStep(value); sl@0: TRAP(error, settings->GetCurrentFocusModeStepsL(steps, info)); sl@0: sl@0: TInt negValue; sl@0: TInt posValue; sl@0: TBool ready = ETrue; sl@0: sl@0: settings->GetFlashCompensationRangeInSteps(negValue, posValue); sl@0: TInt flashCompensation1 = settings->FlashCompensation(); sl@0: if(flashCompensation1 != KFlashCompensationInSteps) sl@0: { sl@0: INFO_PRINTF2(_L("old method for FlashCompensation retrieving wrong value %d"),flashCompensation1); sl@0: result = EFail; sl@0: } sl@0: TInt flashCompensation2 = 0; sl@0: err = settings->GetFlashCompensation(flashCompensation2); sl@0: sl@0: if(flashCompensation1 != flashCompensation2) sl@0: { sl@0: INFO_PRINTF1(_L("old and new method for FlashCompensation retrieving wrong/dissimilar values")); sl@0: result = EFail; sl@0: } sl@0: if(err) sl@0: { sl@0: INFO_PRINTF2(_L("new method for FlashCompensation had error %d"),err); sl@0: result = EFail; sl@0: } sl@0: sl@0: settings->SetFlashCompensation(value); sl@0: sl@0: settings->IsFlashReady(ready); sl@0: if(ready != EFalse) // The value the pugin has been set to return sl@0: { sl@0: result = EFail; sl@0: } sl@0: settings->IsExternalFlashPresent(); sl@0: settings->GetManualFlashPowerLevelsL(steps, info); sl@0: settings->SetManualFlashPowerLevel(value); sl@0: settings->ManualFlashPowerLevel(); sl@0: sl@0: settings->SupportedExposureModes(); sl@0: settings->ExposureMode(); sl@0: settings->SetExposureMode(CCamera::EExposureAuto); sl@0: sl@0: settings->GetExposureCompensationStepsL(steps, info); sl@0: TInt expCompensationStep1 = settings->ExposureCompensationStep(); sl@0: if(expCompensationStep1 != KExposureCompensationStep) sl@0: { sl@0: INFO_PRINTF2(_L("old method for ExposureCompensationStep retrieving wrong value %d"),expCompensationStep1); sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt expCompensationStep2 = 0; sl@0: err = settings->GetExposureCompensationStep(expCompensationStep2); sl@0: if(expCompensationStep1 != expCompensationStep2) sl@0: { sl@0: INFO_PRINTF1(_L("old and new method for ExposureCompensationStep retrieving wrong/dissimilar values")); sl@0: result = EFail; sl@0: } sl@0: if(err) sl@0: { sl@0: INFO_PRINTF2(_L("new method for ExposureCompensationStep had error %d"),err); sl@0: result = EFail; sl@0: } sl@0: settings->SetExposureCompensationStep(value); sl@0: sl@0: settings->GetExposureCompensationRangeInSteps(negValue, posValue); sl@0: TInt expCompensation1 = settings->ExposureCompensation(); sl@0: if(expCompensation1 != KExposureCompensationInSteps) sl@0: { sl@0: INFO_PRINTF2(_L("old method for ExposureCompensation retrieving wrong value %d"),expCompensation1); sl@0: result = EFail; sl@0: } sl@0: sl@0: TInt expCompensation2 = 0; sl@0: err = settings->GetExposureCompensation(expCompensation2); sl@0: sl@0: if(expCompensation1 != expCompensation2) sl@0: { sl@0: INFO_PRINTF1(_L("old and new method for ExposureCompensation retrieving wrong/dissimilar values")); sl@0: result = EFail; sl@0: } sl@0: if(err) sl@0: { sl@0: INFO_PRINTF2(_L("new method for ExposureCompensation had error %d"),err); sl@0: result = EFail; sl@0: } sl@0: settings->SetExposureCompensation(value); sl@0: sl@0: settings->SupportedWhiteBalanceModes(); sl@0: settings->WhiteBalanceMode(); sl@0: settings->SetWhiteBalanceMode(CCamera::EWBAuto); sl@0: sl@0: settings->ShootClickOn(); sl@0: settings->SetShootClickOn(EFalse); sl@0: settings->GetTimerIntervalsL(steps, info); sl@0: settings->TimerInterval(); sl@0: settings->SetTimerInterval(value); sl@0: sl@0: TTime start; sl@0: TTime end; sl@0: TTime interval; sl@0: sl@0: settings->GetTimeLapsePeriodRange(start, end); sl@0: settings->GetTimeLapse(start, end, interval); sl@0: settings->SetTimeLapse(start, end, interval); sl@0: sl@0: settings->PictureOrientation(); sl@0: settings->SetPictureOrientation(CCamera::CCameraAdvancedSettings::EPictureOrientationPortrait); sl@0: sl@0: settings->SupportedPixelAspectRatios(); sl@0: settings->PixelAspectRatio(); sl@0: settings->SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::EPixelAspect1To1); sl@0: settings->SupportedYuvRanges(); sl@0: settings->YuvRange(); sl@0: settings->SetYuvRange(CCamera::CCameraAdvancedSettings::EYuvRangeVideoCropped); sl@0: settings->BurstImages(); sl@0: settings->SetBurstImages(value); sl@0: settings->GetOpticalZoomStepsL(steps, info); sl@0: settings->OpticalZoom(); sl@0: settings->SetOpticalZoom(value); sl@0: settings->GetDigitalZoomStepsL(steps, info); sl@0: settings->DigitalZoom(); sl@0: settings->SetDigitalZoom(value); sl@0: sl@0: TInt sizeIndex =0; sl@0: TBool isInfluencePossible; sl@0: CCamera::TFormat format = CCamera::EFormatYUV420Planar; sl@0: settings->GetDigitalZoomStepsForStillL(steps, info, sizeIndex, format, isInfluencePossible); sl@0: settings->DigitalZoom(); sl@0: settings->SetDigitalZoom(value); sl@0: sl@0: TInt frameRateIndex =0; sl@0: CCamera::TExposure exposure = CCamera::EExposureAuto; sl@0: settings->GetDigitalZoomStepsForVideoL(steps, info, frameRateIndex, sizeIndex, format, isInfluencePossible, exposure); sl@0: settings->DigitalZoom(); sl@0: settings->SetDigitalZoom(value); sl@0: sl@0: settings->ExposureLockOn(); sl@0: settings->SetExposureLockOn(EFalse); sl@0: settings->AutoFocusLockOn(); sl@0: settings->SetAutoFocusLockOn(EFalse); sl@0: sl@0: // timeouts sl@0: RArray timeouts; sl@0: settings->GetSupportedContinuousAutoFocusTimeoutsL(timeouts, info); sl@0: timeouts.Close(); sl@0: settings->ContinuousAutoFocusTimeout(); sl@0: settings->SetContinuousAutoFocusTimeout(KContinuousAutoFocusTimeoutValue1); sl@0: sl@0: // stabilization effects sl@0: settings->SupportedStabilizationEffects(); sl@0: settings->SetStabilizationEffect(CCamera::CCameraAdvancedSettings::EStabilizationAuto); sl@0: CCamera::CCameraAdvancedSettings::TStabilizationEffect effect = settings->StabilizationEffect(); sl@0: sl@0: // stabilization complexity sl@0: settings->SupportedStabilizationComplexityValues(); sl@0: CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity complexity = settings->StabilizationComplexity(); sl@0: settings->SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::EStabilizationComplexityAuto); sl@0: sl@0: // ISO rate type sl@0: iInputEventUid = KUidECamEventCameraSettingIsoRateType; sl@0: sl@0: supportedISORateTypes = 0; sl@0: settings->GetSupportedISORateTypeL(supportedISORateTypes); sl@0: sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Iso Rate Types 0x%x"), supportedISORateTypes); sl@0: sl@0: //List of supported ISO rates can be found using OLD API. sl@0: RArray supportedIsoRates; sl@0: settings->GetSupportedIsoRatesL(supportedIsoRates); sl@0: sl@0: //set to manual ISO rate sl@0: isoRateType = CCamera::CCameraAdvancedSettings::EISOManual; sl@0: if(isoRateType & supportedISORateTypes) sl@0: { sl@0: INFO_PRINTF1(_L("Testing new ISO API for CCamera::CCameraAdvancedSettings::EISOManual")); sl@0: TestISOTypesL(settings, isoRateType, supportedIsoRates, result); sl@0: } sl@0: sl@0: //switch to unprioritised type of Auto ISO... sl@0: isoRateType = CCamera::CCameraAdvancedSettings::EISOAutoUnPrioritised; sl@0: if(isoRateType & supportedISORateTypes) sl@0: { sl@0: INFO_PRINTF1(_L("Testing new ISO API for CCamera::CCameraAdvancedSettings::EISOAutoUnPrioritised")); sl@0: TestISOTypesL(settings, isoRateType, supportedIsoRates, result); sl@0: } sl@0: sl@0: //switch to ISO prioritised AutoISO ... sl@0: isoRateType = CCamera::CCameraAdvancedSettings::EISOAutoISOPrioritised; sl@0: if(isoRateType & supportedISORateTypes) sl@0: { sl@0: INFO_PRINTF1(_L("Testing new ISO API for CCamera::CCameraAdvancedSettings::EISOAutoISOPrioritised")); sl@0: TestISOTypesL(settings, isoRateType, supportedIsoRates, result); sl@0: } sl@0: sl@0: //switch to shutter speed prioritised AutoISO... sl@0: isoRateType = CCamera::CCameraAdvancedSettings::EISOAutoShutterSpeedPrioritised; sl@0: if(isoRateType & supportedISORateTypes) sl@0: { sl@0: INFO_PRINTF1(_L("Testing new ISO API for CCamera::CCameraAdvancedSettings::EISOAutoShutterSpeedPrioritised")); sl@0: TestISOTypesL(settings, isoRateType, supportedIsoRates, result); sl@0: } sl@0: sl@0: //switch to aperture prioritised AutoISO... sl@0: isoRateType = CCamera::CCameraAdvancedSettings::EISOAutoAperturePrioritised; sl@0: if(isoRateType & supportedISORateTypes) sl@0: { sl@0: INFO_PRINTF1(_L("Testing new ISO API for CCamera::CCameraAdvancedSettings::EISOAutoAperturePrioritised")); sl@0: TestISOTypesL(settings, isoRateType, supportedIsoRates, result); sl@0: } sl@0: sl@0: supportedIsoRates.Close(); sl@0: sl@0: // all functions are called, irrespective of the units; in real case will be one set or the other sl@0: TRgb rgb(100,124,130); sl@0: CCamera::CCameraAdvancedSettings::TWBUnits units = settings->SupportedWBUnits(); sl@0: settings->SetWBRgbValue(rgb); sl@0: settings->GetWBRgbValue(rgb); sl@0: RArray temperatures; sl@0: settings->GetWBSupportedColorTemperaturesL(temperatures, info); sl@0: temperatures.Close(); sl@0: settings->SetWBColorTemperature(KWBColorTemperature1); sl@0: TInt temp = settings->WBColorTemperature(); sl@0: sl@0: INFO_PRINTF1(_L("GetFocalLengthInfoL method invocation")); sl@0: TInt currentFocalLength=0; sl@0: TInt maxFocalLength=0; sl@0: TRAP(err, settings->GetFocalLengthInfoL(minFocalLength, currentFocalLength, maxFocalLength)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetFocalLengthInfoL supported!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetNumOperationPreferenceL method invocation")); sl@0: TUint numOperationPreferenceSupported=0; sl@0: TRAP(err, settings->GetNumOperationPreferenceL(numOperationPreferenceSupported)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetNumOperationPreferenceL supported!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("EnumerateOperationPreferenceL method invocation")); sl@0: sl@0: TUint operationPreferenceIndex=0; sl@0: CCamera::CCameraAdvancedSettings::TPerformanceLevel speedLevel = sl@0: CCamera::CCameraAdvancedSettings::ELevelDontCare; sl@0: CCamera::CCameraAdvancedSettings::TPerformanceLevel qualityLevel = sl@0: CCamera::CCameraAdvancedSettings::ELevelDontCare; sl@0: CCamera::CCameraAdvancedSettings::TPerformanceLevel lowMemoryConsumptionLevel = sl@0: CCamera::CCameraAdvancedSettings::ELevelDontCare; sl@0: CCamera::CCameraAdvancedSettings::TPerformanceLevel lowPowerConsumptionLevel = sl@0: CCamera::CCameraAdvancedSettings::ELevelDontCare; sl@0: sl@0: TRAP(err, settings->EnumerateOperationPreferenceL(operationPreferenceIndex, speedLevel, sl@0: qualityLevel, lowMemoryConsumptionLevel, lowPowerConsumptionLevel)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("EnumerateOperationPreferenceL supported!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: iInputEventUid = KUidECamEventCameraSettingOperationPreference; sl@0: settings->SetOperationPreferenceL(operationPreferenceIndex); sl@0: CheckNotificationNeg(iInputEventUid, result); sl@0: sl@0: INFO_PRINTF1(_L("GetOperationPreferenceL method invocation")); sl@0: TInt opPreferenceIndex; sl@0: TRAP(err, settings->GetOperationPreferenceL(opPreferenceIndex)); sl@0: if(err != KErrNotSupported) sl@0: { sl@0: INFO_PRINTF1(_L("GetOperationPreferenceL supported!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: INFO_PRINTF1(_L("GetSupportedEventsL method invocation")); sl@0: RArray supportedEvents; sl@0: settings->GetSupportedEventsL(supportedEvents); sl@0: sl@0: if(supportedEvents.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("GetSupportedEventsL entry exists!")); sl@0: result = EFail; sl@0: } sl@0: supportedEvents.Close(); sl@0: sl@0: INFO_PRINTF1(_L("GetIndirectFeatureChangesL method invocation")); sl@0: RArray featureChangesIndirect; sl@0: TRAP(err, settings->GetIndirectFeatureChangesL(KUidECamEventCameraSettingOperationPreference, featureChangesIndirect)); sl@0: if(err != KErrNone) sl@0: { sl@0: INFO_PRINTF1(_L("GetIndirectFeatureChangesL returned error!")); sl@0: result = EFail; sl@0: } sl@0: sl@0: if(featureChangesIndirect.Count() != 0) sl@0: { sl@0: INFO_PRINTF1(_L("GetIndirectFeatureChangesL entry exists!")); sl@0: result = EFail; sl@0: } sl@0: featureChangesIndirect.Close(); sl@0: sl@0: CleanupStack::PopAndDestroy(settings); sl@0: } sl@0: else sl@0: { sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: sl@0: void RECamAdvSetDefaultsTest::TestISOTypesL(CCamera::CCameraAdvancedSettings* aSettings, CCamera::CCameraAdvancedSettings::TISORateType aIsoRateType, RArray aSupportedIsoRates, TVerdict& aResult) sl@0: { sl@0: TInt param =0; sl@0: sl@0: switch(aIsoRateType) sl@0: { sl@0: case CCamera::CCameraAdvancedSettings::EISOManual: sl@0: { sl@0: param = KDefaultIsoRating; sl@0: break; sl@0: } sl@0: sl@0: case CCamera::CCameraAdvancedSettings::EISOAutoISOPrioritised: sl@0: { sl@0: param = KIsoRate01;// ISO rate equal to or closest to (and less than) it should be selected by the sl@0: // camera in order to get optimum exposure. sl@0: break; sl@0: } sl@0: sl@0: case CCamera::CCameraAdvancedSettings::EISOAutoShutterSpeedPrioritised: sl@0: { sl@0: param = KShutterSpeed;// Shutter speed equal to or closest to (and faster than) it should be selected by the sl@0: // camera in order to get optimum exposure. sl@0: break; sl@0: } sl@0: sl@0: case CCamera::CCameraAdvancedSettings::EISOAutoAperturePrioritised: sl@0: { sl@0: param = KDefaultAperture;// Aperture opening equal to or closest to (and wider than) it should be selected by the sl@0: // camera in order to get optimum exposure. sl@0: break; sl@0: } sl@0: sl@0: default: sl@0: { sl@0: param =0; sl@0: } sl@0: } sl@0: sl@0: aSettings->SetISORateL(aIsoRateType, param); sl@0: sl@0: CheckNotification(iInputEventUid, aResult); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TISORateType retrievedIsoRateType; sl@0: TInt retrievedParam =0; sl@0: TInt retrievedIsoRate =0; sl@0: sl@0: aSettings->GetISORateL(retrievedIsoRateType, retrievedParam, retrievedIsoRate); sl@0: sl@0: if(retrievedIsoRateType != aIsoRateType) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate Type 0x%x is not as expected 0x%x"), sl@0: retrievedIsoRateType, aIsoRateType); sl@0: aResult = EFail; sl@0: } sl@0: sl@0: if(aIsoRateType & KAutoISOTypes) sl@0: { sl@0: if(retrievedParam != param) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Auto ISO parameter %d is not as expected %d"), sl@0: retrievedParam, param); sl@0: aResult = EFail; sl@0: } sl@0: sl@0: if(retrievedIsoRate == KErrNotFound) sl@0: { sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings retrieved Iso Rate: %d :- Camera incapable of getting ISO under Auto ISO"), sl@0: retrievedIsoRate); sl@0: } sl@0: else sl@0: {//ISO set under Auto ISO has to be one of supported ISO rates . sl@0: if (aSupportedIsoRates.Find(retrievedIsoRate) == KErrNotFound) sl@0: { sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings Iso Rate %d is not among the supported ISO rates"), sl@0: retrievedIsoRate); sl@0: aResult = EFail; sl@0: } sl@0: sl@0: sl@0: if(aIsoRateType == CCamera::CCameraAdvancedSettings::EISOAutoISOPrioritised) sl@0: { sl@0: //ISO rate set should be less than or equal to param sl@0: if (retrievedIsoRate > param) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate %d is greater than %d"), sl@0: retrievedIsoRate, param); sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: //use of old API sl@0: TInt retrievedIsoRateOld = aSettings->IsoRate(); sl@0: if (retrievedIsoRateOld != retrievedIsoRate) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings OLD and NEW API inconsistent: Iso Rate old %d ; ISO Rate new: %d"), sl@0: retrievedIsoRateOld, retrievedIsoRate); sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: //switch to manual ISO using OLD API sl@0: aSettings->SetIsoRate(KDefaultIsoRating); sl@0: sl@0: aSettings->GetISORateL(retrievedIsoRateType, param, retrievedIsoRate); sl@0: sl@0: if(retrievedIsoRateType != CCamera::CCameraAdvancedSettings::EISOManual) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate Type 0x%x is not as expected 0x%x : OLD and NEW API inconsistent"), sl@0: retrievedIsoRateType, CCamera::CCameraAdvancedSettings::EISOManual); sl@0: aResult = EFail; sl@0: } sl@0: sl@0: if (retrievedIsoRate != KDefaultIsoRating) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings Iso Rate %d is not as expected %d"), sl@0: retrievedIsoRate, KDefaultIsoRating); sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: //use of old API sl@0: TInt retrievedIsoRateOld = aSettings->IsoRate(); sl@0: if (retrievedIsoRateOld != retrievedIsoRate) sl@0: { sl@0: INFO_PRINTF3(_L("CCameraAdvancedSettings OLD and NEW API inconsistent: Iso Rate old %d ; ISO Rate new: %d"), sl@0: retrievedIsoRateOld, retrievedIsoRate); sl@0: aResult = EFail; sl@0: } sl@0: } sl@0: sl@0: // sl@0: // RECamAdvSetGettersTest // sl@0: // sl@0: RECamAdvSetGettersTest* RECamAdvSetGettersTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetGettersTest* self = new (ELeave) RECamAdvSetGettersTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetGettersTest::RECamAdvSetGettersTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-011-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetGettersTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::New2L(*this, 0,0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create advanced settings from CCamera object")); sl@0: settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: sl@0: iInputEventUid = KUidECamEventCameraSettingIsoRate; sl@0: TInt isoRateSet = KIsoRate01; sl@0: settings->SetIsoRate(isoRateSet); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings Iso Rate set %d"), isoRateSet); sl@0: sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: // Get ISO rate. It should have changed to set value. sl@0: TInt isoRate = settings->IsoRate(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings get Iso Rate %d"), isoRate); sl@0: sl@0: if (isoRateSet!=isoRate) sl@0: { sl@0: INFO_PRINTF1(_L("Got a different iso rate than it was set")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(settings); sl@0: } sl@0: else sl@0: { sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: sl@0: // sl@0: // RECamAdvSetTwoCamTest // sl@0: // sl@0: RECamAdvSetTwoCamTest* RECamAdvSetTwoCamTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetTwoCamTest* self = new (ELeave) RECamAdvSetTwoCamTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetTwoCamTest::RECamAdvSetTwoCamTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-014-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetTwoCamTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera1 = NULL; sl@0: CCamera* camera2 = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings1 = NULL; sl@0: CCamera::CCameraAdvancedSettings* settings2 = NULL; sl@0: sl@0: // using observer 2 if exist sl@0: MCameraObserver2* observer2 = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera1 = CCamera::New2L(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera1); sl@0: TRAP(error, camera2 = CCamera::New2L(*observer2, 1,0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera2); sl@0: //Second camera sl@0: settings1 = static_cast (camera1->CustomInterface(KECamAdvancedSettingUid)); sl@0: RArray aSuppSettings1; sl@0: RArray aActSettings1; sl@0: if (settings1!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings1); sl@0: sl@0: CleanupClosePushL(aSuppSettings1); sl@0: aSuppSettings1.Reset(); sl@0: settings1->GetSupportedSettingsL(aSuppSettings1); sl@0: CleanupClosePushL(aActSettings1); sl@0: aActSettings1.Reset(); sl@0: settings1->GetActiveSettingsL(aActSettings1); sl@0: if ((aActSettings1.Count())==0) sl@0: { sl@0: INFO_PRINTF1(_L("Active camera. Non empty array expected")); sl@0: result = EFail; sl@0: } sl@0: sl@0: settings1->GetDisabledSettingsL(aActSettings1); sl@0: } sl@0: sl@0: //Second camera sl@0: settings2 = static_cast (camera2->CustomInterface(KECamAdvancedSettingUid)); sl@0: RArray aSuppSettings2; sl@0: RArray aActSettings2; sl@0: if (settings2!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings2); sl@0: sl@0: CleanupClosePushL(aSuppSettings2); sl@0: aSuppSettings2.Reset(); sl@0: settings2->GetSupportedSettingsL(aSuppSettings2); sl@0: CleanupClosePushL(aActSettings2); sl@0: aActSettings2.Reset(); sl@0: settings2->GetActiveSettingsL(aActSettings2); sl@0: if ((aActSettings2.Count())!=0) sl@0: { sl@0: INFO_PRINTF1(_L("Empty array expected (non present camera)")); sl@0: result = EFail; sl@0: } sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(2, &aSuppSettings2); //aActSettings2 sl@0: CleanupStack::PopAndDestroy(settings2); sl@0: sl@0: CleanupStack::PopAndDestroy(2, &aSuppSettings1); //aActSettings1 sl@0: CleanupStack::PopAndDestroy(settings1); sl@0: sl@0: CleanupStack::PopAndDestroy(camera2); sl@0: sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(camera1); sl@0: sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: // sl@0: // RECamAdvSetNegTest // sl@0: // sl@0: sl@0: RECamAdvSetNegTest* RECamAdvSetNegTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetNegTest* self = new (ELeave) RECamAdvSetNegTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetNegTest::RECamAdvSetNegTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-0102-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetNegTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::New2L(*this,0,0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create advanced settings from CCamera object")); sl@0: settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: // trying to set a value which is not supported sl@0: // the action would fail to set a new value and the notification will fail sl@0: // thus the current value will be different from the requested value. - double verification sl@0: iInputEventUid = KUidECamEventCameraSettingIsoRate; sl@0: TInt isoRateSet = KIsoRate0; // not supported rate sl@0: settings->SetIsoRate(isoRateSet); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings Iso Rate set 0x%x"), isoRateSet); sl@0: sl@0: CheckNotificationNeg(iInputEventUid, result); sl@0: sl@0: // Get ISO rate. It should have changed to set value. sl@0: TInt isoRate = settings->IsoRate(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings get Iso Rate 0x%x"), isoRate); sl@0: if (isoRateSet == isoRate) sl@0: { sl@0: INFO_PRINTF1(_L("Got an unsupported iso rate set")); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Check the new API for ISO setting as well. sl@0: iInputEventUid = KUidECamEventCameraSettingIsoRateType; sl@0: sl@0: settings->SetISORateL(CCamera::CCameraAdvancedSettings::EISOManual, isoRateSet); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings Iso Rate set 0x%x"), isoRateSet); sl@0: sl@0: CheckNotificationNeg(iInputEventUid, result); sl@0: sl@0: // Get ISO rate. It should have changed to set value. sl@0: CCamera::CCameraAdvancedSettings::TISORateType isoRateType = CCamera::CCameraAdvancedSettings::EISOManual; sl@0: TInt index =0; sl@0: settings->GetISORateL(isoRateType, index, isoRate); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings get Iso Rate 0x%x"), isoRate); sl@0: if (isoRateSet == isoRate) sl@0: { sl@0: INFO_PRINTF1(_L("Got an unsupported iso rate set")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(settings); sl@0: } sl@0: else sl@0: { sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: // sl@0: // RECamAdvSetBaselineTest // sl@0: // sl@0: RECamAdvSetBaselineTest* RECamAdvSetBaselineTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetBaselineTest* self = new (ELeave) RECamAdvSetBaselineTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetBaselineTest::RECamAdvSetBaselineTest(TBool) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-048-HP"); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetBaselineTest::DoTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::NewL() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::NewL(*this, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create advanced settings from CCamera object")); sl@0: settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: sl@0: // Supported Focus Range. Set unfamilar Focus Range. Get a known Focus Range. sl@0: iInputEventUid = KUidECamEventCameraSettingFocusRange; sl@0: TInt suppFocusRanges = settings->SupportedFocusRanges(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported Focus Ranges 0x%x"), suppFocusRanges); sl@0: if(suppFocusRanges > KBaselinedFocusRanges) sl@0: { sl@0: INFO_PRINTF1(_L("Unfamiliar focus range received")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CCamera::CCameraAdvancedSettings::TFocusRange unfamilarFocusRange = CCamera::CCameraAdvancedSettings::EFocusRangeHyperfocal; sl@0: settings->SetFocusRange(unfamilarFocusRange); sl@0: sl@0: // Check for KUidECamEventCameraSettingFocusRange. sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TFocusRange retrievedFocusRange = settings->FocusRange(); sl@0: if (CCamera::CCameraAdvancedSettings::EFocusRangeAuto != retrievedFocusRange) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar/wrong Focus Range")); sl@0: result = EFail; sl@0: } sl@0: sl@0: // Supported White Balance Modes. Set unfamilar White Balance. Get a known White Balance. sl@0: iInputEventUid = KUidECamEventCameraSettingsWBValue; sl@0: TInt suppWhiteBalance = settings->SupportedWhiteBalanceModes(); sl@0: INFO_PRINTF2(_L("CCameraAdvancedSettings supported White Balance 0x%x"), suppWhiteBalance); sl@0: if(suppWhiteBalance > KBaselinedWhiteBalanceModes) sl@0: { sl@0: INFO_PRINTF1(_L("Unfamiliar White Balance received")); sl@0: result = EFail; sl@0: } sl@0: sl@0: CCamera::TWhiteBalance unfamilarWhiteBalance = CCamera::EWBDaylightUnderWater; sl@0: settings->SetWhiteBalanceMode(unfamilarWhiteBalance); sl@0: sl@0: // Check for KUidECamEventCameraSettingsWBValue. sl@0: CheckNotification(iInputEventUid, result); sl@0: sl@0: CCamera::TWhiteBalance retrievedWhiteBalance = settings->WhiteBalanceMode(); sl@0: if (CCamera::EWBAuto != retrievedWhiteBalance) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar/wrong WhiteBalance")); sl@0: result = EFail; sl@0: } sl@0: sl@0: RArray settingsList; sl@0: CleanupClosePushL(settingsList); sl@0: // check for GetSupportedSettings sl@0: settings->GetSupportedSettingsL(settingsList); sl@0: sl@0: for(TInt index=0; index KUidECamEventCameraSettingAutoFocusType2UidValue) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar settings")); sl@0: result = EFail; sl@0: } sl@0: } sl@0: settingsList.Reset(); sl@0: sl@0: // check for GetActiveSettings sl@0: settings->GetActiveSettingsL(settingsList); sl@0: sl@0: for(TInt index=0; index KUidECamEventCameraSettingAutoFocusType2UidValue) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar settings")); sl@0: result = EFail; sl@0: } sl@0: } sl@0: settingsList.Reset(); sl@0: sl@0: // check for GetDisabledSettings sl@0: settings->GetDisabledSettingsL(settingsList); sl@0: sl@0: for(TInt index=0; index KUidECamEventCameraSettingAutoFocusType2UidValue) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar settings")); sl@0: result = EFail; sl@0: } sl@0: } sl@0: settingsList.Reset(); sl@0: sl@0: // check for PRECaptureWarning sl@0: TInt preCaptureWarningSupported = KAllPreCaptureWarnings; // ( = 0x3FFF) sl@0: settings->GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::EModeIdle, preCaptureWarningSupported); sl@0: if(preCaptureWarningSupported != ((CCamera::CCameraAdvancedSettings::EPCWGeneralWarning << 1)-1)) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar preCaptureWarningSupported")); sl@0: result = EFail; sl@0: } sl@0: sl@0: // subscribe for pre capture warnings. Poll for it. Unsubscribe for Pre capture warning. sl@0: settings->SubscribeToPreCaptureWarningL(preCaptureWarningSupported); sl@0: sl@0: //Poll to know the status of every possible warning ... sl@0: TInt warningStatus = preCaptureWarningSupported; sl@0: settings->GetPreCaptureWarningL(warningStatus); sl@0: if(warningStatus != ((CCamera::CCameraAdvancedSettings::EPCWGeneralWarning << 1)-1)) sl@0: { sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings retrieved unfamilar PreCaptureWarning")); sl@0: result = EFail; sl@0: } sl@0: sl@0: settings->UnSubscribePreCaptureWarningL(); sl@0: sl@0: CleanupStack::PopAndDestroy(&settingsList); sl@0: CleanupStack::PopAndDestroy(settings); sl@0: } sl@0: else sl@0: { sl@0: result = EFail; sl@0: } sl@0: CleanupStack::PopAndDestroy(camera); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Unexpected %d return from CCamera::NewL(): observer 2"), error); sl@0: result = EFail; sl@0: } sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: return result; sl@0: } sl@0: sl@0: class TDummyObserver: public MCameraObserver2 sl@0: { sl@0: public: sl@0: explicit TDummyObserver(TInt& aErrorPointer); sl@0: sl@0: virtual void HandleEvent(const TECAMEvent& aEvent); sl@0: virtual void ViewFinderReady(MCameraBuffer& aCameraBuffer,TInt aError); sl@0: virtual void ImageBufferReady(MCameraBuffer& aCameraBuffer,TInt aError); sl@0: virtual void VideoBufferReady(MCameraBuffer& aCameraBuffer,TInt aError); sl@0: sl@0: private: sl@0: TInt& iErrorPointer; sl@0: }; sl@0: sl@0: TDummyObserver::TDummyObserver(TInt& aErrorPointer):iErrorPointer(aErrorPointer) sl@0: { sl@0: } sl@0: sl@0: void TDummyObserver::HandleEvent(const TECAMEvent& /*aEvent*/) sl@0: { sl@0: return; sl@0: } sl@0: sl@0: void TDummyObserver::ViewFinderReady(MCameraBuffer& /*aCameraBuffer*/, TInt aError) sl@0: { sl@0: iErrorPointer = aError; sl@0: } sl@0: sl@0: void TDummyObserver::ImageBufferReady(MCameraBuffer& /*aCameraBuffer*/, TInt aError) sl@0: { sl@0: iErrorPointer = aError; sl@0: } sl@0: sl@0: void TDummyObserver::VideoBufferReady(MCameraBuffer& /*aCameraBuffer*/,TInt aError) sl@0: { sl@0: iErrorPointer = aError; sl@0: } sl@0: sl@0: RECamAdvSetTest2* RECamAdvSetTest2::NewL(TBool aAllocTest) sl@0: { sl@0: RECamAdvSetTest2* self = new (ELeave) RECamAdvSetTest2(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamAdvSetTest2::RECamAdvSetTest2(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-049-HP"); sl@0: } sl@0: sl@0: void RECamAdvSetTest2::RatioSubStepL(CCamera::CCameraAdvancedSettings* settings, TInt aSuppRange, TInt aTestValue, TInt aExpValue) sl@0: { sl@0: // Pixel ratio's // sl@0: TInt suppRatios = settings->SupportedPixelAspectRatios(); sl@0: if (suppRatios != aSuppRange) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: Supported pixel ratios are wrong %x "), suppRatios); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: settings->SetPixelAspectRatio( CCamera::CCameraAdvancedSettings::TPixelAspectRatio(aTestValue) ); sl@0: sl@0: TInt ratio = settings->PixelAspectRatio(); sl@0: sl@0: if (ratio != aExpValue) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: Returned ration is wrong %x "), ratio); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: } sl@0: sl@0: void RECamAdvSetTest2::FlashSubStepL(CCamera::CCameraAdvancedSettings* settings, TInt aSuppRange, TInt aTestValue, TInt aExpValue) sl@0: { sl@0: // Flash modes // sl@0: TInt suppFlashModes = settings->SupportedFlashModes(); sl@0: sl@0: if (suppFlashModes != aSuppRange) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: Supported flash modes are wrong %x "), suppFlashModes); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: settings->SetFlashMode( CCamera::TFlash(aTestValue) ); sl@0: sl@0: TInt flashMode = settings->FlashMode(); sl@0: sl@0: if (flashMode != aExpValue) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: Returned flash mode is wrong %x "), flashMode); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: } sl@0: sl@0: void RECamAdvSetTest2::OvrSubStepL(CCamera& aCamera, TInt aSuppRange, TInt aTestValue, TInt aExpValue) sl@0: { sl@0: // Overlay modes // sl@0: CCamera::CCameraOverlay* overlay = NULL; sl@0: TInt error = KErrNone; sl@0: TRAP(error, overlay = CCamera::CCameraOverlay::NewL(aCamera)); sl@0: sl@0: if (overlay == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("--Error: Failed to get the CCameraOverlay")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(overlay); sl@0: CCamera::CCameraOverlay::TOverlaySupportInfo overlaySupInfo; sl@0: overlay->GetOverlaySupport( overlaySupInfo ); sl@0: sl@0: if (overlaySupInfo.iSupportedModes != aSuppRange) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: Supported overlay modes are wrong %x "), overlaySupInfo.iSupportedModes); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: sl@0: CCamera::CCameraOverlay::TOverlayParameters ovrParams; sl@0: ovrParams.iCurrentModes = aTestValue; sl@0: ovrParams.iCurrentTypes = CCamera::CCameraOverlay::EPerPixel; sl@0: sl@0: CFbsBitmap* bmp = new (ELeave) CFbsBitmap(); sl@0: CleanupStack::PushL(bmp); sl@0: TUint handle = 0; sl@0: TRAP(error, handle = overlay->CreateOverlayL(ovrParams, bmp) ); sl@0: if (error != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: failed to create overlay %d "), error); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: sl@0: CCamera::CCameraOverlay::TOverlayParameters retrievedParams; sl@0: overlay->GetOverlayParametersL(handle, retrievedParams); sl@0: overlay->ReleaseOverlay(handle); sl@0: sl@0: if (retrievedParams.iCurrentModes != aExpValue) sl@0: { sl@0: INFO_PRINTF2(_L("--Error: wrong overlay params retrieved %x "), retrievedParams.iCurrentModes); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PopAndDestroy(2, overlay); sl@0: } sl@0: sl@0: TVerdict RECamAdvSetTest2::DoTestStepL() sl@0: { sl@0: const TInt KNew2PixRatio = CCamera::CCameraAdvancedSettings::EEPixelAspect40To33; sl@0: const TInt KNew2SuppRatios = ( CCamera::CCameraAdvancedSettings::EEPixelAspect40To33 << 1) - 1; sl@0: sl@0: const TInt KOldPixRatio = CCamera::CCameraAdvancedSettings::EEPixelAspect59To54; sl@0: const TInt KOldSuppRatios = ( CCamera::CCameraAdvancedSettings::EEPixelAspect59To54 << 1) - 1; sl@0: sl@0: const TInt KNew2FlashModes = (CCamera::EFlashVideoLight << 1) - 1; sl@0: const TInt KNew2FlashMode = CCamera::EFlashVideoLight; sl@0: sl@0: const TInt KOldFlashModes = (CCamera::EFlashManual << 1) - 1; sl@0: const TInt KOldFlashMode = CCamera::EFlashManual; sl@0: sl@0: const TInt KNew2OvrSuppt = (CCamera::CCameraOverlay::EModeStillImageBurst << 1) - 1; sl@0: const TInt KOldOvrSuppt = (CCamera::CCameraOverlay::EModeVideo << 1) - 1; sl@0: sl@0: CCamera* camera = NULL; sl@0: TInt callbackError = KErrNone; sl@0: TDummyObserver observer2(callbackError); sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: TRAP(error, camera = CCamera::New2L(observer2, 0, 100)); sl@0: if (error!=KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("--Error creating CCamera object %d"),error); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(camera); sl@0: sl@0: settings = static_cast sl@0: (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("--Error: Failed to get the CCameraAdvancedSettings")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(settings); sl@0: sl@0: RatioSubStepL(settings, KNew2SuppRatios, KNew2PixRatio, KNew2PixRatio); sl@0: FlashSubStepL(settings, KNew2FlashModes, KNew2FlashMode, KNew2FlashMode); sl@0: OvrSubStepL(*camera, KNew2OvrSuppt, KNew2OvrSuppt, KNew2OvrSuppt); sl@0: sl@0: CleanupStack::PopAndDestroy(2, camera); sl@0: sl@0: // now try to use it as an "old" client // sl@0: TRAP(error, camera = CCamera::NewL(observer2, 0, 100)); sl@0: if (error!=KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("--Error creating CCamera object %d"),error); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(camera); sl@0: sl@0: settings = static_cast sl@0: (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings == NULL) sl@0: { sl@0: INFO_PRINTF1(_L("--Error: Failed to get the CCameraAdvancedSettings")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(settings); sl@0: sl@0: RatioSubStepL(settings, KOldSuppRatios, KOldPixRatio, KOldPixRatio); sl@0: RatioSubStepL(settings, KOldSuppRatios, KNew2PixRatio, CCamera::CCameraAdvancedSettings::EPixelAspectUnknown); sl@0: sl@0: FlashSubStepL(settings, KOldFlashModes, KOldFlashMode, KOldFlashMode); sl@0: FlashSubStepL(settings, KOldFlashModes, KNew2FlashMode, CCamera::EFlashAuto); sl@0: sl@0: OvrSubStepL(*camera, KOldOvrSuppt, KOldOvrSuppt, KOldOvrSuppt); sl@0: OvrSubStepL(*camera, KOldOvrSuppt, CCamera::CCameraOverlay::EModeClientViewfinder, sl@0: CCamera::CCameraOverlay::EModeViewfinder); sl@0: sl@0: OvrSubStepL(*camera, KOldOvrSuppt, CCamera::CCameraOverlay::EModeStillImageBurst, sl@0: CCamera::CCameraOverlay::EModeStillImage); sl@0: sl@0: CleanupStack::PopAndDestroy(2, camera); sl@0: return EPass; sl@0: } sl@0: sl@0: sl@0: RECamContinuousZoomAllocTest* RECamContinuousZoomAllocTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamContinuousZoomAllocTest* self = new (ELeave) RECamContinuousZoomAllocTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamContinuousZoomAllocTest::RECamContinuousZoomAllocTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-058-HP"); sl@0: } sl@0: sl@0: TVerdict RECamContinuousZoomAllocTest::DoTestStepL() sl@0: { sl@0: TVerdict verdict = EFail; sl@0: INFO_PRINTF1(_L("Alloc test")); sl@0: TInt i; sl@0: TInt err; sl@0: for (i = 1 ; ; i++) sl@0: { sl@0: __MM_HEAP_MARK; sl@0: sl@0: if (i % 5 == 0) sl@0: { sl@0: INFO_PRINTF2(_L("Fail count = %d"), i); sl@0: } sl@0: sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, i); sl@0: sl@0: TRAP(err, verdict = DoAllocTestStepL()); sl@0: sl@0: TAny* testAlloc = User::Alloc(1); sl@0: TBool heapTestingComplete = (testAlloc == NULL) && (err==KErrNone); sl@0: User::Free(testAlloc); sl@0: sl@0: __UHEAP_RESET; sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: if ((err != KErrNoMemory ) || heapTestingComplete) sl@0: { sl@0: INFO_PRINTF4(_L("err = %d, verdict = %d, Fail count = %d"), err, verdict, i); sl@0: INFO_PRINTF1(_L("Alloc testing completed successfully")); sl@0: verdict = EPass; sl@0: break; sl@0: } sl@0: } sl@0: return verdict; sl@0: } sl@0: sl@0: TVerdict RECamContinuousZoomAllocTest::DoAllocTestStepL() sl@0: { sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: sl@0: TInt error = KErrNone; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: CCamera::CCameraContinuousZoom* zoom = NULL; sl@0: sl@0: // using observer 2 if exist sl@0: MCameraObserver2* observer2 = NULL; sl@0: sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: INFO_PRINTF1(_L("Create advanced settings from CCamera object")); sl@0: settings = static_cast (camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings!= NULL) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings object was created")); sl@0: CCamera::CCameraAdvancedSettings::TContinuousZoomType continuousZoomType = sl@0: CCamera::CCameraAdvancedSettings::EContinuousZoomMixed; sl@0: sl@0: INFO_PRINTF1(_L("Create continuous zoom from advanced settings object")); sl@0: TRAP(error, settings->CreateContinuousZoomL(*this, continuousZoomType, zoom)); sl@0: if (error == KErrNone) sl@0: { sl@0: CleanupStack::PushL(zoom); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Unexpected %d return from CCamera::CreateContinuousZoomL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF1(_L("Could not create CCameraAdvancedSettings")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(3, camera); sl@0: __MM_HEAP_MARKEND; sl@0: sl@0: // create a settings object using New2L sl@0: __MM_HEAP_MARK; sl@0: INFO_PRINTF1(_L("Create camera using Camera::New2L() and MCameraObserver2")); sl@0: sl@0: TRAP(error, camera = CCamera::New2L(*observer2, 0,0)); sl@0: sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(camera); sl@0: TRAP(error, settings = CCamera::CCameraAdvancedSettings::NewL(*camera)); sl@0: if (error==KErrNone) sl@0: { sl@0: CleanupStack::PushL(settings); sl@0: INFO_PRINTF1(_L("CCameraAdvancedSettings object was created using NewL")); sl@0: CCamera::CCameraAdvancedSettings::TContinuousZoomType continuousZoomType = sl@0: CCamera::CCameraAdvancedSettings::EContinuousZoomMixed; sl@0: sl@0: INFO_PRINTF1(_L("Create continuous zoom from advanced settings object")); sl@0: TRAP(error, settings->CreateContinuousZoomL(*this, continuousZoomType, zoom)); sl@0: if (error == KErrNone) sl@0: { sl@0: CleanupStack::PushL(zoom); sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Unexpected %d return from CCamera::CreateContinuousZoomL()"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF1(_L("CCameraAdvancedSettings object was not created using NewL")); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("Unexpected %d return from CCamera::New2L(): observer 2"), error); sl@0: result = EFail; sl@0: User::Leave(KErrNoMemory); sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(3, camera); sl@0: __MM_HEAP_MARKEND; sl@0: return result; sl@0: } sl@0: sl@0: RECamContinuousZoomTest* RECamContinuousZoomTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamContinuousZoomTest* self = new (ELeave) RECamContinuousZoomTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamContinuousZoomTest::RECamContinuousZoomTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-060-HP"); sl@0: } sl@0: sl@0: TVerdict RECamContinuousZoomTest::DoTestStepL() sl@0: { sl@0: __MM_HEAP_MARK; sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: TInt callbackError = KErrNone; sl@0: TDummyObserver observer2(callbackError); sl@0: sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: camera = CCamera::New2L(observer2, 0, 0); sl@0: CleanupStack::PushL(camera); sl@0: sl@0: settings = static_cast(camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings == NULL) sl@0: { sl@0: ERR_PRINTF1(_L("--Error: Failed to get the CCameraAdvancedSettings")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(settings); sl@0: sl@0: TUint supportedContinuousZoomType = 100; sl@0: settings->GetSupportedContinuousZoomTypeL(supportedContinuousZoomType); sl@0: if(supportedContinuousZoomType != 0) sl@0: { sl@0: ERR_PRINTF1(_L("GetSupportedContinuousZoomTypeL supported!")); sl@0: result = EFail; sl@0: CleanupStack::PopAndDestroy(2, camera); sl@0: return result; sl@0: } sl@0: sl@0: CCamera::CCameraAdvancedSettings::TContinuousZoomType continuousZoomType = sl@0: CCamera::CCameraAdvancedSettings::EContinuousZoomMixed; sl@0: sl@0: CCamera::CCameraContinuousZoom* continuousZoom = NULL; sl@0: settings->CreateContinuousZoomL(*this, continuousZoomType, continuousZoom); sl@0: CleanupStack::PushL(continuousZoom); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TContinuousZoomSupportInfo info; sl@0: continuousZoom->GetContinuousZoomSupportInfoL(info); sl@0: sl@0: INFO_PRINTF1(_L("Fake supported continuous zoom settings are:")); sl@0: INFO_PRINTF2(_L("Max speed supported = %d"), info.iMaxSpeedSupported); sl@0: INFO_PRINTF2(_L("Min acceleration supported = %d"), info.iMinAccelerationSupported); sl@0: INFO_PRINTF2(_L("Max acceleration supported = %d"), info.iMaxAccelerationSupported); sl@0: INFO_PRINTF2(_L("Min continuous zoom limit = %d"), info.iContinuousZoomMinLimit); sl@0: INFO_PRINTF2(_L("Max continuous zoom limit = %d"), info.iContinuousZoomMaxLimit); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TContinuousZoomParameters param; sl@0: param.iContinuousZoomType = continuousZoomType; sl@0: param.iContinuousZoomAcceleration = 0; sl@0: param.iContinuousZoomSpeed = 1; sl@0: param.iContinuousZoomLimit = 5; sl@0: param.iZoomDirection = CCamera::CCameraAdvancedSettings::EZoomDirectionWide; sl@0: sl@0: INFO_PRINTF1(_L("Calling StartContinuousZoomL()")); sl@0: continuousZoom->StartContinuousZoomL(param); sl@0: sl@0: INFO_PRINTF1(_L("Calling StopContinuousZoomL()")); sl@0: continuousZoom->StopContinuousZoom(); sl@0: sl@0: INFO_PRINTF1(_L("Creating second continuous zoom object and comparing unique zoom ids")); sl@0: TInt id = 0; sl@0: TInt secondId = 0; sl@0: continuousZoom->GetContinuousZoomId(id); sl@0: sl@0: CCamera::CCameraContinuousZoom* secondContinuousZoom = NULL; sl@0: settings->CreateContinuousZoomL(*this, continuousZoomType, secondContinuousZoom); sl@0: secondContinuousZoom->GetContinuousZoomId(secondId); sl@0: sl@0: INFO_PRINTF2(_L("Zoom Id of first object is %d"), id); sl@0: INFO_PRINTF2(_L("Zoom Id of second object is %d"), secondId); sl@0: if(id == secondId) sl@0: { sl@0: ERR_PRINTF1(_L("Zoom ids of both continuous zoom objects are the same")); sl@0: result = EFail; sl@0: delete secondContinuousZoom; sl@0: CleanupStack::PopAndDestroy(3, camera); sl@0: return result; sl@0: } sl@0: delete secondContinuousZoom; sl@0: sl@0: INFO_PRINTF1(_L("Attempting to start continuous zoom with 'unsupported' values")); sl@0: param.iContinuousZoomSpeed = 100; sl@0: param.iContinuousZoomAcceleration = -10; sl@0: param.iContinuousZoomLimit = 20; sl@0: TRAPD(err, continuousZoom->StartContinuousZoomL(param)); sl@0: if(err == KErrArgument) sl@0: { sl@0: INFO_PRINTF2(_L("StartContinuousZoom() correctly failed with %d"), err); sl@0: } sl@0: else if(err == KErrNone) sl@0: { sl@0: ERR_PRINTF1(_L("StartContinuousZoom() succeeded with unsupported values")); sl@0: result = EFail; sl@0: } sl@0: else sl@0: { sl@0: ERR_PRINTF2(_L("StartContinuousZoom() failed with unexpected error %d"), err); sl@0: result = EFail; sl@0: } sl@0: sl@0: CleanupStack::PopAndDestroy(3, camera); sl@0: __MM_HEAP_MARKEND; sl@0: return result; sl@0: } sl@0: sl@0: sl@0: RECamDependantSupportedDriveModesTest* RECamDependantSupportedDriveModesTest::NewL(TBool aAllocTest) sl@0: { sl@0: RECamDependantSupportedDriveModesTest* self = new (ELeave) RECamDependantSupportedDriveModesTest(aAllocTest); sl@0: return self; sl@0: } sl@0: sl@0: RECamDependantSupportedDriveModesTest::RECamDependantSupportedDriveModesTest(TBool /*aAllocTest*/) sl@0: { sl@0: iTestStepName = _L("MM-ECM-ADV-U-061-HP"); sl@0: } sl@0: sl@0: TVerdict RECamDependantSupportedDriveModesTest::DoTestStepL() sl@0: { sl@0: __MM_HEAP_MARK; sl@0: TVerdict result = EPass; sl@0: CCamera* camera = NULL; sl@0: MCameraObserver* observer = NULL; sl@0: MCameraObserver2* observer2 = NULL; sl@0: CCamera::CCameraAdvancedSettings* settings = NULL; sl@0: sl@0: INFO_PRINTF1(_L("Testing drive modes returned for legacy CCamera::NewL()")); sl@0: camera = CCamera::NewL(*observer, 0); sl@0: CleanupStack::PushL(camera); sl@0: sl@0: settings = static_cast(camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings == NULL) sl@0: { sl@0: ERR_PRINTF1(_L("--Error: Failed to get the CCameraAdvancedSettings")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(settings); sl@0: sl@0: CCamera::CCameraAdvancedSettings::TDriveMode driveMode = settings->DriveMode(); sl@0: if(driveMode != CCamera::CCameraAdvancedSettings::EDriveModeAuto) sl@0: { sl@0: ERR_PRINTF1(_L("Drive mode returned for CCamera::NewL() not CCameraAdvancedSettings::EDriveModeAuto as expected")); sl@0: result = EFail; sl@0: return result; sl@0: } sl@0: sl@0: TInt supportedDriveModes = settings->SupportedDriveModes(); sl@0: if(supportedDriveModes & CCamera::CCameraAdvancedSettings::EDriveModeTimeNudgeCapture) sl@0: { sl@0: ERR_PRINTF1(_L("Unexpected error - EDriveModeTimeNudgeCapture supported for CCamera::NewL()")); sl@0: result = EFail; sl@0: return result; sl@0: } sl@0: sl@0: settings->SetDriveMode(CCamera::CCameraAdvancedSettings::EDriveModeTimeNudgeCapture); sl@0: driveMode = settings->DriveMode(); sl@0: if(driveMode == CCamera::CCameraAdvancedSettings::EDriveModeTimeNudgeCapture) sl@0: { sl@0: ERR_PRINTF1(_L("Unexpected error - drive mode is EDriveModeTimeNudgeCapture for CCamera::NewL()")); sl@0: result = EFail; sl@0: return result; sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("Supported drive modes do not include new EDriveTimeNudgeCapture - expected for CCamera::NewL()")); sl@0: } sl@0: CleanupStack::PopAndDestroy(2, camera); sl@0: sl@0: sl@0: sl@0: INFO_PRINTF1(_L("Now testing drive modes returned for CCamera::New2L()")); sl@0: camera = CCamera::New2L(*observer2, 0, 0); sl@0: CleanupStack::PushL(camera); sl@0: sl@0: settings = static_cast(camera->CustomInterface(KECamAdvancedSettingUid)); sl@0: if (settings == NULL) sl@0: { sl@0: ERR_PRINTF1(_L("--Error: Failed to get the CCameraAdvancedSettings")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: CleanupStack::PushL(settings); sl@0: sl@0: supportedDriveModes = settings->SupportedDriveModes(); sl@0: settings->SetDriveMode(CCamera::CCameraAdvancedSettings::EDriveModeTimeNudgeCapture); sl@0: driveMode = settings->DriveMode(); sl@0: CleanupStack::PopAndDestroy(2, camera); sl@0: sl@0: if(!(supportedDriveModes & CCamera::CCameraAdvancedSettings::EDriveModeTimeNudgeCapture)) sl@0: { sl@0: ERR_PRINTF1(_L("Unexpected error - EDriveModeTimeNudgeCapture not supported for CCamera::New2L()")); sl@0: result = EFail; sl@0: return result; sl@0: } sl@0: else if(driveMode != CCamera::CCameraAdvancedSettings::EDriveModeTimeNudgeCapture) sl@0: { sl@0: ERR_PRINTF1(_L("Unexpected error - drive mode is not EDriveModeTimeNudgeCapture for CCamera::New2L()")); sl@0: result = EFail; sl@0: return result; sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("Supported drive modes include new EDriveTimeNudgeCapture - expected for CCamera::New2L()")); sl@0: } sl@0: sl@0: __MM_HEAP_MARKEND; sl@0: return result; sl@0: }