os/kernelhwsrv/halservices/hal/src/userhal.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 1999-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of the License "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// hal\src\userhal.cpp
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
#include <kernel/hal_int.h>
sl@0
    19
#include "u32std.h"
sl@0
    20
#include <videodriver.h>
sl@0
    21
sl@0
    22
sl@0
    23
sl@0
    24
_LIT(KLitHalUserHal,"HAL-UserHal");
sl@0
    25
sl@0
    26
enum THalUserHalPanic
sl@0
    27
	{
sl@0
    28
	EInvalidStartupType=0,
sl@0
    29
	EInvalidAttributeDP=1,
sl@0
    30
	EInvalidAttributeDNM=2,
sl@0
    31
	EInvalidAttributeDM=3,
sl@0
    32
	EInvalidAttributeDS=4,
sl@0
    33
	EInvalidAttributeCMI=5,
sl@0
    34
	EInvalidAttributeSMI=6,
sl@0
    35
	EInvalidAttributeDC=7,
sl@0
    36
	EInvalidAttributeMB=8,
sl@0
    37
	EInvalidAttributeMC=9,
sl@0
    38
	EInvalidAttributeSMI2=10,
sl@0
    39
	EInvalidAttributeSD=11,
sl@0
    40
	EInvalidAttributeSDMA=12,
sl@0
    41
	EInvalidAttribKeybd=13,
sl@0
    42
	EInvalidAttribPen=14,
sl@0
    43
	EInvalidAttribMouse=15,
sl@0
    44
	EInvalidAttrib3DPointer=16
sl@0
    45
	};
sl@0
    46
sl@0
    47
void Panic(THalUserHalPanic aPanic)
sl@0
    48
	{
sl@0
    49
	User::Panic(KLitHalUserHal,aPanic);		
sl@0
    50
	}
sl@0
    51
sl@0
    52
// ECPUSpeed
sl@0
    53
TInt GetCPUSpeed(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
    54
	{
sl@0
    55
sl@0
    56
      TVariantInfoV01 info;
sl@0
    57
	TPckg<TVariantInfoV01> infoPckg(info);
sl@0
    58
	TInt r=UserSvr::HalFunction(EHalGroupVariant, EVariantHalVariantInfo, (TAny*)&infoPckg, NULL);
sl@0
    59
	if (r==KErrNone)
sl@0
    60
		{
sl@0
    61
		*(TInt*)aInOut=info.iProcessorClockInKHz;
sl@0
    62
		}
sl@0
    63
	return r;
sl@0
    64
	}
sl@0
    65
	
sl@0
    66
// ECpuProfilingDefaultInterruptBase
sl@0
    67
TInt GetCPUProfilerInterrupt(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
    68
	{
sl@0
    69
sl@0
    70
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalProfilingDefaultInterruptBase, aInOut, NULL);
sl@0
    71
	}
sl@0
    72
	
sl@0
    73
sl@0
    74
// ESystemStartupReason
sl@0
    75
TInt GetSystemStartupReason(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
    76
	{
sl@0
    77
	TInt reason;
sl@0
    78
	TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalStartupReason, (TAny*)&reason, NULL);
sl@0
    79
	if (r==KErrNone)
sl@0
    80
		{
sl@0
    81
		switch (reason)
sl@0
    82
			{
sl@0
    83
			case EStartupCold:
sl@0
    84
			case EStartupColdReset:
sl@0
    85
			case EStartupNewOs:
sl@0
    86
				*(TInt*)aInOut=HAL::ESystemStartupReason_Cold;
sl@0
    87
				break;
sl@0
    88
			case EStartupPowerFail:
sl@0
    89
			case EStartupWarmReset:
sl@0
    90
			case EStartupSafeReset:
sl@0
    91
				*(TInt*)aInOut=HAL::ESystemStartupReason_Warm;
sl@0
    92
				break;
sl@0
    93
			case EStartupKernelFault:
sl@0
    94
				*(TInt*)aInOut=HAL::ESystemStartupReason_Fault;
sl@0
    95
				break;
sl@0
    96
			default:
sl@0
    97
				Panic(EInvalidStartupType);
sl@0
    98
				break;
sl@0
    99
			}
sl@0
   100
		}
sl@0
   101
	return r;
sl@0
   102
	}
sl@0
   103
sl@0
   104
// ESystemException
sl@0
   105
TInt GetSystemException(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   106
	{
sl@0
   107
	return UserSvr::HalFunction(EHalGroupKernel, EKernelHalExceptionId, aInOut, NULL);
sl@0
   108
	}
sl@0
   109
sl@0
   110
// EMemoryRAM
sl@0
   111
TInt GetRAMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   112
	{
sl@0
   113
	TMemoryInfoV1 info;
sl@0
   114
	TPckg<TMemoryInfoV1> infoPckg(info);
sl@0
   115
	TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
sl@0
   116
	if (r==KErrNone)
sl@0
   117
		{
sl@0
   118
		*(TInt*)aInOut=info.iTotalRamInBytes;
sl@0
   119
		}
sl@0
   120
	return r;
sl@0
   121
	}
sl@0
   122
sl@0
   123
// EMemoryRAMFree
sl@0
   124
TInt GetFreeRAM(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   125
	{
sl@0
   126
	TMemoryInfoV1 info;
sl@0
   127
	TPckg<TMemoryInfoV1> infoPckg(info);
sl@0
   128
	TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
sl@0
   129
	if (r==KErrNone)
sl@0
   130
		{
sl@0
   131
		*(TInt*)aInOut=info.iFreeRamInBytes;
sl@0
   132
		}
sl@0
   133
	return r;
sl@0
   134
	}
sl@0
   135
sl@0
   136
// EMemoryROM
sl@0
   137
TInt GetROMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   138
	{
sl@0
   139
	TMemoryInfoV1 info;
sl@0
   140
	TPckg<TMemoryInfoV1> infoPckg(info);
sl@0
   141
	TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
sl@0
   142
	if (r==KErrNone)
sl@0
   143
		{
sl@0
   144
		*(TInt*)aInOut=info.iTotalRomInBytes;
sl@0
   145
		}
sl@0
   146
	return r;
sl@0
   147
	}
sl@0
   148
sl@0
   149
// EPowerGood
sl@0
   150
TInt GetPowerGoodState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   151
	{
sl@0
   152
	TSupplyInfoV1 info;
sl@0
   153
	TPckg<TSupplyInfoV1> infoPckg(info);
sl@0
   154
	TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
sl@0
   155
	if (r==KErrNone)
sl@0
   156
		{
sl@0
   157
		TBool state=info.iExternalPowerPresent||(info.iMainBatteryStatus>=ELow);
sl@0
   158
		*(TBool*)aInOut=state;
sl@0
   159
		}
sl@0
   160
	return r;
sl@0
   161
	}
sl@0
   162
sl@0
   163
// EPowerBatteryStatus
sl@0
   164
TInt GetBatteryStatus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   165
	{
sl@0
   166
	TSupplyInfoV1 info;
sl@0
   167
	TPckg<TSupplyInfoV1> infoPckg(info);
sl@0
   168
	TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
sl@0
   169
	if (r==KErrNone)
sl@0
   170
		{
sl@0
   171
		*(TInt*)aInOut=(TInt)info.iMainBatteryStatus;
sl@0
   172
		}
sl@0
   173
	return r;
sl@0
   174
	}
sl@0
   175
sl@0
   176
// EAccessoryPower
sl@0
   177
TInt GetAccessoryPowerPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   178
	{
sl@0
   179
	return UserSvr::HalFunction(EHalGroupPower, EPowerHalAcessoryPowerPresent, aInOut, NULL);
sl@0
   180
	}
sl@0
   181
sl@0
   182
// EPowerBackup
sl@0
   183
TInt GetBackupPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   184
	{
sl@0
   185
	return UserSvr::HalFunction(EHalGroupPower, EPowerHalBackupPresent, aInOut, NULL);
sl@0
   186
	}
sl@0
   187
sl@0
   188
// EPowerBackupStatus
sl@0
   189
TInt GetBackupStatus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   190
	{
sl@0
   191
	TSupplyInfoV1 info;
sl@0
   192
	TPckg<TSupplyInfoV1> infoPckg(info);
sl@0
   193
	TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
sl@0
   194
	if (r==KErrNone)
sl@0
   195
		{
sl@0
   196
		*(TInt*)aInOut=(TInt)info.iBackupBatteryStatus;
sl@0
   197
		}
sl@0
   198
	return r;
sl@0
   199
	}
sl@0
   200
sl@0
   201
// EPowerExternal
sl@0
   202
TInt GetPowerExternalState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   203
	{
sl@0
   204
	TSupplyInfoV1 info;
sl@0
   205
	TPckg<TSupplyInfoV1> infoPckg(info);
sl@0
   206
	TInt r=UserSvr::HalFunction(EHalGroupPower, EPowerHalSupplyInfo, (TAny*)&infoPckg, NULL);
sl@0
   207
	if (r==KErrNone)
sl@0
   208
		{
sl@0
   209
		*(TInt*)aInOut=(TInt)info.iExternalPowerPresent;
sl@0
   210
		}
sl@0
   211
	return r;
sl@0
   212
	}
sl@0
   213
sl@0
   214
// EKeyboardState
sl@0
   215
TInt ProcessKeyboardState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   216
	{
sl@0
   217
	if (aSet)
sl@0
   218
		return UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalSetKeyboardState, aInOut, NULL);
sl@0
   219
	return UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalKeyboardState, aInOut, NULL);
sl@0
   220
	}
sl@0
   221
sl@0
   222
// EKeyboard, EKeyboardDeviceKeys and EKeyboardAppKeys
sl@0
   223
TInt ProcessKeyboardInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
sl@0
   224
	{
sl@0
   225
	TKeyboardInfoV01 info;	
sl@0
   226
	TPckg<TKeyboardInfoV01> infoPckg(info);
sl@0
   227
	TInt r=UserSvr::HalFunction(EHalGroupKeyboard, EKeyboardHalKeyboardInfo, (TAny*)&infoPckg, NULL);
sl@0
   228
	if (KErrNone == r)
sl@0
   229
		{
sl@0
   230
		switch (aAttrib)
sl@0
   231
			{
sl@0
   232
			case HAL::EKeyboard:
sl@0
   233
				*(TInt*)aInOut=(TInt)info.iKeyboardType;
sl@0
   234
				break;
sl@0
   235
			case HAL::EKeyboardDeviceKeys:
sl@0
   236
				*(TInt*)aInOut = info.iDeviceKeys;
sl@0
   237
				break;
sl@0
   238
			case HAL::EKeyboardAppKeys:
sl@0
   239
				*(TInt*)aInOut = info.iAppsKeys;
sl@0
   240
				break;
sl@0
   241
			default:
sl@0
   242
				__ASSERT_DEBUG(EFalse, Panic(EInvalidAttribKeybd));
sl@0
   243
				break;
sl@0
   244
			}
sl@0
   245
		}
sl@0
   246
	return r;
sl@0
   247
	}
sl@0
   248
sl@0
   249
// EKeyboardClick
sl@0
   250
TInt GetKeyboardClickPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   251
	{
sl@0
   252
	TInt state=0;
sl@0
   253
	TInt r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickEnabled, (TAny*)state, NULL);
sl@0
   254
	*(TInt*)aInOut=(r==KErrNone)?1:0;  // if there is a clicking device we should be able to get its state
sl@0
   255
	return KErrNone;
sl@0
   256
	}
sl@0
   257
sl@0
   258
// EKeyboardClickVolumeMax
sl@0
   259
TInt GetKeyboardClickVolumeMax(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   260
	{
sl@0
   261
	return UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickVolumeMax, aInOut, NULL);
sl@0
   262
	}
sl@0
   263
sl@0
   264
// EKeyboardClickState
sl@0
   265
TInt ProcessKeyboardClickState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   266
	{
sl@0
   267
	if (aSet)
sl@0
   268
		return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetKeyClickEnabled, aInOut, NULL);
sl@0
   269
	return UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickEnabled, aInOut, NULL);
sl@0
   270
	}
sl@0
   271
sl@0
   272
// EKeyboardClickVolume
sl@0
   273
TInt ProcessKeyboardClickVolume(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   274
	{
sl@0
   275
	TInt r;
sl@0
   276
	if (aSet)
sl@0
   277
		{
sl@0
   278
		TInt vol=(TInt)aInOut;
sl@0
   279
		TInt volMax=0;
sl@0
   280
		r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickVolumeMax, (TAny*)volMax, NULL);
sl@0
   281
		if (r!=KErrNone)
sl@0
   282
			return r;
sl@0
   283
		if (vol<0 || vol>volMax)
sl@0
   284
			return KErrArgument;
sl@0
   285
		return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetKeyClickLoud, (TAny*)vol, NULL);
sl@0
   286
		}
sl@0
   287
	TBool state;
sl@0
   288
	r=UserSvr::HalFunction(EHalGroupSound, ESoundHalKeyClickLoud, (TAny*)&state, NULL);
sl@0
   289
	if (r==KErrNone)
sl@0
   290
		{
sl@0
   291
		*(TInt*)aInOut=state?1:0;
sl@0
   292
		}
sl@0
   293
	return r;
sl@0
   294
	}
sl@0
   295
sl@0
   296
// EDisplayContrast
sl@0
   297
TInt ProcessDisplayContrast(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   298
	{
sl@0
   299
	if (aSet)
sl@0
   300
		{
sl@0
   301
		TInt x=(TInt)aInOut;
sl@0
   302
		return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetDisplayContrast, (TAny*)x, NULL, aDeviceNumber);
sl@0
   303
		}
sl@0
   304
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalDisplayContrast, aInOut, NULL, aDeviceNumber);
sl@0
   305
	}
sl@0
   306
sl@0
   307
// EDisplayBrightness
sl@0
   308
TInt ProcessDisplayBrightness(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   309
	{
sl@0
   310
	if (aSet)
sl@0
   311
		{
sl@0
   312
		TInt x=(TInt)aInOut;
sl@0
   313
		return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetDisplayBrightness, (TAny*)x, NULL, aDeviceNumber);
sl@0
   314
		}
sl@0
   315
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalDisplayBrightness, aInOut, NULL, aDeviceNumber);
sl@0
   316
	}
sl@0
   317
sl@0
   318
sl@0
   319
// EDisplayPaletteEntry
sl@0
   320
TInt ProcessDisplayPaletteEntry(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
sl@0
   321
	{
sl@0
   322
sl@0
   323
	__ASSERT_DEBUG(HAL::EDisplayPaletteEntry == aAttrib, Panic(EInvalidAttributeDP));
sl@0
   324
sl@0
   325
	if (aSet)
sl@0
   326
		{
sl@0
   327
		TInt entry =  ((TInt)aInOut >> 24) & 0xFF;
sl@0
   328
		TInt color = ((TInt)aInOut) & 0xFFFFFF;
sl@0
   329
		return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetPaletteEntry, (TAny*)entry, (TAny*)color, aDeviceNumber);
sl@0
   330
		}
sl@0
   331
	TInt e = (*(TInt*)aInOut) & 0xFF;
sl@0
   332
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalPaletteEntry, &e, aInOut, aDeviceNumber);
sl@0
   333
	}
sl@0
   334
sl@0
   335
// EDisplayNumModes
sl@0
   336
TInt ProcessDisplayNumModes(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
sl@0
   337
	{
sl@0
   338
	__ASSERT_DEBUG(HAL::EDisplayNumModes == aAttrib, Panic(EInvalidAttributeDNM));
sl@0
   339
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalModeCount, aInOut, NULL, aDeviceNumber);
sl@0
   340
	}
sl@0
   341
sl@0
   342
// EDisplayMode
sl@0
   343
TInt ProcessDisplayMode(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
sl@0
   344
	{
sl@0
   345
	__ASSERT_DEBUG(HAL::EDisplayMode == aAttrib, Panic(EInvalidAttributeDM));
sl@0
   346
	return UserSvr::HalFunction(EHalGroupDisplay, aSet?EDisplayHalSetMode:EDisplayHalMode, aInOut, NULL, aDeviceNumber);
sl@0
   347
	}
sl@0
   348
sl@0
   349
// EDisplayState
sl@0
   350
TInt ProcessDisplayState(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
sl@0
   351
	{
sl@0
   352
	__ASSERT_DEBUG(HAL::EDisplayState == aAttrib, Panic(EInvalidAttributeDS));
sl@0
   353
sl@0
   354
	if (aSet)
sl@0
   355
		{
sl@0
   356
		TBool on = (TBool)aInOut;
sl@0
   357
		return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetState, (TAny*)on, NULL, aDeviceNumber);
sl@0
   358
		}
sl@0
   359
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalState, aInOut, NULL, aDeviceNumber);
sl@0
   360
	
sl@0
   361
	}
sl@0
   362
sl@0
   363
// EDisplayColors
sl@0
   364
TInt ProcessDisplayColors(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
sl@0
   365
	{
sl@0
   366
	__ASSERT_DEBUG(HAL::EDisplayColors == aAttrib, Panic(EInvalidAttributeDC));
sl@0
   367
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalColors, aInOut, NULL, aDeviceNumber);
sl@0
   368
	}
sl@0
   369
sl@0
   370
// EDisplayBrightnessMax
sl@0
   371
TInt ProcessDisplayMaxBrightness(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
sl@0
   372
	{
sl@0
   373
	__ASSERT_DEBUG(HAL::EDisplayBrightnessMax == aAttrib, Panic(EInvalidAttributeMB));
sl@0
   374
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalMaxDisplayBrightness, aInOut, NULL, aDeviceNumber);
sl@0
   375
	}
sl@0
   376
sl@0
   377
// EDisplayContrastMax
sl@0
   378
TInt ProcessDisplayMaxContrast(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool /*aSet*/, TAny* aInOut)
sl@0
   379
	{
sl@0
   380
	__ASSERT_DEBUG(HAL::EDisplayContrastMax == aAttrib, Panic(EInvalidAttributeMC));
sl@0
   381
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalMaxDisplayContrast, aInOut, NULL, aDeviceNumber);
sl@0
   382
	}
sl@0
   383
sl@0
   384
/*
sl@0
   385
TInt ProcessSecureDisplayCurrentModeInfo(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
sl@0
   386
	{
sl@0
   387
	//only info obtainable about secure display is the address
sl@0
   388
	__ASSERT_DEBUG(HAL::ESecureDisplayMemoryAddress == aAttrib, Panic(EInvalidAttributeSDMA));
sl@0
   389
sl@0
   390
	TVideoInfoV01 info;
sl@0
   391
	TPckg<TVideoInfoV01> infoPckg(info);
sl@0
   392
	TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalCurrentModeInfo, (TAny*)&infoPckg, (TAny*)ETrue, aDeviceNumber);
sl@0
   393
	if (KErrNone == r)
sl@0
   394
		*(TInt*)aInOut = info.iVideoAddress;
sl@0
   395
sl@0
   396
	return r;
sl@0
   397
	}
sl@0
   398
*/
sl@0
   399
sl@0
   400
TInt ProcessDisplayCurrentModeInfo(TInt aDeviceNumber, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
sl@0
   401
	{
sl@0
   402
	TVideoInfoV01 info;
sl@0
   403
	TPckg<TVideoInfoV01> infoPckg(info);
sl@0
   404
	TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalCurrentModeInfo, (TAny*)&infoPckg, (TAny*)EFalse, aDeviceNumber);
sl@0
   405
	if (KErrNone == r)
sl@0
   406
		{
sl@0
   407
		switch (aAttrib)
sl@0
   408
			{
sl@0
   409
			case HAL::EDisplayXPixels:
sl@0
   410
				*(TInt*)aInOut = info.iSizeInPixels.iWidth;
sl@0
   411
				break;
sl@0
   412
sl@0
   413
			case HAL::EDisplayYPixels:
sl@0
   414
				*(TInt*)aInOut = info.iSizeInPixels.iHeight;
sl@0
   415
				break;
sl@0
   416
			
sl@0
   417
			case HAL::EDisplayXTwips:
sl@0
   418
				*(TInt*)aInOut = info.iSizeInTwips.iWidth;
sl@0
   419
				break;
sl@0
   420
			
sl@0
   421
			case HAL::EDisplayYTwips:
sl@0
   422
				*(TInt*)aInOut = info.iSizeInTwips.iHeight;
sl@0
   423
				break;
sl@0
   424
			
sl@0
   425
			case HAL::EDisplayMemoryAddress:
sl@0
   426
				if (info.iVideoAddress == 0)	//if this is true, the actual address is returned by EDisplayHalGetDisplayMemoryAddress
sl@0
   427
					{
sl@0
   428
					r = UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalGetDisplayMemoryAddress, aInOut, (TAny*)EFalse, aDeviceNumber);
sl@0
   429
					}
sl@0
   430
				else
sl@0
   431
					{
sl@0
   432
					*(TInt*)aInOut = info.iVideoAddress;
sl@0
   433
					}
sl@0
   434
				break;
sl@0
   435
sl@0
   436
			case HAL::EDisplayIsPixelOrderRGB:
sl@0
   437
				*(TInt*)aInOut = info.iIsPixelOrderRGB;
sl@0
   438
				break;
sl@0
   439
sl@0
   440
			case HAL::EDisplayIsPixelOrderLandscape:
sl@0
   441
				*(TInt*)aInOut = info.iIsPixelOrderLandscape;
sl@0
   442
				break;
sl@0
   443
sl@0
   444
			default:
sl@0
   445
				__ASSERT_DEBUG(EFalse, Panic(EInvalidAttributeCMI));
sl@0
   446
				break;
sl@0
   447
sl@0
   448
			}
sl@0
   449
		}
sl@0
   450
	return r;
sl@0
   451
	}
sl@0
   452
sl@0
   453
sl@0
   454
TInt ProcessDisplaySpecifiedModeInfo(TInt aDeviceNumber, TInt aAttrib, TBool __DEBUG_ONLY(aSet), TAny* aInOut)
sl@0
   455
	{
sl@0
   456
sl@0
   457
	__ASSERT_DEBUG(!aSet, Panic(EInvalidAttributeSMI2));
sl@0
   458
sl@0
   459
sl@0
   460
	TVideoInfoV01 info;
sl@0
   461
	TPckg<TVideoInfoV01> infoPckg(info);
sl@0
   462
	TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSpecifiedModeInfo, aInOut, (TAny*)&infoPckg, aDeviceNumber);
sl@0
   463
	if (KErrNone == r)
sl@0
   464
		{
sl@0
   465
		switch (aAttrib)
sl@0
   466
			{
sl@0
   467
			case HAL::EDisplayIsMono:
sl@0
   468
				*(TInt*)aInOut = info.iIsMono;
sl@0
   469
				break;
sl@0
   470
			
sl@0
   471
			case HAL::EDisplayIsPalettized:
sl@0
   472
				*(TInt*)aInOut = info.iIsPalettized;
sl@0
   473
				break;
sl@0
   474
sl@0
   475
			case HAL::EDisplayBitsPerPixel:
sl@0
   476
				*(TInt*)aInOut = info.iBitsPerPixel;
sl@0
   477
				break;
sl@0
   478
sl@0
   479
			case HAL::EDisplayOffsetToFirstPixel:
sl@0
   480
				*(TInt*)aInOut = info.iOffsetToFirstPixel;
sl@0
   481
				break;
sl@0
   482
sl@0
   483
			case HAL::EDisplayOffsetBetweenLines:
sl@0
   484
				*(TInt*)aInOut = info.iOffsetBetweenLines;
sl@0
   485
				break;
sl@0
   486
sl@0
   487
			default:
sl@0
   488
				__ASSERT_DEBUG(EFalse, Panic(EInvalidAttributeSMI));
sl@0
   489
				break;
sl@0
   490
			}
sl@0
   491
		}
sl@0
   492
	return r;
sl@0
   493
	}
sl@0
   494
sl@0
   495
//ESecureDisplay
sl@0
   496
/*
sl@0
   497
TInt ProcessSecureDisplay(TInt aDeviceNumber, TInt __DEBUG_ONLY(aAttrib), TBool aSet, TAny* aInOut)
sl@0
   498
	{
sl@0
   499
	__ASSERT_DEBUG(HAL::ESecureDisplay == aAttrib, Panic(EInvalidAttributeSD));
sl@0
   500
sl@0
   501
	if (aSet)
sl@0
   502
		return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetSecure, aInOut, NULL, aDeviceNumber);
sl@0
   503
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSecure, aInOut, NULL, aDeviceNumber);
sl@0
   504
	}
sl@0
   505
*/
sl@0
   506
sl@0
   507
// EBacklight
sl@0
   508
TInt GetBacklightPresent(TInt aDeviceNumber, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   509
	{
sl@0
   510
	TInt state=0;
sl@0
   511
	TInt r=UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalBacklightOn, (TAny*)&state, NULL, aDeviceNumber);
sl@0
   512
	*(TInt*)aInOut=(r==KErrNone)?1:0;  // if there is a backlight we should be able to get its state
sl@0
   513
	return KErrNone;
sl@0
   514
	}
sl@0
   515
sl@0
   516
// EBacklightState
sl@0
   517
TInt ProcessBacklightState(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   518
	{
sl@0
   519
	if (aSet)
sl@0
   520
		return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalSetBacklightOn, aInOut, NULL, aDeviceNumber);
sl@0
   521
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalBacklightOn, aInOut, NULL, aDeviceNumber);
sl@0
   522
	}
sl@0
   523
sl@0
   524
// EPen
sl@0
   525
TInt GetPenPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   526
	{
sl@0
   527
	TDigitiserInfoV01Buf buf;
sl@0
   528
	TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYInfo, (TAny*)&buf, NULL);
sl@0
   529
	*(TInt*)aInOut=(r==KErrNone)?1:0;  // if there is a pen device we should be able to get info out of it
sl@0
   530
	return KErrNone;
sl@0
   531
	}
sl@0
   532
sl@0
   533
// EPenX and EPenY
sl@0
   534
TInt ProcessPenInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
sl@0
   535
	{
sl@0
   536
	TDigitiserInfoV01 info;
sl@0
   537
	TPckg<TDigitiserInfoV01> infoPckg(info);
sl@0
   538
	TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYInfo, (TAny*)&infoPckg, NULL);
sl@0
   539
	if (KErrNone == r)
sl@0
   540
		{
sl@0
   541
		switch (aAttrib)
sl@0
   542
			{
sl@0
   543
			case HAL::EPenX:
sl@0
   544
				*(TInt*)aInOut=(TInt)info.iDigitiserSize.iWidth;
sl@0
   545
				break;
sl@0
   546
			case HAL::EPenY:
sl@0
   547
				*(TInt*)aInOut = info.iDigitiserSize.iHeight;
sl@0
   548
				break;
sl@0
   549
			default:
sl@0
   550
				__ASSERT_DEBUG(EFalse, Panic(EInvalidAttribPen));
sl@0
   551
				break;
sl@0
   552
			}
sl@0
   553
		}
sl@0
   554
	return r;
sl@0
   555
	}
sl@0
   556
sl@0
   557
// EPenState
sl@0
   558
TInt ProcessPenState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   559
	{
sl@0
   560
	if (aSet)
sl@0
   561
		return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetXYState, aInOut, NULL);
sl@0
   562
	return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalXYState, aInOut, NULL);
sl@0
   563
	}
sl@0
   564
sl@0
   565
// EPenDisplayOn
sl@0
   566
TInt ProcessPenDisplayOnState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   567
	{
sl@0
   568
	if (aSet)
sl@0
   569
		return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetPointerSwitchesOn, aInOut, NULL);
sl@0
   570
	return UserSvr::HalFunction(EHalGroupPower, EPowerHalPointerSwitchesOn, aInOut, NULL);
sl@0
   571
	}
sl@0
   572
sl@0
   573
// EPenClick
sl@0
   574
TInt GetPenClickPresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   575
	{
sl@0
   576
	TInt state=0;
sl@0
   577
	TInt r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickEnabled, (TAny*)state, NULL);
sl@0
   578
	*(TInt*)aInOut=(r==KErrNone)?1:0;  // if there is a clicking device we should be able to get its state
sl@0
   579
	return KErrNone;
sl@0
   580
	}
sl@0
   581
sl@0
   582
// EPenClickVolumeMax
sl@0
   583
TInt GetPenClickVolumeMax(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   584
	{
sl@0
   585
	return UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickVolumeMax, aInOut, NULL);
sl@0
   586
	}
sl@0
   587
sl@0
   588
// EPenClickState
sl@0
   589
TInt ProcessPenClickState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   590
	{
sl@0
   591
	if (aSet)
sl@0
   592
		return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetPointerClickEnabled, aInOut, NULL);
sl@0
   593
	return UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickEnabled, aInOut, NULL);
sl@0
   594
	}
sl@0
   595
sl@0
   596
// EPenClickVolume
sl@0
   597
TInt ProcessPenClickVolume(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   598
	{
sl@0
   599
	TInt r;
sl@0
   600
	if (aSet)
sl@0
   601
		{
sl@0
   602
		TInt vol=(TInt)aInOut;
sl@0
   603
		TInt volMax=0;
sl@0
   604
		r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickVolumeMax, (TAny*)volMax, NULL);
sl@0
   605
		if (r!=KErrNone)
sl@0
   606
			return r;
sl@0
   607
		if (vol<0 || vol>volMax)	
sl@0
   608
			return KErrArgument;
sl@0
   609
		return UserSvr::HalFunction(EHalGroupSound, ESoundHalSetPointerClickLoud, (TAny*)vol, NULL);
sl@0
   610
		}
sl@0
   611
	TBool state;
sl@0
   612
	r=UserSvr::HalFunction(EHalGroupSound, ESoundHalPointerClickLoud, (TAny*)&state, NULL);
sl@0
   613
	if (r==KErrNone)
sl@0
   614
		{
sl@0
   615
		*(TInt*)aInOut=state?1:0;
sl@0
   616
		}
sl@0
   617
	return r;
sl@0
   618
	}
sl@0
   619
sl@0
   620
// ECaseSwitchDisplayOn
sl@0
   621
TInt ProcessCaseSwitchDisplayOnState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   622
	{
sl@0
   623
	if (aSet)
sl@0
   624
		return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetCaseOpenSwitchesOn, aInOut, NULL);
sl@0
   625
	return UserSvr::HalFunction(EHalGroupPower, EPowerHalCaseOpenSwitchesOn, aInOut, NULL);
sl@0
   626
	}
sl@0
   627
sl@0
   628
// ECaseSwitchDisplayOff
sl@0
   629
TInt ProcessCaseSwitchDisplayOffState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   630
	{
sl@0
   631
	if (aSet)
sl@0
   632
		return UserSvr::HalFunction(EHalGroupPower, EPowerHalSetCaseCloseSwitchesOff, aInOut, NULL);
sl@0
   633
	return UserSvr::HalFunction(EHalGroupPower, EPowerHalCaseCloseSwitchesOff, aInOut, NULL);
sl@0
   634
	}
sl@0
   635
sl@0
   636
// ELEDs
sl@0
   637
TInt GetLedCaps(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   638
	{
sl@0
   639
	TVariantInfoV01 info;
sl@0
   640
	TPckg<TVariantInfoV01> infoPckg(info);
sl@0
   641
	TInt r=UserSvr::HalFunction(EHalGroupVariant, EVariantHalVariantInfo, (TAny*)&infoPckg, NULL);
sl@0
   642
	if (r==KErrNone)
sl@0
   643
		{
sl@0
   644
		*(TInt*)aInOut=(info.iLedCapabilities)>>16;		// upper half for number of Leds, lower half for colour capabilities
sl@0
   645
		}
sl@0
   646
	return r;
sl@0
   647
	}
sl@0
   648
sl@0
   649
// ELEDmask
sl@0
   650
TInt ProcessLEDMask(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   651
	{
sl@0
   652
	if (aSet)
sl@0
   653
		{
sl@0
   654
		return UserSvr::HalFunction(EHalGroupVariant, EVariantHalLedMaskSet, aInOut, NULL);
sl@0
   655
		}
sl@0
   656
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalLedMaskGet, aInOut, NULL);
sl@0
   657
	}
sl@0
   658
sl@0
   659
// ESwitches
sl@0
   660
TInt GetSwitches(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   661
	{
sl@0
   662
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalSwitches, aInOut, NULL);
sl@0
   663
	}
sl@0
   664
sl@0
   665
// EMouse
sl@0
   666
TInt GetMousePresent(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   667
	{
sl@0
   668
	TMouseInfoV01Buf buf;
sl@0
   669
	TInt r=UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseInfo, (TAny*)&buf, NULL);
sl@0
   670
	*(TInt*)aInOut=(r==KErrNone)?1:0;  // if there is a mouse device we should be able to get info out of it
sl@0
   671
	return KErrNone;
sl@0
   672
	}
sl@0
   673
sl@0
   674
// EMouseX, EMouseY and EMouseButtons
sl@0
   675
TInt ProcessMouseInfo(TInt /*aDeviceNumber*/, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
sl@0
   676
	{
sl@0
   677
	TMouseInfoV01 info;
sl@0
   678
	TPckg<TMouseInfoV01> infoPckg(info);
sl@0
   679
	TInt r=UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseInfo, (TAny*)&infoPckg, NULL);
sl@0
   680
	if (KErrNone == r)
sl@0
   681
		{
sl@0
   682
		switch (aAttrib)
sl@0
   683
			{
sl@0
   684
			case HAL::EMouseX:
sl@0
   685
				*(TInt*)aInOut=(TInt)info.iMouseAreaSize.iWidth;
sl@0
   686
				break;
sl@0
   687
			case HAL::EMouseY:
sl@0
   688
				*(TInt*)aInOut = info.iMouseAreaSize.iHeight;
sl@0
   689
				break;
sl@0
   690
			case HAL::EMouseButtons:
sl@0
   691
				*(TInt*)aInOut=(TInt)info.iMouseButtons;
sl@0
   692
				break;
sl@0
   693
			default:
sl@0
   694
				__ASSERT_DEBUG(EFalse, Panic(EInvalidAttribMouse));
sl@0
   695
				break;
sl@0
   696
			}
sl@0
   697
		}
sl@0
   698
	return r;
sl@0
   699
	}
sl@0
   700
sl@0
   701
// EMouseState
sl@0
   702
TInt ProcessMouseState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   703
	{
sl@0
   704
	if (aSet)
sl@0
   705
		return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseState, aInOut, NULL);
sl@0
   706
	return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseState, aInOut, NULL);
sl@0
   707
	}
sl@0
   708
sl@0
   709
// EMouseSpeed
sl@0
   710
TInt ProcessMouseSpeed(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   711
	{
sl@0
   712
	if (aSet)
sl@0
   713
		{
sl@0
   714
		TInt speed=(TInt)aInOut;
sl@0
   715
		if (speed<0 || speed>255)
sl@0
   716
			return KErrArgument;
sl@0
   717
		return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseSpeed, (TAny*)speed, NULL);
sl@0
   718
		}
sl@0
   719
	return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseSpeed, aInOut, NULL);
sl@0
   720
	}
sl@0
   721
sl@0
   722
// EMouseAcceleration
sl@0
   723
TInt ProcessMouseAcceleration(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   724
	{
sl@0
   725
	if (aSet)
sl@0
   726
		{
sl@0
   727
		TInt acc=(TInt)aInOut;
sl@0
   728
		if (acc<0 || acc>255)
sl@0
   729
			return KErrArgument;
sl@0
   730
		return UserSvr::HalFunction(EHalGroupMouse, EMouseHalSetMouseAcceleration, (TAny*)acc, NULL);
sl@0
   731
		}
sl@0
   732
	return UserSvr::HalFunction(EHalGroupMouse, EMouseHalMouseAcceleration, aInOut, NULL);
sl@0
   733
	}
sl@0
   734
sl@0
   735
// EMouseButtonState
sl@0
   736
TInt GetMouseButtonState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* /*aInOut*/)
sl@0
   737
	{
sl@0
   738
	return KErrNotSupported;
sl@0
   739
	}
sl@0
   740
sl@0
   741
// EDebugPort
sl@0
   742
TInt ProcessDebugPort(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   743
	{
sl@0
   744
	return UserSvr::HalFunction(EHalGroupVariant, aSet ? EVariantHalDebugPortSet : EVariantHalDebugPortGet, aInOut, NULL);
sl@0
   745
	}
sl@0
   746
sl@0
   747
// ECustomRestart
sl@0
   748
TInt ProcessCustomRestart(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   749
	{
sl@0
   750
	if (!aSet)
sl@0
   751
		return KErrNotSupported;
sl@0
   752
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCustomRestart, aInOut, NULL);
sl@0
   753
	}
sl@0
   754
sl@0
   755
// ECustomRestartReason
sl@0
   756
TInt ProcessCustomRestartReason(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   757
	{
sl@0
   758
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCustomRestartReason, aInOut, NULL);
sl@0
   759
	}
sl@0
   760
sl@0
   761
// EHardwareFloatingPoint
sl@0
   762
TInt GetHardwareFloatingPoint(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   763
	{
sl@0
   764
	return UserSvr::HalFunction(EHalGroupKernel, EKernelHalHardwareFloatingPoint, aInOut, NULL);
sl@0
   765
	}
sl@0
   766
sl@0
   767
// ETimeNonSecureOffset
sl@0
   768
TInt NonsecureClockOffset(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   769
	{
sl@0
   770
	TInt kernelHalFnId = aSet ? EKernelHalSetNonsecureClockOffset : EKernelHalGetNonsecureClockOffset;
sl@0
   771
	return UserSvr::HalFunction(EHalGroupKernel, kernelHalFnId, aInOut, NULL);
sl@0
   772
	}
sl@0
   773
sl@0
   774
// ECaseState
sl@0
   775
TInt GetCaseState(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   776
	{
sl@0
   777
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalCaseState, aInOut, NULL);
sl@0
   778
	}
sl@0
   779
sl@0
   780
// EPersistStartupModeKernel
sl@0
   781
TInt ProcessPersistStartupMode(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   782
	{
sl@0
   783
	return UserSvr::HalFunction(EHalGroupVariant, aSet ? EVariantHalPersistStartupMode : EVariantHalGetPersistedStartupMode, aInOut, NULL);
sl@0
   784
	}
sl@0
   785
sl@0
   786
// EAvailableCustomRestartReasons
sl@0
   787
TInt GetMaximumCustomRestartReasons(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   788
	{
sl@0
   789
	if (aSet)
sl@0
   790
		return KErrNotSupported;
sl@0
   791
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalGetMaximumCustomRestartReasons, aInOut, NULL);
sl@0
   792
	}
sl@0
   793
sl@0
   794
// EMaximumRestartStartupModes
sl@0
   795
TInt GetMaximumRestartStartupModes(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   796
	{
sl@0
   797
	if (aSet)
sl@0
   798
		return KErrNotSupported;
sl@0
   799
	return UserSvr::HalFunction(EHalGroupVariant, EVariantHalGetMaximumRestartStartupModes, aInOut, NULL);
sl@0
   800
	}
sl@0
   801
sl@0
   802
sl@0
   803
// EPointer3DThetaSupported, EPointer3PhiSupported, EPointer3DRotationSupported, EPointer3DPressureSupported,
sl@0
   804
//EPointer3DProximityStep,EPointerMaxPointers,EPointer3DMaxPressure,EPointer3DPressureStep
sl@0
   805
sl@0
   806
TInt ProcessAdvancedPointer(TInt aDeviceNumber, TInt aAttrib, TBool /*aSet*/, TAny* aInOut)
sl@0
   807
	{
sl@0
   808
	TDigitiserInfoV02 info;	
sl@0
   809
	TPckg<TDigitiserInfoV02> infoPckg(info);
sl@0
   810
sl@0
   811
	TInt r=UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo,(TAny*)&infoPckg, NULL,aDeviceNumber);
sl@0
   812
	if (KErrNone == r)
sl@0
   813
		{
sl@0
   814
		switch (aAttrib)
sl@0
   815
			{
sl@0
   816
			case HAL::EPointer3DThetaSupported:
sl@0
   817
				*(TInt*)aInOut=(TInt)info.iThetaSupported;
sl@0
   818
				break;
sl@0
   819
sl@0
   820
			case HAL::EPointer3DPhiSupported:
sl@0
   821
				*(TInt*)aInOut = info.iPhiSupported;
sl@0
   822
				break;
sl@0
   823
sl@0
   824
			case HAL::EPointer3DRotationSupported:
sl@0
   825
				*(TInt*)aInOut = info.iAlphaSupported;
sl@0
   826
				break;
sl@0
   827
sl@0
   828
			case HAL::EPointer3DPressureSupported:
sl@0
   829
				*(TInt*)aInOut = info.iPressureSupported;
sl@0
   830
				break;
sl@0
   831
sl@0
   832
			case HAL::EPointer3DProximityStep:
sl@0
   833
				*(TInt*)aInOut = info.iProximityStep;
sl@0
   834
				break;
sl@0
   835
				
sl@0
   836
			case HAL::EPointerMaxPointers:
sl@0
   837
				*(TInt*)aInOut = info.iMaxPointers;
sl@0
   838
				break;
sl@0
   839
				
sl@0
   840
			case HAL::EPointer3DMaxPressure:
sl@0
   841
				*(TInt*)aInOut = info.iMaxPressure;
sl@0
   842
				break;
sl@0
   843
sl@0
   844
			case HAL::EPointer3DPressureStep:
sl@0
   845
				*(TInt*)aInOut = info.iPressureStep;
sl@0
   846
				break;
sl@0
   847
sl@0
   848
			default:
sl@0
   849
				__ASSERT_DEBUG(EFalse, Panic(EInvalidAttrib3DPointer));
sl@0
   850
				break;
sl@0
   851
			}
sl@0
   852
		}
sl@0
   853
	return r;
sl@0
   854
	}
sl@0
   855
sl@0
   856
// EPointer3D
sl@0
   857
TInt Get3DPointerPresent(TInt aDeviceNumber, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   858
	{
sl@0
   859
	return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DPointer, aInOut, NULL, aDeviceNumber);
sl@0
   860
	}
sl@0
   861
sl@0
   862
//EPointer3DMaxProximity
sl@0
   863
TInt Process3DRange(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   864
	{
sl@0
   865
	if (aSet)
sl@0
   866
		return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetZRange, aInOut, NULL, aDeviceNumber);
sl@0
   867
	else
sl@0
   868
		{
sl@0
   869
		TDigitiserInfoV02 info;
sl@0
   870
		
sl@0
   871
		TPckg<TDigitiserInfoV02> infoPckg(info);
sl@0
   872
		TInt r =UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo,(TAny*)&infoPckg, NULL, aDeviceNumber);
sl@0
   873
		if(r==KErrNone)
sl@0
   874
			{
sl@0
   875
			*(TInt*)aInOut=info.iZRange;
sl@0
   876
			}
sl@0
   877
		return r;
sl@0
   878
		}
sl@0
   879
	}
sl@0
   880
sl@0
   881
// EPointerNumberOfPointers
sl@0
   882
TInt ProcessNumberOfPointers(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   883
	{
sl@0
   884
	if (aSet)
sl@0
   885
		return UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHalSetNumberOfPointers, aInOut, NULL, aDeviceNumber);
sl@0
   886
	else
sl@0
   887
		{
sl@0
   888
		TDigitiserInfoV02 info;
sl@0
   889
		TPckg<TDigitiserInfoV02> infoPckg(info);
sl@0
   890
		TInt r =UserSvr::HalFunction(EHalGroupDigitiser, EDigitiserHal3DInfo, (TAny*)&infoPckg, NULL, aDeviceNumber);
sl@0
   891
		if(r==KErrNone)
sl@0
   892
			{
sl@0
   893
			*(TInt*)aInOut=info.iNumberOfPointers;		
sl@0
   894
			}
sl@0
   895
		return r;
sl@0
   896
		}
sl@0
   897
	}
sl@0
   898
sl@0
   899
// ENanoTickPeriod
sl@0
   900
TInt ProcessNanoTickPeriod(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   901
	{
sl@0
   902
	return UserSvr::HalFunction(EHalGroupKernel,EKernelHalNTickPeriod, aInOut, NULL);
sl@0
   903
	}
sl@0
   904
sl@0
   905
// EFastCounterFrequency
sl@0
   906
TInt ProcessFastCounterFrequency(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
sl@0
   907
	{
sl@0
   908
	return UserSvr::HalFunction(EHalGroupKernel,EKernelHalFastCounterFrequency, aInOut, NULL);
sl@0
   909
	}
sl@0
   910
sl@0
   911
//EDisplayMemoryHandle
sl@0
   912
TInt GetDisplayMemoryHandle(TInt aDeviceNumber, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   913
	{
sl@0
   914
	if (aSet)
sl@0
   915
		{
sl@0
   916
		return KErrNotSupported;
sl@0
   917
		}
sl@0
   918
	return UserSvr::HalFunction(EHalGroupDisplay, EDisplayHalGetDisplayMemoryHandle, aInOut, NULL, aDeviceNumber);
sl@0
   919
	}
sl@0
   920
sl@0
   921
//ENumCpus
sl@0
   922
TInt GetNumCpus(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool aSet, TAny* aInOut)
sl@0
   923
	{
sl@0
   924
	if (aSet)
sl@0
   925
		{
sl@0
   926
		return KErrNotSupported;
sl@0
   927
		}
sl@0
   928
	*(TInt*)aInOut=UserSvr::HalFunction(EHalGroupKernel, EKernelHalNumLogicalCpus, NULL, NULL);
sl@0
   929
	return KErrNone;
sl@0
   930
	}
sl@0
   931