sl@0: // Copyright (c) 1998-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: // hal\tsrc\t_newhal.cpp sl@0: // sl@0: // sl@0: sl@0: #define __E32TEST_EXTENSION__ sl@0: sl@0: #include sl@0: #include sl@0: sl@0: RTest test(_L("T_NEWHAL")); sl@0: sl@0: const TText* AttributeNames[]= sl@0: { sl@0: _S("EManufacturer"), sl@0: _S("EManufacturerHardwareRev"), sl@0: _S("EManufacturerSoftwareRev"), sl@0: _S("EManufacturerSoftwareBuild"), sl@0: _S("EModel"), sl@0: _S("EMachineUid"), sl@0: _S("EDeviceFamily"), sl@0: _S("EDeviceFamilyRev"), sl@0: _S("ECPU"), sl@0: _S("ECPUArch"), sl@0: _S("ECPUABI"), sl@0: _S("ECPUSpeed"), sl@0: _S("ESystemStartupReason"), sl@0: _S("ESystemException"), sl@0: _S("ESystemTickPeriod"), sl@0: _S("EMemoryRAM"), sl@0: _S("EMemoryRAMFree"), sl@0: _S("EMemoryROM"), sl@0: _S("EMemoryPageSize"), sl@0: _S("EPowerGood"), sl@0: _S("EPowerBatteryStatus"), sl@0: _S("EPowerBackup"), sl@0: _S("EPowerBackupStatus"), sl@0: _S("EPowerExternal"), sl@0: _S("EKeyboard"), sl@0: _S("EKeyboardDeviceKeys"), sl@0: _S("EKeyboardAppKeys"), sl@0: _S("EKeyboardClick"), sl@0: _S("EKeyboardClickState"), sl@0: _S("EKeyboardClickVolume"), sl@0: _S("EKeyboardClickVolumeMax"), sl@0: _S("EDisplayXPixels"), sl@0: _S("EDisplayYPixels"), sl@0: _S("EDisplayXTwips"), sl@0: _S("EDisplayYTwips"), sl@0: _S("EDisplayColors"), sl@0: _S("EDisplayState"), sl@0: _S("EDisplayContrast"), sl@0: _S("EDisplayContrastMax"), sl@0: _S("EBacklight"), sl@0: _S("EBacklightState"), sl@0: _S("EPen"), sl@0: _S("EPenX"), sl@0: _S("EPenY"), sl@0: _S("EPenDisplayOn"), sl@0: _S("EPenClick"), sl@0: _S("EPenClickState"), sl@0: _S("EPenClickVolume"), sl@0: _S("EPenClickVolumeMax"), sl@0: _S("EMouse"), sl@0: _S("EMouseX"), sl@0: _S("EMouseY"), sl@0: _S("EMouseState"), sl@0: _S("EMouseSpeed"), sl@0: _S("EMouseAcceleration"), sl@0: _S("EMouseButtons"), sl@0: _S("EMouseButtonState"), sl@0: _S("ECaseState"), sl@0: _S("ECaseSwitch"), sl@0: _S("ECaseSwitchDisplayOn"), sl@0: _S("ECaseSwitchDisplayOff"), sl@0: _S("ELEDs"), sl@0: _S("ELEDmask"), sl@0: _S("EIntegratedPhone"), sl@0: _S("EDisplayBrightness"), sl@0: _S("EDisplayBrightnessMax"), sl@0: _S("EKeyboardBacklightState"), sl@0: _S("EAccessoryPower"), sl@0: _S("ELanguageIndex"), sl@0: _S("EKeyboardIndex"), sl@0: _S("EMaxRAMDriveSize"), sl@0: _S("EKeyboardState"), sl@0: _S("ESystemDrive"), sl@0: _S("EPenState"), sl@0: _S("EDisplayIsMono"), sl@0: _S("EDisplayIsPalettized"), sl@0: _S("EDisplayBitsPerPixel"), sl@0: _S("EDisplayNumModes"), sl@0: _S("EDisplayMemoryAddress"), sl@0: _S("EDisplayOffsetToFirstPixel"), sl@0: _S("EDisplayOffsetBetweenLines"), sl@0: _S("EDisplayPaletteEntry"), sl@0: _S("EDisplayIsPixelOrderRGB"), sl@0: _S("EDisplayIsPixelOrderLandscape"), sl@0: _S("EDisplayMode"), sl@0: _S("ESwitches"), sl@0: _S("EDebugPort"), sl@0: _S("ELocaleLoaded"), sl@0: _S("EClipboardDrive"), sl@0: _S("ECustomRestart"), sl@0: _S("ECustomRestartReason"), sl@0: _S("EDisplayNumberOfScreens"), sl@0: _S("ENanoTickPeriod"), sl@0: _S("EFastCounterFrequency"), sl@0: _S("EFastCounterCountsUp"), sl@0: _S("EPointer3D"), sl@0: _S("EPointer3DMaxProximity"), sl@0: _S("EPointer3DThetaSupported"), sl@0: _S("EPointer3DPhiSupported"), sl@0: _S("EPointer3DRotationSupported"), sl@0: _S("EPointer3DPressureSupported"), sl@0: _S("EHardwareFloatingPoint"), sl@0: _S("ETimeNonSecureOffset"), sl@0: _S("EPersistStartupModeKernel"), sl@0: _S("EMaximumCustomRestartReasons"), sl@0: _S("EMaximumRestartStartupModes"), sl@0: _S("ECustomResourceDrive"), sl@0: _S("EPointer3DProximityStep"), sl@0: _S("EPointerMaxPointers"), sl@0: _S("EPointerNumberOfPointers"), sl@0: _S("EPointer3DMaxPressure"), sl@0: _S("EPointer3DPressureStep"), sl@0: _S("EPointer3DEnterHighPressureThreshold"), sl@0: _S("EPointer3DExitHighPressureThreshold"), sl@0: _S("EPointer3DEnterCloseProximityThreshold"), sl@0: _S("EPointer3DExitCloseProximityThreshold"), sl@0: _S("EDisplayMemoryHandle"), sl@0: _S("ESerialNumber"), sl@0: _S("ECpuProfilingDefaultInterruptBase"), sl@0: _S("ENumCpus"), sl@0: sl@0: }; sl@0: sl@0: TInt MatchAbbrev(const TDesC& anInput, const TText** aList, TInt aListLen) sl@0: { sl@0: TInt first_match=KErrNotFound; sl@0: TInt nmatches=0; sl@0: TInt i; sl@0: for (i=0; i=0) sl@0: { sl@0: // substring matches sl@0: if (r==0 && list_entry.Length()==anInput.Length()) sl@0: { sl@0: // exact match sl@0: return i; sl@0: } sl@0: if (first_match<0) sl@0: first_match=i; sl@0: ++nmatches; sl@0: } sl@0: } sl@0: if (nmatches>1) sl@0: return KErrGeneral; // ambiguous sl@0: return first_match; // either KErrNotFound or match index sl@0: } sl@0: sl@0: TInt MatchAttribute(const TDesC& anInput) sl@0: { sl@0: return MatchAbbrev(anInput, AttributeNames, sizeof(AttributeNames)/sizeof(TText*)); sl@0: } sl@0: sl@0: void TestGet() sl@0: { sl@0: TInt i; sl@0: TInt n=0; sl@0: sl@0: for (i=0; i0) sl@0: { sl@0: aLine.SetLength(aLine.Length()-1); sl@0: test.Printf(_L("\x8")); sl@0: } sl@0: break; sl@0: default: sl@0: { sl@0: TChar ch((TUint)k); sl@0: TBuf<1> b; sl@0: b.Append(ch); sl@0: aLine.Append(ch); sl@0: test.Printf(_L("%S"),&b); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: } sl@0: sl@0: void TestSet() sl@0: { sl@0: TBuf<256> line; sl@0: FOREVER sl@0: { sl@0: TInt attrib=KErrNotFound; sl@0: while (attrib<0) sl@0: { sl@0: InputLine(_L("Attribute: "),line); sl@0: if (line.Length()==0) sl@0: return; sl@0: attrib=MatchAttribute(line); sl@0: if (attrib==KErrNotFound) sl@0: test.Printf(_L("Unrecognised attribute\n")); sl@0: else if (attrib==KErrGeneral) sl@0: test.Printf(_L("Ambiguous attribute\n")); sl@0: } sl@0: TPtrC attrib_name(AttributeNames[attrib]); sl@0: test.Printf(_L("Attribute %d (%S) selected\n"),attrib,&attrib_name); sl@0: TInt value=0; sl@0: TInt r=KErrGeneral; sl@0: TBool set=ETrue; sl@0: while(r!=KErrNone) sl@0: { sl@0: InputLine(_L("Value: "),line); sl@0: line.Trim(); sl@0: TLex lex(line); sl@0: if (line.MatchF(_L("r"))>=0) sl@0: { sl@0: set=EFalse; sl@0: r=KErrNone; sl@0: } sl@0: else if (line.MatchF(_L("0x"))>=0) sl@0: { sl@0: lex.Inc(2); sl@0: r=lex.Val((TUint&)value,EHex); sl@0: } sl@0: else sl@0: { sl@0: r=lex.Val(value); sl@0: } sl@0: } sl@0: if (set) sl@0: { sl@0: r=HAL::Set((HAL::TAttribute)attrib,value); sl@0: test.Printf(_L("Set returns %d\n"),r); sl@0: } sl@0: TInt v2; sl@0: r=HAL::Get((HAL::TAttribute)attrib,v2); sl@0: test.Printf(_L("Get returns %d, value %d(%08x)\n"),r,v2,v2); sl@0: } sl@0: } sl@0: sl@0: GLDEF_C TInt E32Main() sl@0: { sl@0: test.Title(); sl@0: __UHEAP_MARK; sl@0: __UHEAP_SETFAIL(RHeap::EDeterministic,1); sl@0: TInt machine_id; sl@0: TInt r=HAL::Get(HAL::EMachineUid,machine_id); sl@0: __UHEAP_RESET; sl@0: test(r==KErrNone); sl@0: test.Printf(_L("Machine ID %08x\n"),machine_id); sl@0: sl@0: test.Start(_L("Check AttributeNames[] is up-to-date")); sl@0: test_Equal(HAL::ENumHalAttributes, sizeof(AttributeNames)/sizeof(TText*)); sl@0: sl@0: test.Next(_L("Test Get")); sl@0: TestGet(); sl@0: sl@0: test.Next(_L("Test GetAll")); sl@0: TestGetAll(); sl@0: sl@0: test.Next(_L("Test Set")); sl@0: TestSet(); sl@0: sl@0: test.End(); sl@0: sl@0: __UHEAP_MARKEND; // problem if HAL uses TLS sl@0: sl@0: return KErrNone; sl@0: } sl@0: