sl@0: // Copyright (c) 2001-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 the License "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: // Overview: sl@0: // Test the video driver kernel extension sl@0: // API Information: sl@0: // HAL, UserSvr sl@0: // Details: sl@0: // - Get and report the value for brightness & max brightness. Adjust sl@0: // the brightness. Verify results are as expected. sl@0: // - Get and report the value for contrast & max contrast. Adjust the sl@0: // contrast. Verify results are as expected. sl@0: // - Get and set backlight status, verify results. sl@0: // - Get the number of display modes and the current display mode. sl@0: // - Get screen information for current display mode. sl@0: // - Get Bits per pixel for current display mode, for an illegal mode sl@0: // and for all modes. sl@0: // - Switch display modes and verify results are as expected. sl@0: // - Get and set palette entries, verify the results. sl@0: // - Turn the display on and off. sl@0: // - If additional screens are supported, test each screen as above. sl@0: // - Test more devices than the kernel supports, verify the results. sl@0: // Platforms/Drives/Compatibility: sl@0: // All. sl@0: // Assumptions/Requirement/Pre-requisites: sl@0: // Failures and causes: sl@0: // Base Port information: sl@0: // sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: LOCAL_D RTest test(_L("T_VIDEO")); sl@0: sl@0: LOCAL_C void RunTests(void); sl@0: sl@0: #ifndef __WINS__ sl@0: #define DUMP(x) test.Printf(_L(#x"= %d =0x%08x\n"), x, x) sl@0: #endif sl@0: sl@0: LOCAL_C void RunTests(void) sl@0: { sl@0: TInt ret = KErrNone; sl@0: TInt HALArg; sl@0: TInt saved = 0; sl@0: sl@0: /* BRIGHTNESS */ sl@0: sl@0: TBool HALMaxBrightnessSupported = EFalse; sl@0: TBool HALGetBrightnessSupported = EFalse; sl@0: TBool HALSetBrightnessSupported = EFalse; sl@0: sl@0: test.Next(_L("Max Brightness using HAL")); sl@0: TInt maxBrightness=-1; sl@0: ret = HAL::Get(HAL::EDisplayBrightnessMax, maxBrightness); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: HALMaxBrightnessSupported = ETrue; sl@0: test.Printf(_L("Maximum brightness = %d\n"), maxBrightness); sl@0: } sl@0: else sl@0: test.Printf(_L("Maximum brightness is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: test.Next(_L("Get Brightness using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EDisplayBrightness, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: test.Printf(_L("Brightness = %d\n"), HALArg); sl@0: HALGetBrightnessSupported = ETrue; sl@0: saved = HALArg; sl@0: } sl@0: else sl@0: { sl@0: test.Printf(_L("Get Brightness is NOT SUPPORTED by HAL\n")); sl@0: } sl@0: sl@0: test.Next(_L("Test brightness is <= maxBrightness")); sl@0: test(HALArg <= maxBrightness); sl@0: sl@0: test.Next(_L("Set Brightness using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayBrightness, 0); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret) || (KErrArgument == ret)); sl@0: if ((KErrNone == ret) || (KErrArgument == ret)) sl@0: HALSetBrightnessSupported = ETrue; sl@0: else sl@0: test.Printf(_L("Set brightness is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: sl@0: //if any of the brightness funcs are supported, test they all are sl@0: //we've already tested Ldd/HAL are giving same support sl@0: if (HALSetBrightnessSupported && HALGetBrightnessSupported && HALMaxBrightnessSupported) sl@0: { sl@0: //all supported sl@0: //do more comprehensive set/gets sl@0: test.Next(_L("Set Brightness using HAL to saved value")); sl@0: ret = HAL::Set(HAL::EDisplayBrightness, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Brightness using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EDisplayBrightness, HALArg); sl@0: test (KErrNone == ret); sl@0: test (saved == HALArg); sl@0: sl@0: test.Next(_L("Set Brightness to the max using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayBrightness, maxBrightness); sl@0: test.Printf(_L("ret = %d maxbr = %d"),ret, maxBrightness); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Brightness using HAL")); sl@0: HALArg = 0; sl@0: ret = HAL::Get(HAL::EDisplayBrightness, HALArg); sl@0: test (KErrNone == ret); sl@0: test (maxBrightness == HALArg); sl@0: sl@0: test.Next(_L("Set Brightness using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayBrightness, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: //test some out of range values sl@0: ret = HAL::Get(HAL::EDisplayBrightness, HALArg); sl@0: test (KErrNone == ret); sl@0: saved = HALArg; sl@0: sl@0: test.Next(_L("Set Brightness too large using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayBrightness, maxBrightness+1); sl@0: test (KErrArgument == ret); sl@0: sl@0: test.Next(_L("Set Brightness too small using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayBrightness, -1); sl@0: test (KErrArgument == ret); sl@0: sl@0: } sl@0: else //check none are supported sl@0: test(!(HALSetBrightnessSupported || HALGetBrightnessSupported || HALMaxBrightnessSupported)); sl@0: sl@0: sl@0: /* CONTRAST */ sl@0: sl@0: TBool HALMaxContrastSupported = EFalse; sl@0: TBool HALGetContrastSupported = EFalse; sl@0: TBool HALSetContrastSupported = EFalse; sl@0: sl@0: sl@0: test.Next(_L("Max Contrast using HAL")); sl@0: TInt maxContrast=-1; sl@0: ret = HAL::Get(HAL::EDisplayContrastMax, maxContrast); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: HALMaxContrastSupported = ETrue; sl@0: test.Printf(_L("Maximum Contrast = %d\n"), maxContrast); sl@0: } sl@0: else sl@0: test.Printf(_L("Maximum Contrast is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: test.Next(_L("Get Contrast using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EDisplayContrast, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: test.Printf(_L("Contrast = %d\n"), HALArg); sl@0: HALGetContrastSupported = ETrue; sl@0: saved = HALArg; sl@0: } sl@0: else sl@0: { sl@0: test.Printf(_L("Get Contrast is NOT SUPPORTED by HAL\n")); sl@0: } sl@0: sl@0: test.Next(_L("Test contrast is <= maxcontrast")); sl@0: test(HALArg <= maxContrast); sl@0: sl@0: test.Next(_L("Set Contrast using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayContrast, 0); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret) || (KErrArgument == ret)); sl@0: if ((KErrNone == ret) || (KErrArgument == ret)) sl@0: HALSetContrastSupported = ETrue; sl@0: else sl@0: test.Printf(_L("Set Contrast is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: sl@0: //if any of the Contrast funcs are supported, test they all are sl@0: //we've already tested Ldd/HAL are giving same support sl@0: if (HALSetContrastSupported && HALGetContrastSupported && HALMaxContrastSupported) sl@0: { sl@0: //all supported sl@0: //do more comprehensive set/gets sl@0: test.Next(_L("Set Contrast using HAL to saved value")); sl@0: ret = HAL::Set(HAL::EDisplayContrast, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Contrast using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EDisplayContrast, HALArg); sl@0: test (KErrNone == ret); sl@0: test (saved == HALArg); sl@0: sl@0: test.Next(_L("Set Contrast to the max using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayContrast, maxContrast); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Contrast using HAL")); sl@0: HALArg = 0; sl@0: ret = HAL::Get(HAL::EDisplayContrast, HALArg); sl@0: test (KErrNone == ret); sl@0: test (maxContrast == HALArg); sl@0: sl@0: test.Next(_L("Set Contrast using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayContrast, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: //test some out of range values sl@0: ret = HAL::Get(HAL::EDisplayContrast, HALArg); sl@0: test (KErrNone == ret); sl@0: saved = HALArg; sl@0: sl@0: test.Next(_L("Set Contrast too large using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayContrast, maxContrast+1); sl@0: test (KErrArgument == ret); sl@0: sl@0: test.Next(_L("Set Contrast too small using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayContrast, -1); sl@0: test (KErrArgument == ret); sl@0: sl@0: } sl@0: else //check none are supported sl@0: test(!(HALSetContrastSupported || HALGetContrastSupported || HALMaxContrastSupported)); sl@0: sl@0: sl@0: sl@0: /* BACKLIGHT */ sl@0: sl@0: TBool HALGetBacklightSupported = EFalse; sl@0: TBool HALSetBacklightSupported = EFalse; sl@0: TBool lightSupported = EFalse; sl@0: sl@0: test.Next(_L("check if backlight supported using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EBacklight, lightSupported); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: test.Printf(_L("Backlight supported = %d"), lightSupported); sl@0: sl@0: sl@0: sl@0: test.Next(_L("Get Backlight state using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EBacklightState, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: HALGetBacklightSupported = ETrue; sl@0: test.Printf(_L("Backlight is = %d from HAL\n"), HALArg); sl@0: } sl@0: else sl@0: test.Printf(_L("Get Light is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: test.Next(_L("Set Backlight state using HAL")); sl@0: HALArg = 0; sl@0: ret = HAL::Set(HAL::EBacklightState, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: HALSetBacklightSupported = ETrue; sl@0: test.Printf(_L("Backlight is set to = %d from HAL\n"), HALArg); sl@0: } sl@0: else sl@0: test.Printf(_L("Set Light is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: sl@0: sl@0: if (HALGetBacklightSupported && HALSetBacklightSupported) sl@0: { sl@0: sl@0: test.Next(_L("Get Backlight state using HAL (should be off)")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EBacklightState, HALArg); sl@0: test (KErrNone == ret); sl@0: test (0 == HALArg); sl@0: sl@0: test.Next(_L("Set Backlight state to on using HAL")); sl@0: ret = HAL::Set(HAL::EBacklightState, 1); sl@0: test (KErrNone == ret); sl@0: sl@0: } sl@0: else sl@0: test (!HALGetBacklightSupported == !HALSetBacklightSupported); sl@0: sl@0: sl@0: /* maximum display colors*/ sl@0: test.Next(_L("Display Colors")); sl@0: ret = HAL::Get(HAL::EDisplayColors, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: /* DISPLAY MODE */ sl@0: test.Next(_L("Display Modes")); sl@0: TInt totalModes; sl@0: ret = HAL::Get(HAL::EDisplayNumModes, totalModes); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt displayMode; sl@0: ret = HAL::Get(HAL::EDisplayMode, displayMode); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: sl@0: /* SCREEN INFORMATION*/ sl@0: sl@0: test.Next(_L("Get Screen Info for current mode using driver")); sl@0: sl@0: sl@0: test.Next(_L("Get screen info using usersvr")); sl@0: TScreenInfoV01 screenInfo; sl@0: TPckg sI(screenInfo); sl@0: UserSvr::ScreenInfo(sI); sl@0: test (screenInfo.iScreenAddressValid != screenInfo.iWindowHandleValid); sl@0: if (screenInfo.iScreenAddressValid) sl@0: test (screenInfo.iScreenAddress != 0); sl@0: if (screenInfo.iWindowHandleValid) sl@0: test (screenInfo.iWindowHandle != 0); sl@0: sl@0: sl@0: TInt val; sl@0: test.Next(_L("Get DisplayXPixels using HAL")); sl@0: ret = HAL::Get(HAL::EDisplayXPixels, val); sl@0: test (KErrNone == ret); sl@0: test (val == screenInfo.iScreenSize.iWidth); sl@0: sl@0: test.Next(_L("Get DisplayYPixels using HAL")); sl@0: ret = HAL::Get(HAL::EDisplayYPixels, val); sl@0: test (KErrNone == ret); sl@0: test (val == screenInfo.iScreenSize.iHeight); sl@0: sl@0: TInt xtwips; sl@0: test.Next(_L("Get DisplayXTwips using HAL")); sl@0: ret = HAL::Get(HAL::EDisplayXTwips, xtwips); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt ytwips; sl@0: test.Next(_L("Get DisplayYTwips using HAL")); sl@0: ret = HAL::Get(HAL::EDisplayYTwips, ytwips); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt vaddr; sl@0: test.Next(_L("Get video address using HAL")); sl@0: ret = HAL::Get(HAL::EDisplayMemoryAddress, vaddr); sl@0: test (KErrNone == ret); sl@0: #ifndef __WINS__ sl@0: test (vaddr == (TInt)screenInfo.iScreenAddress); sl@0: #else sl@0: test (vaddr == (TInt)screenInfo.iWindowHandle); sl@0: #endif sl@0: sl@0: test.Next(_L("Use machine info")); sl@0: sl@0: TMachineInfoV1 mi; sl@0: TMachineInfoV1Buf mib; sl@0: sl@0: UserHal::MachineInfo(mib); sl@0: mi = mib(); sl@0: sl@0: test.Printf(_L("si.iWidth = %d, si.iHeight = %d, mi.iWidth = %d, mi.iHeight = %d\n"),screenInfo.iScreenSize.iWidth, screenInfo.iScreenSize.iHeight, mi.iDisplaySizeInPixels.iWidth, mi.iDisplaySizeInPixels.iHeight); sl@0: test.Printf(_L("xtwips = %d, ytwips = %d, iWidth = %d, iHeight = %d\n"),xtwips, ytwips, mi.iPhysicalScreenSize.iWidth, mi.iPhysicalScreenSize.iHeight); sl@0: sl@0: test (screenInfo.iScreenSize.iWidth == mi.iDisplaySizeInPixels.iWidth); sl@0: test (screenInfo.iScreenSize.iHeight == mi.iDisplaySizeInPixels.iHeight); sl@0: test (xtwips == mi.iPhysicalScreenSize.iWidth); sl@0: test (ytwips == mi.iPhysicalScreenSize.iHeight); sl@0: sl@0: sl@0: /* BITS PER PIXEL */ sl@0: sl@0: test.Next(_L("Get Bits per pixel for current display mode using HAL")); sl@0: sl@0: HALArg = displayMode; sl@0: ret = HAL::Get(HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: test.Next(_L("Get Bits per pixel with illegal mode using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrArgument == ret); sl@0: sl@0: HALArg = totalModes; sl@0: ret = HAL::Get(HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrArgument == ret); sl@0: sl@0: sl@0: /*DISPLAY MODES*/ sl@0: test.Next(_L("loop through the display modes getting the info")); sl@0: sl@0: TInt count; sl@0: sl@0: TInt fourBppMode = -1; sl@0: sl@0: for (count = 0; count < totalModes; count++) sl@0: { sl@0: sl@0: test.Next(_L("Offset To first pixel")); sl@0: HALArg = count; sl@0: ret = HAL::Get(HAL::EDisplayOffsetToFirstPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg >= 0); sl@0: sl@0: test.Next(_L("Test Offset between lines is > 0")); sl@0: HALArg = count; sl@0: ret = HAL::Get(HAL::EDisplayOffsetBetweenLines, HALArg); sl@0: test (KErrNone == ret); sl@0: #ifndef __WINS__ sl@0: test (HALArg > 0); sl@0: #else sl@0: test.Printf(_L("WINS can return 0 here as it doesn't handle the buffer itself, target hardware must return > 0")); sl@0: test (HALArg >= 0); sl@0: #endif sl@0: test.Next(_L("is display mono")); sl@0: HALArg = count; sl@0: ret = HAL::Get(HAL::EDisplayIsMono, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("is display palettized")); sl@0: HALArg = count; sl@0: ret = HAL::Get(HAL::EDisplayIsPalettized, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("bits per pixel")); sl@0: HALArg = count; sl@0: ret = HAL::Get(HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: if (HALArg == 4) sl@0: fourBppMode = count; sl@0: sl@0: } sl@0: sl@0: sl@0: test.Next(_L("switch display modes must be supported if > 1 display mode")); sl@0: sl@0: TInt oldMode = displayMode; sl@0: #ifndef __X86__ sl@0: if (totalModes > 1) sl@0: { sl@0: HALArg = displayMode; sl@0: ret = HAL::Set(HAL::EDisplayMode, HALArg); sl@0: test.Printf(_L("ret is %d dmode is %d\n"),ret, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: ret = HAL::Get(HAL::EDisplayMode, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg == displayMode); sl@0: sl@0: } sl@0: #endif sl@0: for (count = 0; count < totalModes; count++) sl@0: { sl@0: sl@0: #ifndef __X86__ sl@0: if (totalModes > 1) //we must support mode change sl@0: { sl@0: test.Printf(_L("Setting Display Mode to %d\n"), count); sl@0: sl@0: ret = HAL::Set(HAL::EDisplayMode, count); sl@0: test (KErrNone == ret); sl@0: sl@0: ret = HAL::Get(HAL::EDisplayMode, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg == count); sl@0: } sl@0: #endif sl@0: sl@0: /* PALETTE */ sl@0: sl@0: //get the palette entries sl@0: //set a few to something else sl@0: //set them again sl@0: sl@0: TInt palettized = count; sl@0: test.Next(_L("Get if we are using a palette using HAL")); sl@0: ret = HAL::Get(HAL::EDisplayIsPalettized, palettized); sl@0: test (KErrNone == ret); sl@0: sl@0: if (palettized) sl@0: { sl@0: HALArg = count; sl@0: ret = HAL::Get(HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: test.Printf(_L("Bitsperpixel is %d\n"),HALArg); sl@0: test (HALArg <= 8); sl@0: sl@0: TInt max = (1 << HALArg) - 1; sl@0: test.Printf(_L("number of palette entries is %d\n"),max); sl@0: sl@0: test.Next(_L("Get legal Palette entries using HAL and driver in loop")); sl@0: for (TInt x = 0; x <= max; x++) sl@0: { sl@0: HALArg = x; sl@0: ret = HAL::Get(HAL::EDisplayPaletteEntry, HALArg); sl@0: test.Printf(_L("getting entry %d, ret is %d\n"),x, ret); sl@0: test (KErrNone == ret); sl@0: sl@0: } sl@0: sl@0: sl@0: //try a few sets sl@0: TInt saved; sl@0: sl@0: test.Next(_L("Set Palette entry 0 to red using HAL")); sl@0: sl@0: saved = 0; sl@0: ret = HAL::Get(HAL::EDisplayPaletteEntry, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: HALArg = 0xF80000; sl@0: ret = HAL::Set(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: HALArg = 0; sl@0: ret = HAL::Get(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret); sl@0: test ((HALArg & 0xF8FFFF)==0xF80000); sl@0: sl@0: ret = HAL::Set(HAL::EDisplayPaletteEntry, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: HALArg = 1; sl@0: ret = HAL::Get(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: HALArg = (7 << 24) || 0xFFFF00; sl@0: ret = HAL::Set(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: } sl@0: sl@0: sl@0: sl@0: HALArg = count; sl@0: test (KErrNone == HAL::Get(HAL::EDisplayBitsPerPixel, HALArg)); sl@0: sl@0: if (4 == HALArg) sl@0: { sl@0: test.Next(_L("Get Illegal palette entry using HAL")); sl@0: HALArg = 18; sl@0: ret = HAL::Get(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrArgument == ret); sl@0: sl@0: sl@0: test.Next(_L("Set Illegal palette entry using HAL")); sl@0: HALArg = 0x12 << 24 ; sl@0: ret = HAL::Set(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrArgument == ret); sl@0: } sl@0: sl@0: } sl@0: else sl@0: { sl@0: //not palettized sl@0: test.Next(_L("Get palette entry using HAL - should fail")); sl@0: HALArg = 0; sl@0: ret = HAL::Get(HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNotSupported == ret); sl@0: } sl@0: sl@0: sl@0: } sl@0: sl@0: #ifndef __X86__ sl@0: if (totalModes > 1) //we must support mode change sl@0: { sl@0: ret = HAL::Set(HAL::EDisplayMode, oldMode); sl@0: test (KErrNone == ret); sl@0: } sl@0: #endif sl@0: sl@0: sl@0: sl@0: sl@0: /* DISPLAY ON/OFF */ sl@0: sl@0: TInt displayState; sl@0: sl@0: test.Next(_L("Check Display is on using HAL")); sl@0: displayState = EFalse; sl@0: ret = HAL::Get(HAL::EDisplayState, displayState); sl@0: test (KErrNone == ret); sl@0: test (displayState!=EFalse); sl@0: sl@0: test.Next(_L("Turn Display Off using HAL")); sl@0: ret = HAL::Set(HAL::EDisplayState, 0); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: // test.Next(_L("Check Display is off using HAL")); sl@0: displayState = ETrue; sl@0: ret = HAL::Get(HAL::EDisplayState, displayState); sl@0: test (KErrNone == ret); sl@0: test (displayState==EFalse); sl@0: sl@0: // test.Next(_L("Display On using HAL")); sl@0: // ret = HAL::Set(HAL::EDisplayState, 1); sl@0: // test (KErrNotSupported == ret); sl@0: sl@0: sl@0: //need some way of turning on the display! sl@0: RTimer timer; sl@0: test(timer.CreateLocal()==KErrNone); sl@0: TTime now; sl@0: now.HomeTime(); sl@0: TTime wakeup; sl@0: wakeup=now+TTimeIntervalSeconds(10); sl@0: TRequestStatus done; sl@0: timer.At(done,wakeup); sl@0: sl@0: UserHal::SwitchOff(); sl@0: User::WaitForRequest(done); sl@0: sl@0: TRawEvent switchon; sl@0: switchon.Set(TRawEvent::ESwitchOn); sl@0: UserSvr::AddEvent(switchon); sl@0: } sl@0: else sl@0: test.Printf(_L("Display On/Off not supported by HAL on this playform\n")); sl@0: sl@0: sl@0: test.Next(_L("Check Display On using HAL")); sl@0: displayState = EFalse; sl@0: ret = HAL::Get(HAL::EDisplayState, displayState); sl@0: test (KErrNone == ret); sl@0: test (displayState!=EFalse); sl@0: sl@0: sl@0: // !!! Disable platform security tests until we get the new APIs sl@0: /* sl@0: test.Next(_L("Check if secure screen supported")); sl@0: TInt secure = EFalse; sl@0: ret = HAL::Get(HAL::ESecureDisplay, secure); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: if (KErrNone == ret) sl@0: { sl@0: //get the secure address sl@0: TInt addr = 0; sl@0: ret = HAL::Get(HAL::ESecureDisplayMemoryAddress, addr); sl@0: test (KErrNone == ret); sl@0: sl@0: //switch to secure screen sl@0: ret = HAL::Set(HAL::ESecureDisplay, ETrue); sl@0: test (KErrNone == ret); sl@0: User::After(2000000); sl@0: sl@0: //switch to insecure screen sl@0: ret = HAL::Set(HAL::ESecureDisplay, EFalse); sl@0: test (KErrNone == ret); sl@0: User::After(2000000); sl@0: sl@0: //switch to secure screen sl@0: ret = HAL::Set(HAL::ESecureDisplay, ETrue); sl@0: test (KErrNone == ret); sl@0: User::After(2000000); sl@0: sl@0: //switch to insecure screen sl@0: ret = HAL::Set(HAL::ESecureDisplay, EFalse); sl@0: test (KErrNone == ret); sl@0: } sl@0: else sl@0: test.Printf(_L("secure screen not supported on this platform\n")); sl@0: */ sl@0: sl@0: } sl@0: sl@0: sl@0: //the function above tests HAL APIs where no screen number is specified sl@0: //and implicitly screen 0 is assumed. This function runs only for additional sl@0: //screens if any (screen1, screen2 etc.) sl@0: //this uses the HAL APIs that take a screen number sl@0: LOCAL_C void RunTestsAdditionalScreens(TInt screen) sl@0: { sl@0: TInt ret = KErrNone; sl@0: TInt HALArg; sl@0: TInt saved = 0; sl@0: sl@0: /* BRIGHTNESS */ sl@0: sl@0: TBool HALMaxBrightnessSupported = EFalse; sl@0: TBool HALGetBrightnessSupported = EFalse; sl@0: TBool HALSetBrightnessSupported = EFalse; sl@0: sl@0: sl@0: test.Next(_L("Max Brightness using HAL")); sl@0: TInt maxBrightness=-1; sl@0: ret = HAL::Get(screen, HAL::EDisplayBrightnessMax, maxBrightness); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: HALMaxBrightnessSupported = ETrue; sl@0: test.Printf(_L("Maximum brightness = %d\n"), maxBrightness); sl@0: } sl@0: else sl@0: test.Printf(_L("Maximum brightness is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: test.Next(_L("Get Brightness using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EDisplayBrightness, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: test.Printf(_L("Brightness = %d\n"), HALArg); sl@0: HALGetBrightnessSupported = ETrue; sl@0: saved = HALArg; sl@0: } sl@0: else sl@0: { sl@0: test.Printf(_L("Get Brightness is NOT SUPPORTED by HAL\n")); sl@0: } sl@0: sl@0: test.Next(_L("Test brightness is <= maxBrightness")); sl@0: test(HALArg <= maxBrightness); sl@0: sl@0: test.Next(_L("Set Brightness using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayBrightness, 0); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret) || (KErrArgument == ret)); sl@0: if ((KErrNone == ret) || (KErrArgument == ret)) sl@0: HALSetBrightnessSupported = ETrue; sl@0: else sl@0: test.Printf(_L("Set brightness is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: sl@0: //if any of the brightness funcs are supported, test they all are sl@0: //we've already tested Ldd/HAL are giving same support sl@0: if (HALSetBrightnessSupported && HALGetBrightnessSupported && HALMaxBrightnessSupported) sl@0: { sl@0: //all supported sl@0: //do more comprehensive set/gets sl@0: test.Next(_L("Set Brightness using HAL to saved value")); sl@0: ret = HAL::Set(screen, HAL::EDisplayBrightness, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Brightness using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EDisplayBrightness, HALArg); sl@0: test (KErrNone == ret); sl@0: test (saved == HALArg); sl@0: sl@0: test.Next(_L("Set Brightness to the max using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayBrightness, maxBrightness); sl@0: test.Printf(_L("ret = %d maxbr = %d"),ret, maxBrightness); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Brightness using HAL")); sl@0: HALArg = 0; sl@0: ret = HAL::Get(screen, HAL::EDisplayBrightness, HALArg); sl@0: test (KErrNone == ret); sl@0: test (maxBrightness == HALArg); sl@0: sl@0: test.Next(_L("Set Brightness using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayBrightness, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: //test some out of range values sl@0: ret = HAL::Get(screen, HAL::EDisplayBrightness, HALArg); sl@0: test (KErrNone == ret); sl@0: saved = HALArg; sl@0: sl@0: test.Next(_L("Set Brightness too large using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayBrightness, maxBrightness+1); sl@0: test (KErrArgument == ret); sl@0: sl@0: test.Next(_L("Set Brightness too small using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayBrightness, -1); sl@0: test (KErrArgument == ret); sl@0: sl@0: } sl@0: else //check none are supported sl@0: test(!(HALSetBrightnessSupported || HALGetBrightnessSupported || HALMaxBrightnessSupported)); sl@0: sl@0: sl@0: /* CONTRAST */ sl@0: sl@0: TBool HALMaxContrastSupported = EFalse; sl@0: TBool HALGetContrastSupported = EFalse; sl@0: TBool HALSetContrastSupported = EFalse; sl@0: sl@0: sl@0: test.Next(_L("Max Contrast using HAL")); sl@0: TInt maxContrast=-1; sl@0: ret = HAL::Get(screen, HAL::EDisplayContrastMax, maxContrast); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: HALMaxContrastSupported = ETrue; sl@0: test.Printf(_L("Maximum Contrast = %d\n"), maxContrast); sl@0: } sl@0: else sl@0: test.Printf(_L("Maximum Contrast is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: test.Next(_L("Get Contrast using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EDisplayContrast, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: test.Printf(_L("Contrast = %d\n"), HALArg); sl@0: HALGetContrastSupported = ETrue; sl@0: saved = HALArg; sl@0: } sl@0: else sl@0: { sl@0: test.Printf(_L("Get Contrast is NOT SUPPORTED by HAL\n")); sl@0: } sl@0: sl@0: test.Next(_L("Test contrast is <= maxcontrast")); sl@0: test(HALArg <= maxContrast); sl@0: sl@0: test.Next(_L("Set Contrast using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayContrast, 0); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret) || (KErrArgument == ret)); sl@0: if ((KErrNone == ret) || (KErrArgument == ret)) sl@0: HALSetContrastSupported = ETrue; sl@0: else sl@0: test.Printf(_L("Set Contrast is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: sl@0: //if any of the Contrast funcs are supported, test they all are sl@0: //we've already tested Ldd/HAL are giving same support sl@0: if (HALSetContrastSupported && HALGetContrastSupported && HALMaxContrastSupported) sl@0: { sl@0: //all supported sl@0: //do more comprehensive set/gets sl@0: test.Next(_L("Set Contrast using HAL to saved value")); sl@0: ret = HAL::Set(screen, HAL::EDisplayContrast, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Contrast using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EDisplayContrast, HALArg); sl@0: test (KErrNone == ret); sl@0: test (saved == HALArg); sl@0: sl@0: test.Next(_L("Set Contrast to the max using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayContrast, maxContrast); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get Contrast using HAL")); sl@0: HALArg = 0; sl@0: ret = HAL::Get(screen, HAL::EDisplayContrast, HALArg); sl@0: test (KErrNone == ret); sl@0: test (maxContrast == HALArg); sl@0: sl@0: test.Next(_L("Set Contrast using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayContrast, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: //test some out of range values sl@0: ret = HAL::Get(screen, HAL::EDisplayContrast, HALArg); sl@0: test (KErrNone == ret); sl@0: saved = HALArg; sl@0: sl@0: test.Next(_L("Set Contrast too large using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayContrast, maxContrast+1); sl@0: test (KErrArgument == ret); sl@0: sl@0: test.Next(_L("Set Contrast too small using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayContrast, -1); sl@0: test (KErrArgument == ret); sl@0: sl@0: } sl@0: else //check none are supported sl@0: test(!(HALSetContrastSupported || HALGetContrastSupported || HALMaxContrastSupported)); sl@0: sl@0: sl@0: sl@0: /* BACKLIGHT */ sl@0: sl@0: TBool HALGetBacklightSupported = EFalse; sl@0: TBool HALSetBacklightSupported = EFalse; sl@0: TBool lightSupported = EFalse; sl@0: sl@0: test.Next(_L("check if backlight supported using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EBacklight, lightSupported); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: test.Printf(_L("Backlight supported = %d"), lightSupported); sl@0: sl@0: sl@0: sl@0: test.Next(_L("Get Backlight state using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EBacklightState, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: HALGetBacklightSupported = ETrue; sl@0: test.Printf(_L("Backlight is = %d from HAL\n"), HALArg); sl@0: } sl@0: else sl@0: test.Printf(_L("Get Light is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: test.Next(_L("Set Backlight state using HAL")); sl@0: HALArg = 0; sl@0: ret = HAL::Set(screen, HAL::EBacklightState, HALArg); sl@0: test ((KErrNone == ret) || (KErrNotSupported == ret)); sl@0: if (KErrNone == ret) sl@0: { sl@0: HALSetBacklightSupported = ETrue; sl@0: test.Printf(_L("Backlight is set to = %d from HAL\n"), HALArg); sl@0: } sl@0: else sl@0: test.Printf(_L("Set Light is NOT SUPPORTED by HAL\n")); sl@0: sl@0: sl@0: sl@0: sl@0: if (HALGetBacklightSupported && HALSetBacklightSupported) sl@0: { sl@0: sl@0: test.Next(_L("Get Backlight state using HAL (should be off)")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EBacklightState, HALArg); sl@0: test (KErrNone == ret); sl@0: test (0 == HALArg); sl@0: sl@0: test.Next(_L("Set Backlight state to on using HAL")); sl@0: ret = HAL::Set(screen, HAL::EBacklightState, 1); sl@0: test (KErrNone == ret); sl@0: sl@0: } sl@0: else sl@0: test (!HALGetBacklightSupported == !HALSetBacklightSupported); sl@0: sl@0: sl@0: /* maximum display colors*/ sl@0: test.Next(_L("Display Colors")); sl@0: ret = HAL::Get(screen, HAL::EDisplayColors, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: /* DISPLAY MODE */ sl@0: test.Next(_L("Display Modes")); sl@0: TInt totalModes; sl@0: ret = HAL::Get(screen, HAL::EDisplayNumModes, totalModes); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt displayMode; sl@0: ret = HAL::Get(screen, HAL::EDisplayMode, displayMode); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt val; sl@0: test.Next(_L("Get DisplayXPixels using HAL")); sl@0: ret = HAL::Get(screen, HAL::EDisplayXPixels, val); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Get DisplayYPixels using HAL")); sl@0: ret = HAL::Get(screen, HAL::EDisplayYPixels, val); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt xtwips; sl@0: test.Next(_L("Get DisplayXTwips using HAL")); sl@0: ret = HAL::Get(screen, HAL::EDisplayXTwips, xtwips); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt ytwips; sl@0: test.Next(_L("Get DisplayYTwips using HAL")); sl@0: ret = HAL::Get(screen, HAL::EDisplayYTwips, ytwips); sl@0: test (KErrNone == ret); sl@0: sl@0: TInt vaddr; sl@0: test.Next(_L("Get video address using HAL")); sl@0: ret = HAL::Get(screen, HAL::EDisplayMemoryAddress, vaddr); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: /* BITS PER PIXEL */ sl@0: sl@0: test.Next(_L("Get Bits per pixel for current display mode using HAL")); sl@0: sl@0: HALArg = displayMode; sl@0: ret = HAL::Get(screen, HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: test.Next(_L("Get Bits per pixel with illegal mode using HAL")); sl@0: HALArg = -1; sl@0: ret = HAL::Get(screen, HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrArgument == ret); sl@0: sl@0: HALArg = totalModes; sl@0: ret = HAL::Get(screen, HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrArgument == ret); sl@0: sl@0: sl@0: /*DISPLAY MODES*/ sl@0: test.Next(_L("loop through the display modes getting the info")); sl@0: sl@0: TInt count; sl@0: sl@0: TInt fourBppMode = -1; sl@0: sl@0: for (count = 0; count < totalModes; count++) sl@0: { sl@0: sl@0: test.Next(_L("Offset To first pixel")); sl@0: HALArg = count; sl@0: ret = HAL::Get(screen, HAL::EDisplayOffsetToFirstPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg >= 0); sl@0: sl@0: test.Next(_L("Test Offset between lines is > 0")); sl@0: HALArg = count; sl@0: ret = HAL::Get(screen, HAL::EDisplayOffsetBetweenLines, HALArg); sl@0: test (KErrNone == ret); sl@0: #ifndef __WINS__ sl@0: test (HALArg > 0); sl@0: #else sl@0: test.Printf(_L("WINS can return 0 here as it doesn't handle the buffer itself, target hardware must return > 0")); sl@0: test (HALArg >= 0); sl@0: #endif sl@0: test.Next(_L("is display mono")); sl@0: HALArg = count; sl@0: ret = HAL::Get(screen, HAL::EDisplayIsMono, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("is display palettized")); sl@0: HALArg = count; sl@0: ret = HAL::Get(screen, HAL::EDisplayIsPalettized, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("bits per pixel")); sl@0: HALArg = count; sl@0: ret = HAL::Get(screen, HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: if (HALArg == 4) sl@0: fourBppMode = count; sl@0: sl@0: } sl@0: sl@0: sl@0: test.Next(_L("switch display modes must be supported if > 1 display mode")); sl@0: sl@0: TInt oldMode = displayMode; sl@0: #ifndef __X86__ sl@0: if (totalModes > 1) sl@0: { sl@0: HALArg = displayMode; sl@0: ret = HAL::Set(screen, HAL::EDisplayMode, HALArg); sl@0: test.Printf(_L("ret is %d dmode is %d\n"),ret, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: ret = HAL::Get(screen, HAL::EDisplayMode, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg == displayMode); sl@0: sl@0: } sl@0: #endif sl@0: for (count = 0; count < totalModes; count++) sl@0: { sl@0: sl@0: #ifndef __X86__ sl@0: if (totalModes > 1) //we must support mode change sl@0: { sl@0: test.Printf(_L("Setting Display Mode to %d\n"), count); sl@0: sl@0: ret = HAL::Set(screen, HAL::EDisplayMode, count); sl@0: test (KErrNone == ret); sl@0: sl@0: ret = HAL::Get(screen, HAL::EDisplayMode, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg == count); sl@0: } sl@0: #endif sl@0: sl@0: /* PALETTE */ sl@0: sl@0: //get the palette entries sl@0: //set a few to something else sl@0: //set them again sl@0: sl@0: TInt palettized = count; sl@0: test.Next(_L("Get if we are using a palette using HAL")); sl@0: ret = HAL::Get(screen, HAL::EDisplayIsPalettized, palettized); sl@0: test (KErrNone == ret); sl@0: sl@0: if (palettized) sl@0: { sl@0: HALArg = count; sl@0: ret = HAL::Get(screen, HAL::EDisplayBitsPerPixel, HALArg); sl@0: test (KErrNone == ret); sl@0: test.Printf(_L("Bitsperpixel is %d\n"),HALArg); sl@0: test (HALArg <= 8); sl@0: sl@0: TInt max = (1 << HALArg) - 1; sl@0: test.Printf(_L("number of palette entries is %d\n"),max); sl@0: sl@0: test.Next(_L("Get legal Palette entries using HAL and driver in loop")); sl@0: for (TInt x = 0; x <= max; x++) sl@0: { sl@0: HALArg = x; sl@0: ret = HAL::Get(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test.Printf(_L("getting entry %d, ret is %d\n"),x, ret); sl@0: test (KErrNone == ret); sl@0: sl@0: } sl@0: sl@0: sl@0: //try a few sets sl@0: TInt saved; sl@0: sl@0: test.Next(_L("Set Palette entry 0 to red using HAL")); sl@0: sl@0: saved = 0; sl@0: ret = HAL::Get(screen, HAL::EDisplayPaletteEntry, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: HALArg = 0xFF0000; sl@0: ret = HAL::Set(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: HALArg = 0; sl@0: ret = HAL::Get(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret); sl@0: test (HALArg = 0xFF0000); sl@0: sl@0: ret = HAL::Set(screen, HAL::EDisplayPaletteEntry, saved); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: HALArg = 1; sl@0: ret = HAL::Get(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: HALArg = (7 << 24) || 0xFFFF00; sl@0: ret = HAL::Set(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNone == ret); sl@0: sl@0: sl@0: } sl@0: sl@0: sl@0: sl@0: HALArg = count; sl@0: test (KErrNone == HAL::Get(screen, HAL::EDisplayBitsPerPixel, HALArg)); sl@0: sl@0: if (4 == HALArg) sl@0: { sl@0: test.Next(_L("Get Illegal palette entry using HAL")); sl@0: HALArg = 18; sl@0: ret = HAL::Get(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrArgument == ret); sl@0: sl@0: sl@0: test.Next(_L("Set Illegal palette entry using HAL")); sl@0: HALArg = 0x12 << 24 ; sl@0: ret = HAL::Set(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrArgument == ret); sl@0: } sl@0: sl@0: } sl@0: else sl@0: { sl@0: //not palettized sl@0: test.Next(_L("Get palette entry using HAL - should fail")); sl@0: HALArg = 0; sl@0: ret = HAL::Get(screen, HAL::EDisplayPaletteEntry, HALArg); sl@0: test (KErrNotSupported == ret); sl@0: } sl@0: sl@0: sl@0: } sl@0: sl@0: #ifndef __X86__ sl@0: if (totalModes > 1) //we must support mode change sl@0: { sl@0: ret = HAL::Set(screen, HAL::EDisplayMode, oldMode); sl@0: test (KErrNone == ret); sl@0: } sl@0: #endif sl@0: sl@0: sl@0: sl@0: sl@0: /* DISPLAY ON/OFF */ sl@0: sl@0: sl@0: // get current display state sl@0: TInt curDisplayState; sl@0: ret = HAL::Get(screen, HAL::EDisplayState, curDisplayState); sl@0: test (KErrNone == ret); sl@0: sl@0: test.Next(_L("Turn Display on using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayState, 1); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: sl@0: TInt displayState; sl@0: sl@0: test.Next(_L("Check Display is on using HAL")); sl@0: displayState = EFalse; sl@0: ret = HAL::Get(screen, HAL::EDisplayState, displayState); sl@0: test (KErrNone == ret); sl@0: test (displayState!=EFalse); sl@0: sl@0: test.Next(_L("Turn Display Off using HAL")); sl@0: ret = HAL::Set(screen, HAL::EDisplayState, 0); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: sl@0: if (KErrNone == ret) sl@0: { sl@0: test.Next(_L("Check Display is off using HAL")); sl@0: displayState = ETrue; sl@0: ret = HAL::Get(screen, HAL::EDisplayState, displayState); sl@0: test (KErrNone == ret); sl@0: test (displayState==EFalse); sl@0: sl@0: // test.Next(_L("Display On using HAL")); sl@0: // ret = HAL::Set(screen, HAL::EDisplayState, 1); sl@0: // test (KErrNotSupported == ret); sl@0: sl@0: sl@0: //need some way of turning on the display! sl@0: RTimer timer; sl@0: test(timer.CreateLocal()==KErrNone); sl@0: TTime now; sl@0: now.HomeTime(); sl@0: TTime wakeup; sl@0: wakeup=now+TTimeIntervalSeconds(10); sl@0: TRequestStatus done; sl@0: timer.At(done,wakeup); sl@0: sl@0: UserHal::SwitchOff(); sl@0: User::WaitForRequest(done); sl@0: sl@0: TRawEvent switchon; sl@0: switchon.Set(TRawEvent::ESwitchOn); sl@0: UserSvr::AddEvent(switchon); sl@0: } sl@0: else sl@0: test.Printf(_L("Display On/Off not supported by HAL on this playform\n")); sl@0: sl@0: // restore the original display state sl@0: ret = HAL::Set(screen, HAL::EDisplayState, curDisplayState); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: sl@0: sl@0: // !!! Disable platform security tests until we get the new APIs sl@0: /* sl@0: test.Next(_L("Check if secure screen supported")); sl@0: TInt secure = EFalse; sl@0: ret = HAL::Get(screen, HAL::ESecureDisplay, secure); sl@0: test (KErrNone == ret || KErrNotSupported == ret); sl@0: if (KErrNone == ret) sl@0: { sl@0: //get the secure address sl@0: TInt addr = 0; sl@0: ret = HAL::Get(screen, HAL::ESecureDisplayMemoryAddress, addr); sl@0: test (KErrNone == ret); sl@0: sl@0: //switch to secure screen sl@0: ret = HAL::Set(screen, HAL::ESecureDisplay, ETrue); sl@0: test (KErrNone == ret); sl@0: User::After(2000000); sl@0: sl@0: //switch to insecure screen sl@0: ret = HAL::Set(screen, HAL::ESecureDisplay, EFalse); sl@0: test (KErrNone == ret); sl@0: User::After(2000000); sl@0: sl@0: //switch to secure screen sl@0: ret = HAL::Set(screen, HAL::ESecureDisplay, ETrue); sl@0: test (KErrNone == ret); sl@0: User::After(2000000); sl@0: sl@0: //switch to insecure screen sl@0: ret = HAL::Set(screen, HAL::ESecureDisplay, EFalse); sl@0: test (KErrNone == ret); sl@0: } sl@0: else sl@0: test.Printf(_L("secure screen not supported on this platform\n")); sl@0: */ sl@0: sl@0: } sl@0: sl@0: sl@0: GLDEF_C TInt E32Main() sl@0: // sl@0: // sl@0: { sl@0: sl@0: test.Title(); sl@0: // sl@0: #if defined(__EPOC32__) && defined(__CPU_X86) sl@0: test.Printf(_L("Doesn't run on X86\n")); sl@0: #else sl@0: sl@0: test.Start(_L("Testing Video extension")); sl@0: sl@0: RunTests(); sl@0: TInt screens=1; // assume that we have at least 1 screen in case the HAL attr isn't supported sl@0: TInt ret=HAL::Get(HAL::EDisplayNumberOfScreens, screens); sl@0: test((ret==KErrNone) || (ret==KErrNotSupported)); sl@0: sl@0: TInt i; sl@0: for(i=1;i KMaxHalEntries (defined in the kernel) sl@0: const TInt KMoreThanKernelAllocates=10; sl@0: for(i=screens;i