1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/kernelhwsrv/halservices/hal/src/userhal.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,931 @@
1.4 +// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of the License "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// hal\src\userhal.cpp
1.18 +//
1.19 +//
1.20 +
1.21 +#include <kernel/hal_int.h>
1.22 +#include "u32std.h"
1.23 +#include <videodriver.h>
1.24 +
1.25 +
1.26 +
1.27 +_LIT(KLitHalUserHal,"HAL-UserHal");
1.28 +
1.29 +enum THalUserHalPanic
1.30 + {
1.31 + EInvalidStartupType=0,
1.32 + EInvalidAttributeDP=1,
1.33 + EInvalidAttributeDNM=2,
1.34 + EInvalidAttributeDM=3,
1.35 + EInvalidAttributeDS=4,
1.36 + EInvalidAttributeCMI=5,
1.37 + EInvalidAttributeSMI=6,
1.38 + EInvalidAttributeDC=7,
1.39 + EInvalidAttributeMB=8,
1.40 + EInvalidAttributeMC=9,
1.41 + EInvalidAttributeSMI2=10,
1.42 + EInvalidAttributeSD=11,
1.43 + EInvalidAttributeSDMA=12,
1.44 + EInvalidAttribKeybd=13,
1.45 + EInvalidAttribPen=14,
1.46 + EInvalidAttribMouse=15,
1.47 + EInvalidAttrib3DPointer=16
1.48 + };
1.49 +
1.50 +void Panic(THalUserHalPanic aPanic)
1.51 + {
1.52 + User::Panic(KLitHalUserHal,aPanic);
1.53 + }
1.54 +
1.55 +// ECPUSpeed
1.56 +TInt GetCPUSpeed(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.57 + {
1.58 +
1.59 + TVariantInfoV01 info;
1.60 + TPckg<TVariantInfoV01> infoPckg(info);
1.61 + TInt r=UserSvr::HalFunction(EHalGroupVariant, EVariantHalVariantInfo, (TAny*)&infoPckg, NULL);
1.62 + if (r==KErrNone)
1.63 + {
1.64 + *(TInt*)aInOut=info.iProcessorClockInKHz;
1.65 + }
1.66 + return r;
1.67 + }
1.68 +
1.69 +// ECpuProfilingDefaultInterruptBase
1.70 +TInt GetCPUProfilerInterrupt(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.71 + {
1.72 +
1.73 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalProfilingDefaultInterruptBase, aInOut, NULL);
1.74 + }
1.75 +
1.76 +
1.77 +// ESystemStartupReason
1.78 +TInt GetSystemStartupReason(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.79 + {
1.80 + TInt reason;
1.81 + TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalStartupReason, (TAny*)&reason, NULL);
1.82 + if (r==KErrNone)
1.83 + {
1.84 + switch (reason)
1.85 + {
1.86 + case EStartupCold:
1.87 + case EStartupColdReset:
1.88 + case EStartupNewOs:
1.89 + *(TInt*)aInOut=HAL::ESystemStartupReason_Cold;
1.90 + break;
1.91 + case EStartupPowerFail:
1.92 + case EStartupWarmReset:
1.93 + case EStartupSafeReset:
1.94 + *(TInt*)aInOut=HAL::ESystemStartupReason_Warm;
1.95 + break;
1.96 + case EStartupKernelFault:
1.97 + *(TInt*)aInOut=HAL::ESystemStartupReason_Fault;
1.98 + break;
1.99 + default:
1.100 + Panic(EInvalidStartupType);
1.101 + break;
1.102 + }
1.103 + }
1.104 + return r;
1.105 + }
1.106 +
1.107 +// ESystemException
1.108 +TInt GetSystemException(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.109 + {
1.110 + return UserSvr::HalFunction(EHalGroupKernel, EKernelHalExceptionId, aInOut, NULL);
1.111 + }
1.112 +
1.113 +// EMemoryRAM
1.114 +TInt GetRAMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.115 + {
1.116 + TMemoryInfoV1 info;
1.117 + TPckg<TMemoryInfoV1> infoPckg(info);
1.118 + TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
1.119 + if (r==KErrNone)
1.120 + {
1.121 + *(TInt*)aInOut=info.iTotalRamInBytes;
1.122 + }
1.123 + return r;
1.124 + }
1.125 +
1.126 +// EMemoryRAMFree
1.127 +TInt GetFreeRAM(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.128 + {
1.129 + TMemoryInfoV1 info;
1.130 + TPckg<TMemoryInfoV1> infoPckg(info);
1.131 + TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
1.132 + if (r==KErrNone)
1.133 + {
1.134 + *(TInt*)aInOut=info.iFreeRamInBytes;
1.135 + }
1.136 + return r;
1.137 + }
1.138 +
1.139 +// EMemoryROM
1.140 +TInt GetROMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.141 + {
1.142 + TMemoryInfoV1 info;
1.143 + TPckg<TMemoryInfoV1> infoPckg(info);
1.144 + TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
1.145 + if (r==KErrNone)
1.146 + {
1.147 + *(TInt*)aInOut=info.iTotalRomInBytes;
1.148 + }
1.149 + return r;
1.150 + }
1.151 +
1.152 +// EPowerGood
1.153 +TInt GetPowerGoodState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.154 + {
1.155 + TSupplyInfoV1 info;
1.156 + TPckg<TSupplyInfoV1> infoPckg(info);
1.157 + TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
1.158 + if (r==KErrNone)
1.159 + {
1.160 + TBool state=info.iExternalPowerPresent||(info.iMainBatteryStatus>=ELow);
1.161 + *(TBool*)aInOut=state;
1.162 + }
1.163 + return r;
1.164 + }
1.165 +
1.166 +// EPowerBatteryStatus
1.167 +TInt GetBatteryStatus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.168 + {
1.169 + TSupplyInfoV1 info;
1.170 + TPckg<TSupplyInfoV1> infoPckg(info);
1.171 + TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
1.172 + if (r==KErrNone)
1.173 + {
1.174 + *(TInt*)aInOut=(TInt)info.iMainBatteryStatus;
1.175 + }
1.176 + return r;
1.177 + }
1.178 +
1.179 +// EAccessoryPower
1.180 +TInt GetAccessoryPowerPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.181 + {
1.182 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalAcessoryPowerPresent, aInOut, NULL);
1.183 + }
1.184 +
1.185 +// EPowerBackup
1.186 +TInt GetBackupPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.187 + {
1.188 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalBackupPresent, aInOut, NULL);
1.189 + }
1.190 +
1.191 +// EPowerBackupStatus
1.192 +TInt GetBackupStatus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.193 + {
1.194 + TSupplyInfoV1 info;
1.195 + TPckg<TSupplyInfoV1> infoPckg(info);
1.196 + TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
1.197 + if (r==KErrNone)
1.198 + {
1.199 + *(TInt*)aInOut=(TInt)info.iBackupBatteryStatus;
1.200 + }
1.201 + return r;
1.202 + }
1.203 +
1.204 +// EPowerExternal
1.205 +TInt GetPowerExternalState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.206 + {
1.207 + TSupplyInfoV1 info;
1.208 + TPckg<TSupplyInfoV1> infoPckg(info);
1.209 + TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
1.210 + if (r==KErrNone)
1.211 + {
1.212 + *(TInt*)aInOut=(TInt)info.iExternalPowerPresent;
1.213 + }
1.214 + return r;
1.215 + }
1.216 +
1.217 +// EKeyboardState
1.218 +TInt ProcessKeyboardState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.219 + {
1.220 + if (aSet)
1.221 + return UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalSetKeyboardState, aInOut, NULL);
1.222 + return UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalKeyboardState, aInOut, NULL);
1.223 + }
1.224 +
1.225 +// EKeyboard, EKeyboardDeviceKeys and EKeyboardAppKeys
1.226 +TInt ProcessKeyboardInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
1.227 + {
1.228 + TKeyboardInfoV01 info;
1.229 + TPckg<TKeyboardInfoV01> infoPckg(info);
1.230 + TInt r=UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalKeyboardInfo, (TAny*)&infoPckg, NULL);
1.231 + if (KErrNone == r)
1.232 + {
1.233 + switch (aAttrib)
1.234 + {
1.235 + case HAL::EKeyboard:
1.236 + *(TInt*)aInOut=(TInt)info.iKeyboardType;
1.237 + break;
1.238 + case HAL::EKeyboardDeviceKeys:
1.239 + *(TInt*)aInOut = info.iDeviceKeys;
1.240 + break;
1.241 + case HAL::EKeyboardAppKeys:
1.242 + *(TInt*)aInOut = info.iAppsKeys;
1.243 + break;
1.244 + default:
1.245 + __ASSERT_DEBUG(EFalse, Panic(EInvalidAttribKeybd));
1.246 + break;
1.247 + }
1.248 + }
1.249 + return r;
1.250 + }
1.251 +
1.252 +// EKeyboardClick
1.253 +TInt GetKeyboardClickPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.254 + {
1.255 + TInt state=0;
1.256 + TInt r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickEnabled, (TAny*)state, NULL);
1.257 + *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a clicking device we should be able to get its state
1.258 + return KErrNone;
1.259 + }
1.260 +
1.261 +// EKeyboardClickVolumeMax
1.262 +TInt GetKeyboardClickVolumeMax(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.263 + {
1.264 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickVolumeMax, aInOut, NULL);
1.265 + }
1.266 +
1.267 +// EKeyboardClickState
1.268 +TInt ProcessKeyboardClickState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.269 + {
1.270 + if (aSet)
1.271 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetKeyClickEnabled, aInOut, NULL);
1.272 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickEnabled, aInOut, NULL);
1.273 + }
1.274 +
1.275 +// EKeyboardClickVolume
1.276 +TInt ProcessKeyboardClickVolume(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.277 + {
1.278 + TInt r;
1.279 + if (aSet)
1.280 + {
1.281 + TInt vol=(TInt)aInOut;
1.282 + TInt volMax=0;
1.283 + r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickVolumeMax, (TAny*)volMax, NULL);
1.284 + if (r!=KErrNone)
1.285 + return r;
1.286 + if (vol<0 || vol>volMax)
1.287 + return KErrArgument;
1.288 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetKeyClickLoud, (TAny*)vol, NULL);
1.289 + }
1.290 + TBool state;
1.291 + r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickLoud, (TAny*)&state, NULL);
1.292 + if (r==KErrNone)
1.293 + {
1.294 + *(TInt*)aInOut=state?1:0;
1.295 + }
1.296 + return r;
1.297 + }
1.298 +
1.299 +// EDisplayContrast
1.300 +TInt ProcessDisplayContrast(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.301 + {
1.302 + if (aSet)
1.303 + {
1.304 + TInt x=(TInt)aInOut;
1.305 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetDisplayContrast, (TAny*)x, NULL, aDeviceNumber);
1.306 + }
1.307 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalDisplayContrast, aInOut, NULL, aDeviceNumber);
1.308 + }
1.309 +
1.310 +// EDisplayBrightness
1.311 +TInt ProcessDisplayBrightness(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.312 + {
1.313 + if (aSet)
1.314 + {
1.315 + TInt x=(TInt)aInOut;
1.316 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetDisplayBrightness, (TAny*)x, NULL, aDeviceNumber);
1.317 + }
1.318 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalDisplayBrightness, aInOut, NULL, aDeviceNumber);
1.319 + }
1.320 +
1.321 +
1.322 +// EDisplayPaletteEntry
1.323 +TInt ProcessDisplayPaletteEntry(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
1.324 + {
1.325 +
1.326 + __ASSERT_DEBUG(HAL::EDisplayPaletteEntry == aAttrib, Panic(EInvalidAttributeDP));
1.327 +
1.328 + if (aSet)
1.329 + {
1.330 + TInt entry = ((TInt)aInOut >> 24) & 0xFF;
1.331 + TInt color = ((TInt)aInOut) & 0xFFFFFF;
1.332 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetPaletteEntry, (TAny*)entry, (TAny*)color, aDeviceNumber);
1.333 + }
1.334 + TInt e = (*(TInt*)aInOut) & 0xFF;
1.335 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalPaletteEntry, &e, aInOut, aDeviceNumber);
1.336 + }
1.337 +
1.338 +// EDisplayNumModes
1.339 +TInt ProcessDisplayNumModes(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
1.340 + {
1.341 + __ASSERT_DEBUG(HAL::EDisplayNumModes == aAttrib, Panic(EInvalidAttributeDNM));
1.342 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalModeCount, aInOut, NULL, aDeviceNumber);
1.343 + }
1.344 +
1.345 +// EDisplayMode
1.346 +TInt ProcessDisplayMode(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
1.347 + {
1.348 + __ASSERT_DEBUG(HAL::EDisplayMode == aAttrib, Panic(EInvalidAttributeDM));
1.349 + return UserSvr::HalFunction(EHalGroupDisplay, aSet?EDisplayHalSetMode:EDisplayHalMode, aInOut, NULL, aDeviceNumber);
1.350 + }
1.351 +
1.352 +// EDisplayState
1.353 +TInt ProcessDisplayState(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
1.354 + {
1.355 + __ASSERT_DEBUG(HAL::EDisplayState == aAttrib, Panic(EInvalidAttributeDS));
1.356 +
1.357 + if (aSet)
1.358 + {
1.359 + TBool on = (TBool)aInOut;
1.360 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetState, (TAny*)on, NULL, aDeviceNumber);
1.361 + }
1.362 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalState, aInOut, NULL, aDeviceNumber);
1.363 +
1.364 + }
1.365 +
1.366 +// EDisplayColors
1.367 +TInt ProcessDisplayColors(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
1.368 + {
1.369 + __ASSERT_DEBUG(HAL::EDisplayColors == aAttrib, Panic(EInvalidAttributeDC));
1.370 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalColors, aInOut, NULL, aDeviceNumber);
1.371 + }
1.372 +
1.373 +// EDisplayBrightnessMax
1.374 +TInt ProcessDisplayMaxBrightness(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
1.375 + {
1.376 + __ASSERT_DEBUG(HAL::EDisplayBrightnessMax == aAttrib, Panic(EInvalidAttributeMB));
1.377 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalMaxDisplayBrightness, aInOut, NULL, aDeviceNumber);
1.378 + }
1.379 +
1.380 +// EDisplayContrastMax
1.381 +TInt ProcessDisplayMaxContrast(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
1.382 + {
1.383 + __ASSERT_DEBUG(HAL::EDisplayContrastMax == aAttrib, Panic(EInvalidAttributeMC));
1.384 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalMaxDisplayContrast, aInOut, NULL, aDeviceNumber);
1.385 + }
1.386 +
1.387 +/*
1.388 +TInt ProcessSecureDisplayCurrentModeInfo(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
1.389 + {
1.390 + //only info obtainable about secure display is the address
1.391 + __ASSERT_DEBUG(HAL::ESecureDisplayMemoryAddress == aAttrib, Panic(EInvalidAttributeSDMA));
1.392 +
1.393 + TVideoInfoV01 info;
1.394 + TPckg<TVideoInfoV01> infoPckg(info);
1.395 + TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalCurrentModeInfo, (TAny*)&infoPckg, (TAny*)ETrue, aDeviceNumber);
1.396 + if (KErrNone == r)
1.397 + *(TInt*)aInOut = info.iVideoAddress;
1.398 +
1.399 + return r;
1.400 + }
1.401 +*/
1.402 +
1.403 +TInt ProcessDisplayCurrentModeInfo(TInt aDeviceNumber, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
1.404 + {
1.405 + TVideoInfoV01 info;
1.406 + TPckg<TVideoInfoV01> infoPckg(info);
1.407 + TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalCurrentModeInfo, (TAny*)&infoPckg, (TAny*)EFalse, aDeviceNumber);
1.408 + if (KErrNone == r)
1.409 + {
1.410 + switch (aAttrib)
1.411 + {
1.412 + case HAL::EDisplayXPixels:
1.413 + *(TInt*)aInOut = info.iSizeInPixels.iWidth;
1.414 + break;
1.415 +
1.416 + case HAL::EDisplayYPixels:
1.417 + *(TInt*)aInOut = info.iSizeInPixels.iHeight;
1.418 + break;
1.419 +
1.420 + case HAL::EDisplayXTwips:
1.421 + *(TInt*)aInOut = info.iSizeInTwips.iWidth;
1.422 + break;
1.423 +
1.424 + case HAL::EDisplayYTwips:
1.425 + *(TInt*)aInOut = info.iSizeInTwips.iHeight;
1.426 + break;
1.427 +
1.428 + case HAL::EDisplayMemoryAddress:
1.429 + if (info.iVideoAddress == 0) //if this is true, the actual address is returned by EDisplayHalGetDisplayMemoryAddress
1.430 + {
1.431 + r = UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalGetDisplayMemoryAddress, aInOut, (TAny*)EFalse, aDeviceNumber);
1.432 + }
1.433 + else
1.434 + {
1.435 + *(TInt*)aInOut = info.iVideoAddress;
1.436 + }
1.437 + break;
1.438 +
1.439 + case HAL::EDisplayIsPixelOrderRGB:
1.440 + *(TInt*)aInOut = info.iIsPixelOrderRGB;
1.441 + break;
1.442 +
1.443 + case HAL::EDisplayIsPixelOrderLandscape:
1.444 + *(TInt*)aInOut = info.iIsPixelOrderLandscape;
1.445 + break;
1.446 +
1.447 + default:
1.448 + __ASSERT_DEBUG(EFalse, Panic(EInvalidAttributeCMI));
1.449 + break;
1.450 +
1.451 + }
1.452 + }
1.453 + return r;
1.454 + }
1.455 +
1.456 +
1.457 +TInt ProcessDisplaySpecifiedModeInfo(TInt aDeviceNumber, TInt aAttrib, TBool __DEBUG_ONLY(aSet), TAny* aInOut)
1.458 + {
1.459 +
1.460 + __ASSERT_DEBUG(!aSet, Panic(EInvalidAttributeSMI2));
1.461 +
1.462 +
1.463 + TVideoInfoV01 info;
1.464 + TPckg<TVideoInfoV01> infoPckg(info);
1.465 + TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSpecifiedModeInfo, aInOut, (TAny*)&infoPckg, aDeviceNumber);
1.466 + if (KErrNone == r)
1.467 + {
1.468 + switch (aAttrib)
1.469 + {
1.470 + case HAL::EDisplayIsMono:
1.471 + *(TInt*)aInOut = info.iIsMono;
1.472 + break;
1.473 +
1.474 + case HAL::EDisplayIsPalettized:
1.475 + *(TInt*)aInOut = info.iIsPalettized;
1.476 + break;
1.477 +
1.478 + case HAL::EDisplayBitsPerPixel:
1.479 + *(TInt*)aInOut = info.iBitsPerPixel;
1.480 + break;
1.481 +
1.482 + case HAL::EDisplayOffsetToFirstPixel:
1.483 + *(TInt*)aInOut = info.iOffsetToFirstPixel;
1.484 + break;
1.485 +
1.486 + case HAL::EDisplayOffsetBetweenLines:
1.487 + *(TInt*)aInOut = info.iOffsetBetweenLines;
1.488 + break;
1.489 +
1.490 + default:
1.491 + __ASSERT_DEBUG(EFalse, Panic(EInvalidAttributeSMI));
1.492 + break;
1.493 + }
1.494 + }
1.495 + return r;
1.496 + }
1.497 +
1.498 +//ESecureDisplay
1.499 +/*
1.500 +TInt ProcessSecureDisplay(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
1.501 + {
1.502 + __ASSERT_DEBUG(HAL::ESecureDisplay == aAttrib, Panic(EInvalidAttributeSD));
1.503 +
1.504 + if (aSet)
1.505 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetSecure, aInOut, NULL, aDeviceNumber);
1.506 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSecure, aInOut, NULL, aDeviceNumber);
1.507 + }
1.508 +*/
1.509 +
1.510 +// EBacklight
1.511 +TInt GetBacklightPresent(TInt aDeviceNumber, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.512 + {
1.513 + TInt state=0;
1.514 + TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalBacklightOn, (TAny*)&state, NULL, aDeviceNumber);
1.515 + *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a backlight we should be able to get its state
1.516 + return KErrNone;
1.517 + }
1.518 +
1.519 +// EBacklightState
1.520 +TInt ProcessBacklightState(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.521 + {
1.522 + if (aSet)
1.523 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetBacklightOn, aInOut, NULL, aDeviceNumber);
1.524 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalBacklightOn, aInOut, NULL, aDeviceNumber);
1.525 + }
1.526 +
1.527 +// EPen
1.528 +TInt GetPenPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.529 + {
1.530 + TDigitiserInfoV01Buf buf;
1.531 + TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYInfo, (TAny*)&buf, NULL);
1.532 + *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a pen device we should be able to get info out of it
1.533 + return KErrNone;
1.534 + }
1.535 +
1.536 +// EPenX and EPenY
1.537 +TInt ProcessPenInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
1.538 + {
1.539 + TDigitiserInfoV01 info;
1.540 + TPckg<TDigitiserInfoV01> infoPckg(info);
1.541 + TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYInfo, (TAny*)&infoPckg, NULL);
1.542 + if (KErrNone == r)
1.543 + {
1.544 + switch (aAttrib)
1.545 + {
1.546 + case HAL::EPenX:
1.547 + *(TInt*)aInOut=(TInt)info.iDigitiserSize.iWidth;
1.548 + break;
1.549 + case HAL::EPenY:
1.550 + *(TInt*)aInOut = info.iDigitiserSize.iHeight;
1.551 + break;
1.552 + default:
1.553 + __ASSERT_DEBUG(EFalse, Panic(EInvalidAttribPen));
1.554 + break;
1.555 + }
1.556 + }
1.557 + return r;
1.558 + }
1.559 +
1.560 +// EPenState
1.561 +TInt ProcessPenState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.562 + {
1.563 + if (aSet)
1.564 + return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetXYState, aInOut, NULL);
1.565 + return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYState, aInOut, NULL);
1.566 + }
1.567 +
1.568 +// EPenDisplayOn
1.569 +TInt ProcessPenDisplayOnState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.570 + {
1.571 + if (aSet)
1.572 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetPointerSwitchesOn, aInOut, NULL);
1.573 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalPointerSwitchesOn, aInOut, NULL);
1.574 + }
1.575 +
1.576 +// EPenClick
1.577 +TInt GetPenClickPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.578 + {
1.579 + TInt state=0;
1.580 + TInt r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickEnabled, (TAny*)state, NULL);
1.581 + *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a clicking device we should be able to get its state
1.582 + return KErrNone;
1.583 + }
1.584 +
1.585 +// EPenClickVolumeMax
1.586 +TInt GetPenClickVolumeMax(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.587 + {
1.588 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickVolumeMax, aInOut, NULL);
1.589 + }
1.590 +
1.591 +// EPenClickState
1.592 +TInt ProcessPenClickState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.593 + {
1.594 + if (aSet)
1.595 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetPointerClickEnabled, aInOut, NULL);
1.596 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickEnabled, aInOut, NULL);
1.597 + }
1.598 +
1.599 +// EPenClickVolume
1.600 +TInt ProcessPenClickVolume(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.601 + {
1.602 + TInt r;
1.603 + if (aSet)
1.604 + {
1.605 + TInt vol=(TInt)aInOut;
1.606 + TInt volMax=0;
1.607 + r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickVolumeMax, (TAny*)volMax, NULL);
1.608 + if (r!=KErrNone)
1.609 + return r;
1.610 + if (vol<0 || vol>volMax)
1.611 + return KErrArgument;
1.612 + return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetPointerClickLoud, (TAny*)vol, NULL);
1.613 + }
1.614 + TBool state;
1.615 + r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickLoud, (TAny*)&state, NULL);
1.616 + if (r==KErrNone)
1.617 + {
1.618 + *(TInt*)aInOut=state?1:0;
1.619 + }
1.620 + return r;
1.621 + }
1.622 +
1.623 +// ECaseSwitchDisplayOn
1.624 +TInt ProcessCaseSwitchDisplayOnState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.625 + {
1.626 + if (aSet)
1.627 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetCaseOpenSwitchesOn, aInOut, NULL);
1.628 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalCaseOpenSwitchesOn, aInOut, NULL);
1.629 + }
1.630 +
1.631 +// ECaseSwitchDisplayOff
1.632 +TInt ProcessCaseSwitchDisplayOffState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.633 + {
1.634 + if (aSet)
1.635 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetCaseCloseSwitchesOff, aInOut, NULL);
1.636 + return UserSvr::HalFunction(EHalGroupPower, EPowerHalCaseCloseSwitchesOff, aInOut, NULL);
1.637 + }
1.638 +
1.639 +// ELEDs
1.640 +TInt GetLedCaps(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.641 + {
1.642 + TVariantInfoV01 info;
1.643 + TPckg<TVariantInfoV01> infoPckg(info);
1.644 + TInt r=UserSvr::HalFunction(EHalGroupVariant, EVariantHalVariantInfo, (TAny*)&infoPckg, NULL);
1.645 + if (r==KErrNone)
1.646 + {
1.647 + *(TInt*)aInOut=(info.iLedCapabilities)>>16; // upper half for number of Leds, lower half for colour capabilities
1.648 + }
1.649 + return r;
1.650 + }
1.651 +
1.652 +// ELEDmask
1.653 +TInt ProcessLEDMask(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.654 + {
1.655 + if (aSet)
1.656 + {
1.657 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalLedMaskSet, aInOut, NULL);
1.658 + }
1.659 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalLedMaskGet, aInOut, NULL);
1.660 + }
1.661 +
1.662 +// ESwitches
1.663 +TInt GetSwitches(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.664 + {
1.665 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalSwitches, aInOut, NULL);
1.666 + }
1.667 +
1.668 +// EMouse
1.669 +TInt GetMousePresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.670 + {
1.671 + TMouseInfoV01Buf buf;
1.672 + TInt r=UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseInfo, (TAny*)&buf, NULL);
1.673 + *(TInt*)aInOut=(r==KErrNone)?1:0; // if there is a mouse device we should be able to get info out of it
1.674 + return KErrNone;
1.675 + }
1.676 +
1.677 +// EMouseX, EMouseY and EMouseButtons
1.678 +TInt ProcessMouseInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
1.679 + {
1.680 + TMouseInfoV01 info;
1.681 + TPckg<TMouseInfoV01> infoPckg(info);
1.682 + TInt r=UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseInfo, (TAny*)&infoPckg, NULL);
1.683 + if (KErrNone == r)
1.684 + {
1.685 + switch (aAttrib)
1.686 + {
1.687 + case HAL::EMouseX:
1.688 + *(TInt*)aInOut=(TInt)info.iMouseAreaSize.iWidth;
1.689 + break;
1.690 + case HAL::EMouseY:
1.691 + *(TInt*)aInOut = info.iMouseAreaSize.iHeight;
1.692 + break;
1.693 + case HAL::EMouseButtons:
1.694 + *(TInt*)aInOut=(TInt)info.iMouseButtons;
1.695 + break;
1.696 + default:
1.697 + __ASSERT_DEBUG(EFalse, Panic(EInvalidAttribMouse));
1.698 + break;
1.699 + }
1.700 + }
1.701 + return r;
1.702 + }
1.703 +
1.704 +// EMouseState
1.705 +TInt ProcessMouseState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.706 + {
1.707 + if (aSet)
1.708 + return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseState, aInOut, NULL);
1.709 + return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseState, aInOut, NULL);
1.710 + }
1.711 +
1.712 +// EMouseSpeed
1.713 +TInt ProcessMouseSpeed(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.714 + {
1.715 + if (aSet)
1.716 + {
1.717 + TInt speed=(TInt)aInOut;
1.718 + if (speed<0 || speed>255)
1.719 + return KErrArgument;
1.720 + return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseSpeed, (TAny*)speed, NULL);
1.721 + }
1.722 + return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseSpeed, aInOut, NULL);
1.723 + }
1.724 +
1.725 +// EMouseAcceleration
1.726 +TInt ProcessMouseAcceleration(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.727 + {
1.728 + if (aSet)
1.729 + {
1.730 + TInt acc=(TInt)aInOut;
1.731 + if (acc<0 || acc>255)
1.732 + return KErrArgument;
1.733 + return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseAcceleration, (TAny*)acc, NULL);
1.734 + }
1.735 + return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseAcceleration, aInOut, NULL);
1.736 + }
1.737 +
1.738 +// EMouseButtonState
1.739 +TInt GetMouseButtonState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* /*aInOut*/)
1.740 + {
1.741 + return KErrNotSupported;
1.742 + }
1.743 +
1.744 +// EDebugPort
1.745 +TInt ProcessDebugPort(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.746 + {
1.747 + return UserSvr::HalFunction(EHalGroupVariant, aSet ? EVariantHalDebugPortSet : EVariantHalDebugPortGet, aInOut, NULL);
1.748 + }
1.749 +
1.750 +// ECustomRestart
1.751 +TInt ProcessCustomRestart(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.752 + {
1.753 + if (!aSet)
1.754 + return KErrNotSupported;
1.755 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCustomRestart, aInOut, NULL);
1.756 + }
1.757 +
1.758 +// ECustomRestartReason
1.759 +TInt ProcessCustomRestartReason(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.760 + {
1.761 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCustomRestartReason, aInOut, NULL);
1.762 + }
1.763 +
1.764 +// EHardwareFloatingPoint
1.765 +TInt GetHardwareFloatingPoint(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.766 + {
1.767 + return UserSvr::HalFunction(EHalGroupKernel, EKernelHalHardwareFloatingPoint, aInOut, NULL);
1.768 + }
1.769 +
1.770 +// ETimeNonSecureOffset
1.771 +TInt NonsecureClockOffset(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.772 + {
1.773 + TInt kernelHalFnId = aSet ? EKernelHalSetNonsecureClockOffset : EKernelHalGetNonsecureClockOffset;
1.774 + return UserSvr::HalFunction(EHalGroupKernel, kernelHalFnId, aInOut, NULL);
1.775 + }
1.776 +
1.777 +// ECaseState
1.778 +TInt GetCaseState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.779 + {
1.780 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCaseState, aInOut, NULL);
1.781 + }
1.782 +
1.783 +// EPersistStartupModeKernel
1.784 +TInt ProcessPersistStartupMode(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.785 + {
1.786 + return UserSvr::HalFunction(EHalGroupVariant, aSet ? EVariantHalPersistStartupMode : EVariantHalGetPersistedStartupMode, aInOut, NULL);
1.787 + }
1.788 +
1.789 +// EAvailableCustomRestartReasons
1.790 +TInt GetMaximumCustomRestartReasons(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.791 + {
1.792 + if (aSet)
1.793 + return KErrNotSupported;
1.794 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalGetMaximumCustomRestartReasons, aInOut, NULL);
1.795 + }
1.796 +
1.797 +// EMaximumRestartStartupModes
1.798 +TInt GetMaximumRestartStartupModes(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.799 + {
1.800 + if (aSet)
1.801 + return KErrNotSupported;
1.802 + return UserSvr::HalFunction(EHalGroupVariant, EVariantHalGetMaximumRestartStartupModes, aInOut, NULL);
1.803 + }
1.804 +
1.805 +
1.806 +// EPointer3DThetaSupported, EPointer3PhiSupported, EPointer3DRotationSupported, EPointer3DPressureSupported,
1.807 +//EPointer3DProximityStep,EPointerMaxPointers,EPointer3DMaxPressure,EPointer3DPressureStep
1.808 +
1.809 +TInt ProcessAdvancedPointer(TInt aDeviceNumber, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
1.810 + {
1.811 + TDigitiserInfoV02 info;
1.812 + TPckg<TDigitiserInfoV02> infoPckg(info);
1.813 +
1.814 + TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo,(TAny*)&infoPckg, NULL,aDeviceNumber);
1.815 + if (KErrNone == r)
1.816 + {
1.817 + switch (aAttrib)
1.818 + {
1.819 + case HAL::EPointer3DThetaSupported:
1.820 + *(TInt*)aInOut=(TInt)info.iThetaSupported;
1.821 + break;
1.822 +
1.823 + case HAL::EPointer3DPhiSupported:
1.824 + *(TInt*)aInOut = info.iPhiSupported;
1.825 + break;
1.826 +
1.827 + case HAL::EPointer3DRotationSupported:
1.828 + *(TInt*)aInOut = info.iAlphaSupported;
1.829 + break;
1.830 +
1.831 + case HAL::EPointer3DPressureSupported:
1.832 + *(TInt*)aInOut = info.iPressureSupported;
1.833 + break;
1.834 +
1.835 + case HAL::EPointer3DProximityStep:
1.836 + *(TInt*)aInOut = info.iProximityStep;
1.837 + break;
1.838 +
1.839 + case HAL::EPointerMaxPointers:
1.840 + *(TInt*)aInOut = info.iMaxPointers;
1.841 + break;
1.842 +
1.843 + case HAL::EPointer3DMaxPressure:
1.844 + *(TInt*)aInOut = info.iMaxPressure;
1.845 + break;
1.846 +
1.847 + case HAL::EPointer3DPressureStep:
1.848 + *(TInt*)aInOut = info.iPressureStep;
1.849 + break;
1.850 +
1.851 + default:
1.852 + __ASSERT_DEBUG(EFalse, Panic(EInvalidAttrib3DPointer));
1.853 + break;
1.854 + }
1.855 + }
1.856 + return r;
1.857 + }
1.858 +
1.859 +// EPointer3D
1.860 +TInt Get3DPointerPresent(TInt aDeviceNumber, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.861 + {
1.862 + return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DPointer, aInOut, NULL, aDeviceNumber);
1.863 + }
1.864 +
1.865 +//EPointer3DMaxProximity
1.866 +TInt Process3DRange(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.867 + {
1.868 + if (aSet)
1.869 + return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetZRange, aInOut, NULL, aDeviceNumber);
1.870 + else
1.871 + {
1.872 + TDigitiserInfoV02 info;
1.873 +
1.874 + TPckg<TDigitiserInfoV02> infoPckg(info);
1.875 + TInt r =UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo,(TAny*)&infoPckg, NULL, aDeviceNumber);
1.876 + if(r==KErrNone)
1.877 + {
1.878 + *(TInt*)aInOut=info.iZRange;
1.879 + }
1.880 + return r;
1.881 + }
1.882 + }
1.883 +
1.884 +// EPointerNumberOfPointers
1.885 +TInt ProcessNumberOfPointers(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.886 + {
1.887 + if (aSet)
1.888 + return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetNumberOfPointers, aInOut, NULL, aDeviceNumber);
1.889 + else
1.890 + {
1.891 + TDigitiserInfoV02 info;
1.892 + TPckg<TDigitiserInfoV02> infoPckg(info);
1.893 + TInt r =UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo, (TAny*)&infoPckg, NULL, aDeviceNumber);
1.894 + if(r==KErrNone)
1.895 + {
1.896 + *(TInt*)aInOut=info.iNumberOfPointers;
1.897 + }
1.898 + return r;
1.899 + }
1.900 + }
1.901 +
1.902 +// ENanoTickPeriod
1.903 +TInt ProcessNanoTickPeriod(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.904 + {
1.905 + return UserSvr::HalFunction(EHalGroupKernel,EKernelHalNTickPeriod, aInOut, NULL);
1.906 + }
1.907 +
1.908 +// EFastCounterFrequency
1.909 +TInt ProcessFastCounterFrequency(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
1.910 + {
1.911 + return UserSvr::HalFunction(EHalGroupKernel,EKernelHalFastCounterFrequency, aInOut, NULL);
1.912 + }
1.913 +
1.914 +//EDisplayMemoryHandle
1.915 +TInt GetDisplayMemoryHandle(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.916 + {
1.917 + if (aSet)
1.918 + {
1.919 + return KErrNotSupported;
1.920 + }
1.921 + return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalGetDisplayMemoryHandle, aInOut, NULL, aDeviceNumber);
1.922 + }
1.923 +
1.924 +//ENumCpus
1.925 +TInt GetNumCpus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
1.926 + {
1.927 + if (aSet)
1.928 + {
1.929 + return KErrNotSupported;
1.930 + }
1.931 + *(TInt*)aInOut=UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, NULL, NULL);
1.932 + return KErrNone;
1.933 + }
1.934 +