Update contrib.
1 // Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // hal\src\userhal.cpp
18 #include <kernel/hal_int.h>
20 #include <videodriver.h>
24 _LIT(KLitHalUserHal,"HAL-UserHal");
28 EInvalidStartupType=0,
29 EInvalidAttributeDP=1,
30 EInvalidAttributeDNM=2,
31 EInvalidAttributeDM=3,
32 EInvalidAttributeDS=4,
33 EInvalidAttributeCMI=5,
34 EInvalidAttributeSMI=6,
35 EInvalidAttributeDC=7,
36 EInvalidAttributeMB=8,
37 EInvalidAttributeMC=9,
38 EInvalidAttributeSMI2=10,
39 EInvalidAttributeSD=11,
40 EInvalidAttributeSDMA=12,
41 EInvalidAttribKeybd=13,
43 EInvalidAttribMouse=15,
44 EInvalidAttrib3DPointer=16
47 void Panic(THalUserHalPanic aPanic)
49 User::Panic(KLitHalUserHal,aPanic);
53 TInt GetCPUSpeed(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
57 TPckg<TVariantInfoV01> infoPckg(info);
58 TInt r=UserSvr::HalFunction(EHalGroupVariant, EVariantHalVariantInfo, (TAny*)&infoPckg, NULL);
61 *(TInt*)aInOut=info.iProcessorClockInKHz;
66 // ECpuProfilingDefaultInterruptBase
67 TInt GetCPUProfilerInterrupt(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
70 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalProfilingDefaultInterruptBase, aInOut, NULL);
74 // ESystemStartupReason
75 TInt GetSystemStartupReason(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
78 TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalStartupReason, (TAny*)&reason, NULL);
84 case EStartupColdReset:
86 *(TInt*)aInOut=HAL::ESystemStartupReason_Cold;
88 case EStartupPowerFail:
89 case EStartupWarmReset:
90 case EStartupSafeReset:
91 *(TInt*)aInOut=HAL::ESystemStartupReason_Warm;
93 case EStartupKernelFault:
94 *(TInt*)aInOut=HAL::ESystemStartupReason_Fault;
97 Panic(EInvalidStartupType);
105 TInt GetSystemException(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
107 return UserSvr::HalFunction(EHalGroupKernel, EKernelHalExceptionId, aInOut, NULL);
111 TInt GetRAMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
114 TPckg<TMemoryInfoV1> infoPckg(info);
115 TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
118 *(TInt*)aInOut=info.iTotalRamInBytes;
124 TInt GetFreeRAM(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
127 TPckg<TMemoryInfoV1> infoPckg(info);
128 TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
131 *(TInt*)aInOut=info.iFreeRamInBytes;
137 TInt GetROMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
140 TPckg<TMemoryInfoV1> infoPckg(info);
141 TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
144 *(TInt*)aInOut=info.iTotalRomInBytes;
150 TInt GetPowerGoodState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
153 TPckg<TSupplyInfoV1> infoPckg(info);
154 TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
157 TBool state=info.iExternalPowerPresent||(info.iMainBatteryStatus>=ELow);
158 *(TBool*)aInOut=state;
163 // EPowerBatteryStatus
164 TInt GetBatteryStatus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
167 TPckg<TSupplyInfoV1> infoPckg(info);
168 TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
171 *(TInt*)aInOut=(TInt)info.iMainBatteryStatus;
177 TInt GetAccessoryPowerPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
179 return UserSvr::HalFunction(EHalGroupPower, EPowerHalAcessoryPowerPresent, aInOut, NULL);
183 TInt GetBackupPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
185 return UserSvr::HalFunction(EHalGroupPower, EPowerHalBackupPresent, aInOut, NULL);
188 // EPowerBackupStatus
189 TInt GetBackupStatus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
192 TPckg<TSupplyInfoV1> infoPckg(info);
193 TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
196 *(TInt*)aInOut=(TInt)info.iBackupBatteryStatus;
202 TInt GetPowerExternalState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
205 TPckg<TSupplyInfoV1> infoPckg(info);
206 TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
209 *(TInt*)aInOut=(TInt)info.iExternalPowerPresent;
215 TInt ProcessKeyboardState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
218 return UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalSetKeyboardState, aInOut, NULL);
219 return UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalKeyboardState, aInOut, NULL);
222 // EKeyboard, EKeyboardDeviceKeys and EKeyboardAppKeys
223 TInt ProcessKeyboardInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
225 TKeyboardInfoV01 info;
226 TPckg<TKeyboardInfoV01> infoPckg(info);
227 TInt r=UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalKeyboardInfo, (TAny*)&infoPckg, NULL);
233 *(TInt*)aInOut=(TInt)info.iKeyboardType;
235 case HAL::EKeyboardDeviceKeys:
236 *(TInt*)aInOut = info.iDeviceKeys;
238 case HAL::EKeyboardAppKeys:
239 *(TInt*)aInOut = info.iAppsKeys;
242 __ASSERT_DEBUG(EFalse, Panic(EInvalidAttribKeybd));
250 TInt GetKeyboardClickPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
253 TInt r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickEnabled, (TAny*)state, NULL);
254 *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a clicking device we should be able to get its state
258 // EKeyboardClickVolumeMax
259 TInt GetKeyboardClickVolumeMax(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
261 return UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickVolumeMax, aInOut, NULL);
264 // EKeyboardClickState
265 TInt ProcessKeyboardClickState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
268 return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetKeyClickEnabled, aInOut, NULL);
269 return UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickEnabled, aInOut, NULL);
272 // EKeyboardClickVolume
273 TInt ProcessKeyboardClickVolume(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
278 TInt vol=(TInt)aInOut;
280 r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickVolumeMax, (TAny*)volMax, NULL);
283 if (vol<0 || vol>volMax)
285 return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetKeyClickLoud, (TAny*)vol, NULL);
288 r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickLoud, (TAny*)&state, NULL);
291 *(TInt*)aInOut=state?1:0;
297 TInt ProcessDisplayContrast(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
302 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetDisplayContrast, (TAny*)x, NULL, aDeviceNumber);
304 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalDisplayContrast, aInOut, NULL, aDeviceNumber);
307 // EDisplayBrightness
308 TInt ProcessDisplayBrightness(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
313 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetDisplayBrightness, (TAny*)x, NULL, aDeviceNumber);
315 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalDisplayBrightness, aInOut, NULL, aDeviceNumber);
319 // EDisplayPaletteEntry
320 TInt ProcessDisplayPaletteEntry(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
323 __ASSERT_DEBUG(HAL::EDisplayPaletteEntry == aAttrib, Panic(EInvalidAttributeDP));
327 TInt entry = ((TInt)aInOut >> 24) & 0xFF;
328 TInt color = ((TInt)aInOut) & 0xFFFFFF;
329 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetPaletteEntry, (TAny*)entry, (TAny*)color, aDeviceNumber);
331 TInt e = (*(TInt*)aInOut) & 0xFF;
332 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalPaletteEntry, &e, aInOut, aDeviceNumber);
336 TInt ProcessDisplayNumModes(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
338 __ASSERT_DEBUG(HAL::EDisplayNumModes == aAttrib, Panic(EInvalidAttributeDNM));
339 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalModeCount, aInOut, NULL, aDeviceNumber);
343 TInt ProcessDisplayMode(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
345 __ASSERT_DEBUG(HAL::EDisplayMode == aAttrib, Panic(EInvalidAttributeDM));
346 return UserSvr::HalFunction(EHalGroupDisplay, aSet?EDisplayHalSetMode:EDisplayHalMode, aInOut, NULL, aDeviceNumber);
350 TInt ProcessDisplayState(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
352 __ASSERT_DEBUG(HAL::EDisplayState == aAttrib, Panic(EInvalidAttributeDS));
356 TBool on = (TBool)aInOut;
357 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetState, (TAny*)on, NULL, aDeviceNumber);
359 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalState, aInOut, NULL, aDeviceNumber);
364 TInt ProcessDisplayColors(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
366 __ASSERT_DEBUG(HAL::EDisplayColors == aAttrib, Panic(EInvalidAttributeDC));
367 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalColors, aInOut, NULL, aDeviceNumber);
370 // EDisplayBrightnessMax
371 TInt ProcessDisplayMaxBrightness(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
373 __ASSERT_DEBUG(HAL::EDisplayBrightnessMax == aAttrib, Panic(EInvalidAttributeMB));
374 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalMaxDisplayBrightness, aInOut, NULL, aDeviceNumber);
377 // EDisplayContrastMax
378 TInt ProcessDisplayMaxContrast(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
380 __ASSERT_DEBUG(HAL::EDisplayContrastMax == aAttrib, Panic(EInvalidAttributeMC));
381 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalMaxDisplayContrast, aInOut, NULL, aDeviceNumber);
385 TInt ProcessSecureDisplayCurrentModeInfo(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
387 //only info obtainable about secure display is the address
388 __ASSERT_DEBUG(HAL::ESecureDisplayMemoryAddress == aAttrib, Panic(EInvalidAttributeSDMA));
391 TPckg<TVideoInfoV01> infoPckg(info);
392 TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalCurrentModeInfo, (TAny*)&infoPckg, (TAny*)ETrue, aDeviceNumber);
394 *(TInt*)aInOut = info.iVideoAddress;
400 TInt ProcessDisplayCurrentModeInfo(TInt aDeviceNumber, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
403 TPckg<TVideoInfoV01> infoPckg(info);
404 TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalCurrentModeInfo, (TAny*)&infoPckg, (TAny*)EFalse, aDeviceNumber);
409 case HAL::EDisplayXPixels:
410 *(TInt*)aInOut = info.iSizeInPixels.iWidth;
413 case HAL::EDisplayYPixels:
414 *(TInt*)aInOut = info.iSizeInPixels.iHeight;
417 case HAL::EDisplayXTwips:
418 *(TInt*)aInOut = info.iSizeInTwips.iWidth;
421 case HAL::EDisplayYTwips:
422 *(TInt*)aInOut = info.iSizeInTwips.iHeight;
425 case HAL::EDisplayMemoryAddress:
426 if (info.iVideoAddress == 0) //if this is true, the actual address is returned by EDisplayHalGetDisplayMemoryAddress
428 r = UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalGetDisplayMemoryAddress, aInOut, (TAny*)EFalse, aDeviceNumber);
432 *(TInt*)aInOut = info.iVideoAddress;
436 case HAL::EDisplayIsPixelOrderRGB:
437 *(TInt*)aInOut = info.iIsPixelOrderRGB;
440 case HAL::EDisplayIsPixelOrderLandscape:
441 *(TInt*)aInOut = info.iIsPixelOrderLandscape;
445 __ASSERT_DEBUG(EFalse, Panic(EInvalidAttributeCMI));
454 TInt ProcessDisplaySpecifiedModeInfo(TInt aDeviceNumber, TInt aAttrib, TBool __DEBUG_ONLY(aSet), TAny* aInOut)
457 __ASSERT_DEBUG(!aSet, Panic(EInvalidAttributeSMI2));
461 TPckg<TVideoInfoV01> infoPckg(info);
462 TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSpecifiedModeInfo, aInOut, (TAny*)&infoPckg, aDeviceNumber);
467 case HAL::EDisplayIsMono:
468 *(TInt*)aInOut = info.iIsMono;
471 case HAL::EDisplayIsPalettized:
472 *(TInt*)aInOut = info.iIsPalettized;
475 case HAL::EDisplayBitsPerPixel:
476 *(TInt*)aInOut = info.iBitsPerPixel;
479 case HAL::EDisplayOffsetToFirstPixel:
480 *(TInt*)aInOut = info.iOffsetToFirstPixel;
483 case HAL::EDisplayOffsetBetweenLines:
484 *(TInt*)aInOut = info.iOffsetBetweenLines;
488 __ASSERT_DEBUG(EFalse, Panic(EInvalidAttributeSMI));
497 TInt ProcessSecureDisplay(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
499 __ASSERT_DEBUG(HAL::ESecureDisplay == aAttrib, Panic(EInvalidAttributeSD));
502 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetSecure, aInOut, NULL, aDeviceNumber);
503 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSecure, aInOut, NULL, aDeviceNumber);
508 TInt GetBacklightPresent(TInt aDeviceNumber, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
511 TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalBacklightOn, (TAny*)&state, NULL, aDeviceNumber);
512 *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a backlight we should be able to get its state
517 TInt ProcessBacklightState(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
520 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetBacklightOn, aInOut, NULL, aDeviceNumber);
521 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalBacklightOn, aInOut, NULL, aDeviceNumber);
525 TInt GetPenPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
527 TDigitiserInfoV01Buf buf;
528 TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYInfo, (TAny*)&buf, NULL);
529 *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a pen device we should be able to get info out of it
534 TInt ProcessPenInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
536 TDigitiserInfoV01 info;
537 TPckg<TDigitiserInfoV01> infoPckg(info);
538 TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYInfo, (TAny*)&infoPckg, NULL);
544 *(TInt*)aInOut=(TInt)info.iDigitiserSize.iWidth;
547 *(TInt*)aInOut = info.iDigitiserSize.iHeight;
550 __ASSERT_DEBUG(EFalse, Panic(EInvalidAttribPen));
558 TInt ProcessPenState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
561 return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetXYState, aInOut, NULL);
562 return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYState, aInOut, NULL);
566 TInt ProcessPenDisplayOnState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
569 return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetPointerSwitchesOn, aInOut, NULL);
570 return UserSvr::HalFunction(EHalGroupPower, EPowerHalPointerSwitchesOn, aInOut, NULL);
574 TInt GetPenClickPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
577 TInt r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickEnabled, (TAny*)state, NULL);
578 *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a clicking device we should be able to get its state
582 // EPenClickVolumeMax
583 TInt GetPenClickVolumeMax(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
585 return UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickVolumeMax, aInOut, NULL);
589 TInt ProcessPenClickState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
592 return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetPointerClickEnabled, aInOut, NULL);
593 return UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickEnabled, aInOut, NULL);
597 TInt ProcessPenClickVolume(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
602 TInt vol=(TInt)aInOut;
604 r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickVolumeMax, (TAny*)volMax, NULL);
607 if (vol<0 || vol>volMax)
609 return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetPointerClickLoud, (TAny*)vol, NULL);
612 r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickLoud, (TAny*)&state, NULL);
615 *(TInt*)aInOut=state?1:0;
620 // ECaseSwitchDisplayOn
621 TInt ProcessCaseSwitchDisplayOnState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
624 return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetCaseOpenSwitchesOn, aInOut, NULL);
625 return UserSvr::HalFunction(EHalGroupPower, EPowerHalCaseOpenSwitchesOn, aInOut, NULL);
628 // ECaseSwitchDisplayOff
629 TInt ProcessCaseSwitchDisplayOffState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
632 return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetCaseCloseSwitchesOff, aInOut, NULL);
633 return UserSvr::HalFunction(EHalGroupPower, EPowerHalCaseCloseSwitchesOff, aInOut, NULL);
637 TInt GetLedCaps(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
639 TVariantInfoV01 info;
640 TPckg<TVariantInfoV01> infoPckg(info);
641 TInt r=UserSvr::HalFunction(EHalGroupVariant, EVariantHalVariantInfo, (TAny*)&infoPckg, NULL);
644 *(TInt*)aInOut=(info.iLedCapabilities)>>16; // upper half for number of Leds, lower half for colour capabilities
650 TInt ProcessLEDMask(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
654 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalLedMaskSet, aInOut, NULL);
656 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalLedMaskGet, aInOut, NULL);
660 TInt GetSwitches(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
662 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalSwitches, aInOut, NULL);
666 TInt GetMousePresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
668 TMouseInfoV01Buf buf;
669 TInt r=UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseInfo, (TAny*)&buf, NULL);
670 *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a mouse device we should be able to get info out of it
674 // EMouseX, EMouseY and EMouseButtons
675 TInt ProcessMouseInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
678 TPckg<TMouseInfoV01> infoPckg(info);
679 TInt r=UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseInfo, (TAny*)&infoPckg, NULL);
685 *(TInt*)aInOut=(TInt)info.iMouseAreaSize.iWidth;
688 *(TInt*)aInOut = info.iMouseAreaSize.iHeight;
690 case HAL::EMouseButtons:
691 *(TInt*)aInOut=(TInt)info.iMouseButtons;
694 __ASSERT_DEBUG(EFalse, Panic(EInvalidAttribMouse));
702 TInt ProcessMouseState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
705 return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseState, aInOut, NULL);
706 return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseState, aInOut, NULL);
710 TInt ProcessMouseSpeed(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
714 TInt speed=(TInt)aInOut;
715 if (speed<0 || speed>255)
717 return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseSpeed, (TAny*)speed, NULL);
719 return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseSpeed, aInOut, NULL);
722 // EMouseAcceleration
723 TInt ProcessMouseAcceleration(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
727 TInt acc=(TInt)aInOut;
728 if (acc<0 || acc>255)
730 return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseAcceleration, (TAny*)acc, NULL);
732 return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseAcceleration, aInOut, NULL);
736 TInt GetMouseButtonState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* /*aInOut*/)
738 return KErrNotSupported;
742 TInt ProcessDebugPort(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
744 return UserSvr::HalFunction(EHalGroupVariant, aSet ? EVariantHalDebugPortSet : EVariantHalDebugPortGet, aInOut, NULL);
748 TInt ProcessCustomRestart(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
751 return KErrNotSupported;
752 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCustomRestart, aInOut, NULL);
755 // ECustomRestartReason
756 TInt ProcessCustomRestartReason(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
758 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCustomRestartReason, aInOut, NULL);
761 // EHardwareFloatingPoint
762 TInt GetHardwareFloatingPoint(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
764 return UserSvr::HalFunction(EHalGroupKernel, EKernelHalHardwareFloatingPoint, aInOut, NULL);
767 // ETimeNonSecureOffset
768 TInt NonsecureClockOffset(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
770 TInt kernelHalFnId = aSet ? EKernelHalSetNonsecureClockOffset : EKernelHalGetNonsecureClockOffset;
771 return UserSvr::HalFunction(EHalGroupKernel, kernelHalFnId, aInOut, NULL);
775 TInt GetCaseState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
777 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCaseState, aInOut, NULL);
780 // EPersistStartupModeKernel
781 TInt ProcessPersistStartupMode(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
783 return UserSvr::HalFunction(EHalGroupVariant, aSet ? EVariantHalPersistStartupMode : EVariantHalGetPersistedStartupMode, aInOut, NULL);
786 // EAvailableCustomRestartReasons
787 TInt GetMaximumCustomRestartReasons(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
790 return KErrNotSupported;
791 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalGetMaximumCustomRestartReasons, aInOut, NULL);
794 // EMaximumRestartStartupModes
795 TInt GetMaximumRestartStartupModes(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
798 return KErrNotSupported;
799 return UserSvr::HalFunction(EHalGroupVariant, EVariantHalGetMaximumRestartStartupModes, aInOut, NULL);
803 // EPointer3DThetaSupported, EPointer3PhiSupported, EPointer3DRotationSupported, EPointer3DPressureSupported,
804 //EPointer3DProximityStep,EPointerMaxPointers,EPointer3DMaxPressure,EPointer3DPressureStep
806 TInt ProcessAdvancedPointer(TInt aDeviceNumber, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
808 TDigitiserInfoV02 info;
809 TPckg<TDigitiserInfoV02> infoPckg(info);
811 TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo,(TAny*)&infoPckg, NULL,aDeviceNumber);
816 case HAL::EPointer3DThetaSupported:
817 *(TInt*)aInOut=(TInt)info.iThetaSupported;
820 case HAL::EPointer3DPhiSupported:
821 *(TInt*)aInOut = info.iPhiSupported;
824 case HAL::EPointer3DRotationSupported:
825 *(TInt*)aInOut = info.iAlphaSupported;
828 case HAL::EPointer3DPressureSupported:
829 *(TInt*)aInOut = info.iPressureSupported;
832 case HAL::EPointer3DProximityStep:
833 *(TInt*)aInOut = info.iProximityStep;
836 case HAL::EPointerMaxPointers:
837 *(TInt*)aInOut = info.iMaxPointers;
840 case HAL::EPointer3DMaxPressure:
841 *(TInt*)aInOut = info.iMaxPressure;
844 case HAL::EPointer3DPressureStep:
845 *(TInt*)aInOut = info.iPressureStep;
849 __ASSERT_DEBUG(EFalse, Panic(EInvalidAttrib3DPointer));
857 TInt Get3DPointerPresent(TInt aDeviceNumber, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
859 return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DPointer, aInOut, NULL, aDeviceNumber);
862 //EPointer3DMaxProximity
863 TInt Process3DRange(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
866 return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetZRange, aInOut, NULL, aDeviceNumber);
869 TDigitiserInfoV02 info;
871 TPckg<TDigitiserInfoV02> infoPckg(info);
872 TInt r =UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo,(TAny*)&infoPckg, NULL, aDeviceNumber);
875 *(TInt*)aInOut=info.iZRange;
881 // EPointerNumberOfPointers
882 TInt ProcessNumberOfPointers(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
885 return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetNumberOfPointers, aInOut, NULL, aDeviceNumber);
888 TDigitiserInfoV02 info;
889 TPckg<TDigitiserInfoV02> infoPckg(info);
890 TInt r =UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo, (TAny*)&infoPckg, NULL, aDeviceNumber);
893 *(TInt*)aInOut=info.iNumberOfPointers;
900 TInt ProcessNanoTickPeriod(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
902 return UserSvr::HalFunction(EHalGroupKernel,EKernelHalNTickPeriod, aInOut, NULL);
905 // EFastCounterFrequency
906 TInt ProcessFastCounterFrequency(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
908 return UserSvr::HalFunction(EHalGroupKernel,EKernelHalFastCounterFrequency, aInOut, NULL);
911 //EDisplayMemoryHandle
912 TInt GetDisplayMemoryHandle(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
916 return KErrNotSupported;
918 return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalGetDisplayMemoryHandle, aInOut, NULL, aDeviceNumber);
922 TInt GetNumCpus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
926 return KErrNotSupported;
928 *(TInt*)aInOut=UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, NULL, NULL);