camerauis/cameraxui/cxengine/tsrc/unit/unittest_cxememorymonitor/hal.h
author hgs
Thu, 15 Jul 2010 01:53:45 +0300
changeset 42 feebad15db8c
permissions -rw-r--r--
201027_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
42
feebad15db8c 201027_1
hgs
parents:
diff changeset
     1
// Copyright (c) 1995-2010 Nokia Corporation and/or its subsidiary(-ies).
feebad15db8c 201027_1
hgs
parents:
diff changeset
     2
// All rights reserved.
feebad15db8c 201027_1
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
feebad15db8c 201027_1
hgs
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
feebad15db8c 201027_1
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
feebad15db8c 201027_1
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
feebad15db8c 201027_1
hgs
parents:
diff changeset
     7
//
feebad15db8c 201027_1
hgs
parents:
diff changeset
     8
// Initial Contributors:
feebad15db8c 201027_1
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    10
//
feebad15db8c 201027_1
hgs
parents:
diff changeset
    11
// Contributors:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    12
//
feebad15db8c 201027_1
hgs
parents:
diff changeset
    13
// Description:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    14
// Stub class for testing purposes
feebad15db8c 201027_1
hgs
parents:
diff changeset
    15
// 
feebad15db8c 201027_1
hgs
parents:
diff changeset
    16
// WARNING: This file contains some APIs which are internal and are subject
feebad15db8c 201027_1
hgs
parents:
diff changeset
    17
//          to change without notice. Such APIs should therefore not be used
feebad15db8c 201027_1
hgs
parents:
diff changeset
    18
//          outside the Kernel and Hardware Services package.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    19
//
feebad15db8c 201027_1
hgs
parents:
diff changeset
    20
feebad15db8c 201027_1
hgs
parents:
diff changeset
    21
#ifndef __HAL_H__
feebad15db8c 201027_1
hgs
parents:
diff changeset
    22
#define __HAL_H__
feebad15db8c 201027_1
hgs
parents:
diff changeset
    23
feebad15db8c 201027_1
hgs
parents:
diff changeset
    24
#include <e32def.h>
feebad15db8c 201027_1
hgs
parents:
diff changeset
    25
#include <e32property.h>
feebad15db8c 201027_1
hgs
parents:
diff changeset
    26
#include "hal_data.h"
feebad15db8c 201027_1
hgs
parents:
diff changeset
    27
feebad15db8c 201027_1
hgs
parents:
diff changeset
    28
/**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    29
@publishedPartner
feebad15db8c 201027_1
hgs
parents:
diff changeset
    30
@released
feebad15db8c 201027_1
hgs
parents:
diff changeset
    31
feebad15db8c 201027_1
hgs
parents:
diff changeset
    32
A set of static functions to get and set hardware attributes.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    33
feebad15db8c 201027_1
hgs
parents:
diff changeset
    34
@see HALData
feebad15db8c 201027_1
hgs
parents:
diff changeset
    35
*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
    36
class HAL : public HALData
feebad15db8c 201027_1
hgs
parents:
diff changeset
    37
	{
feebad15db8c 201027_1
hgs
parents:
diff changeset
    38
public:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    39
feebad15db8c 201027_1
hgs
parents:
diff changeset
    40
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    41
    Synonyms for the attribute properties
feebad15db8c 201027_1
hgs
parents:
diff changeset
    42
    HALData::TAttributeProperty, and used in SEntry.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    43
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    44
	enum TEntryProperty
feebad15db8c 201027_1
hgs
parents:
diff changeset
    45
		{
feebad15db8c 201027_1
hgs
parents:
diff changeset
    46
		/**		
feebad15db8c 201027_1
hgs
parents:
diff changeset
    47
		When set, means that an attribute is meaningful on this device.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    48
		*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
    49
		EEntryValid=0x1,
feebad15db8c 201027_1
hgs
parents:
diff changeset
    50
		
feebad15db8c 201027_1
hgs
parents:
diff changeset
    51
		
feebad15db8c 201027_1
hgs
parents:
diff changeset
    52
		/**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    53
		When set, means that an attribute is modifiable.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    54
		*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
    55
		EEntryDynamic=0x2,
feebad15db8c 201027_1
hgs
parents:
diff changeset
    56
		};
feebad15db8c 201027_1
hgs
parents:
diff changeset
    57
    
feebad15db8c 201027_1
hgs
parents:
diff changeset
    58
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    59
    Defines an entry in the array that is returned in a call to HAL::GetAll().
feebad15db8c 201027_1
hgs
parents:
diff changeset
    60
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    61
	struct SEntry
feebad15db8c 201027_1
hgs
parents:
diff changeset
    62
		{
feebad15db8c 201027_1
hgs
parents:
diff changeset
    63
		/**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    64
		The properties of the attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    65
		
feebad15db8c 201027_1
hgs
parents:
diff changeset
    66
		@see HAL::TEntryProperty
feebad15db8c 201027_1
hgs
parents:
diff changeset
    67
		*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
    68
		TInt iProperties;
feebad15db8c 201027_1
hgs
parents:
diff changeset
    69
		
feebad15db8c 201027_1
hgs
parents:
diff changeset
    70
		/**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    71
		The attribute value.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    72
		
feebad15db8c 201027_1
hgs
parents:
diff changeset
    73
		@see HALData::TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
    74
		*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
    75
		TInt iValue;
feebad15db8c 201027_1
hgs
parents:
diff changeset
    76
		};
feebad15db8c 201027_1
hgs
parents:
diff changeset
    77
public:
feebad15db8c 201027_1
hgs
parents:
diff changeset
    78
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
    79
    Gets the value of the specified HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    80
feebad15db8c 201027_1
hgs
parents:
diff changeset
    81
    @param aAttribute The HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    82
    @param aValue	On successful return, contains the attribute value.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    83
					Some attributes may accept aValue as an input as well, to select
feebad15db8c 201027_1
hgs
parents:
diff changeset
    84
					one of several alternate values. See the documentation for the
feebad15db8c 201027_1
hgs
parents:
diff changeset
    85
					individual HAL attributes for details of this.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    86
feebad15db8c 201027_1
hgs
parents:
diff changeset
    87
    @return  KErrNone, if successful;
feebad15db8c 201027_1
hgs
parents:
diff changeset
    88
             KErrNotSupported, if the attribute is not defined in the list
feebad15db8c 201027_1
hgs
parents:
diff changeset
    89
             of attributes, or is not meaningful for this device.
feebad15db8c 201027_1
hgs
parents:
diff changeset
    90
			 KErrArgument, if aValue was invalid (for attributes
feebad15db8c 201027_1
hgs
parents:
diff changeset
    91
			 which take an argument). 
feebad15db8c 201027_1
hgs
parents:
diff changeset
    92
         
feebad15db8c 201027_1
hgs
parents:
diff changeset
    93
    @see HALData::TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
    94
    @see HALData::TAttributeProperty
feebad15db8c 201027_1
hgs
parents:
diff changeset
    95
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
    96
	static TInt Get(TAttribute aAttribute, TInt& aValue);
feebad15db8c 201027_1
hgs
parents:
diff changeset
    97
feebad15db8c 201027_1
hgs
parents:
diff changeset
    98
	
feebad15db8c 201027_1
hgs
parents:
diff changeset
    99
	/**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   100
    Sets the specified HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   101
feebad15db8c 201027_1
hgs
parents:
diff changeset
   102
    @param aAttribute The HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   103
    @param aValue      The attribute value.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   104
feebad15db8c 201027_1
hgs
parents:
diff changeset
   105
    @return  KErrNone, if successful;
feebad15db8c 201027_1
hgs
parents:
diff changeset
   106
             KErrNotSupported, if the attribute is not defined in the list
feebad15db8c 201027_1
hgs
parents:
diff changeset
   107
             of attributes, or is not meaningful for this device, or is
feebad15db8c 201027_1
hgs
parents:
diff changeset
   108
             not settable.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   109
         
feebad15db8c 201027_1
hgs
parents:
diff changeset
   110
    @see HALData::TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
   111
    @see HALData::TAttributeProperty
feebad15db8c 201027_1
hgs
parents:
diff changeset
   112
feebad15db8c 201027_1
hgs
parents:
diff changeset
   113
    @capability WriteDeviceData or other capability specified
feebad15db8c 201027_1
hgs
parents:
diff changeset
   114
    for individual attributes in TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
   115
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   116
	static TInt Set(TAttribute aAttribute, TInt aValue);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   117
feebad15db8c 201027_1
hgs
parents:
diff changeset
   118
feebad15db8c 201027_1
hgs
parents:
diff changeset
   119
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   120
    Gets all HAL attributes, and their properties.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   121
feebad15db8c 201027_1
hgs
parents:
diff changeset
   122
    For attributes that are not meaningful on this device (ie. those which have
feebad15db8c 201027_1
hgs
parents:
diff changeset
   123
	not been defined in the config.hcf file), the attribute value and its 
feebad15db8c 201027_1
hgs
parents:
diff changeset
   124
	associated property value are set to zero in the returned array.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   125
feebad15db8c 201027_1
hgs
parents:
diff changeset
   126
	Attributes for which multiple values can be retrieved
feebad15db8c 201027_1
hgs
parents:
diff changeset
   127
	ie. EDisplayIsPalettized, EDisplayBitsPerPixel, EDisplayOffsetToFirstPixel,
feebad15db8c 201027_1
hgs
parents:
diff changeset
   128
	EDisplayOffsetBetweenLines, and EDisplayPaletteEntry will also be zero in
feebad15db8c 201027_1
hgs
parents:
diff changeset
   129
	the returned array.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   130
	
feebad15db8c 201027_1
hgs
parents:
diff changeset
   131
	Attributes that allocate resources and open handles are also not returned 
feebad15db8c 201027_1
hgs
parents:
diff changeset
   132
	by this API. Their value and property values will be set to zero in the
feebad15db8c 201027_1
hgs
parents:
diff changeset
   133
	returned array. Use HAL::Get() for these attributes.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   134
feebad15db8c 201027_1
hgs
parents:
diff changeset
   135
    @param aNumEntries On successful return, contains the total number
feebad15db8c 201027_1
hgs
parents:
diff changeset
   136
                       of HAL attributes.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   137
                       If the function returns KErrNoMemory, this value is set
feebad15db8c 201027_1
hgs
parents:
diff changeset
   138
                       to zero.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   139
    @param aData       On successful return, contains a pointer to an array
feebad15db8c 201027_1
hgs
parents:
diff changeset
   140
                       of SEntry objects, each of which contains an attribute value
feebad15db8c 201027_1
hgs
parents:
diff changeset
   141
                       and its property value. Note that the property value is
feebad15db8c 201027_1
hgs
parents:
diff changeset
   142
                       defined by the HAL::TEntry synonym.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   143
                       If the function returns KErrNoMemory, this pointer is set
feebad15db8c 201027_1
hgs
parents:
diff changeset
   144
                       to NULL.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   145
feebad15db8c 201027_1
hgs
parents:
diff changeset
   146
    @return KErrNone, if succesful;
feebad15db8c 201027_1
hgs
parents:
diff changeset
   147
            KErrNoMemory, if there is insufficient memory. 
feebad15db8c 201027_1
hgs
parents:
diff changeset
   148
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   149
	static TInt GetAll(TInt& aNumEntries, SEntry*& aData);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   150
feebad15db8c 201027_1
hgs
parents:
diff changeset
   151
	
feebad15db8c 201027_1
hgs
parents:
diff changeset
   152
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   153
    Gets the value of the specified HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   154
feebad15db8c 201027_1
hgs
parents:
diff changeset
   155
    @param aDeviceNumber The device number. (eg: screen number)
feebad15db8c 201027_1
hgs
parents:
diff changeset
   156
    @param aAttribute The HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   157
    @param aValue	On successful return, contains the attribute value.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   158
					Some attributes may accept aValue as an input as well, to select
feebad15db8c 201027_1
hgs
parents:
diff changeset
   159
					one of several alternate values. See the documentation for the
feebad15db8c 201027_1
hgs
parents:
diff changeset
   160
					individual HAL attributes for details of this.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   161
feebad15db8c 201027_1
hgs
parents:
diff changeset
   162
feebad15db8c 201027_1
hgs
parents:
diff changeset
   163
    @return  KErrNone, if successful;
feebad15db8c 201027_1
hgs
parents:
diff changeset
   164
             KErrNotSupported, if the attribute is not defined in the list
feebad15db8c 201027_1
hgs
parents:
diff changeset
   165
             of attributes, or is not meaningful for this device.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   166
			 KErrArgument, if aValue was invalid (for attributes
feebad15db8c 201027_1
hgs
parents:
diff changeset
   167
			 which take an argument). 
feebad15db8c 201027_1
hgs
parents:
diff changeset
   168
         
feebad15db8c 201027_1
hgs
parents:
diff changeset
   169
    @see HALData::TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
   170
    @see HALData::TAttributeProperty
feebad15db8c 201027_1
hgs
parents:
diff changeset
   171
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   172
	static TInt Get(TInt aDeviceNumber, TAttribute aAttribute, TInt& aValue);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   173
	
feebad15db8c 201027_1
hgs
parents:
diff changeset
   174
	
feebad15db8c 201027_1
hgs
parents:
diff changeset
   175
    /**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   176
    Sets the specified HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   177
feebad15db8c 201027_1
hgs
parents:
diff changeset
   178
    @param aDeviceNumber The device number. (eg: screen number)
feebad15db8c 201027_1
hgs
parents:
diff changeset
   179
    @param aAttribute The HAL attribute.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   180
    @param aValue      The attribute value.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   181
feebad15db8c 201027_1
hgs
parents:
diff changeset
   182
    @return  KErrNone, if successful;
feebad15db8c 201027_1
hgs
parents:
diff changeset
   183
             KErrNotSupported, if the attribute is not defined in the list
feebad15db8c 201027_1
hgs
parents:
diff changeset
   184
             of attributes, or is not meaningful for this device, or is
feebad15db8c 201027_1
hgs
parents:
diff changeset
   185
             not settable.
feebad15db8c 201027_1
hgs
parents:
diff changeset
   186
         
feebad15db8c 201027_1
hgs
parents:
diff changeset
   187
    @see HALData::TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
   188
    @see HALData::TAttributeProperty
feebad15db8c 201027_1
hgs
parents:
diff changeset
   189
feebad15db8c 201027_1
hgs
parents:
diff changeset
   190
    @capability WriteDeviceData or other capability specified
feebad15db8c 201027_1
hgs
parents:
diff changeset
   191
    for individual attributes in TAttribute
feebad15db8c 201027_1
hgs
parents:
diff changeset
   192
    */
feebad15db8c 201027_1
hgs
parents:
diff changeset
   193
	static TInt Set(TInt aDeviceNumber, TAttribute aAttribute, TInt aValue);
feebad15db8c 201027_1
hgs
parents:
diff changeset
   194
	};
feebad15db8c 201027_1
hgs
parents:
diff changeset
   195
feebad15db8c 201027_1
hgs
parents:
diff changeset
   196
    
feebad15db8c 201027_1
hgs
parents:
diff changeset
   197
/**
feebad15db8c 201027_1
hgs
parents:
diff changeset
   198
@internalComponent
feebad15db8c 201027_1
hgs
parents:
diff changeset
   199
*/
feebad15db8c 201027_1
hgs
parents:
diff changeset
   200
static const TInt32 KUidHalPropertyKeyBase = 0x1020E306;
feebad15db8c 201027_1
hgs
parents:
diff changeset
   201
feebad15db8c 201027_1
hgs
parents:
diff changeset
   202
__ASSERT_COMPILE(HAL::ENumHalAttributes<256); // only 256 UIDs allocated for HAL property keys
feebad15db8c 201027_1
hgs
parents:
diff changeset
   203
feebad15db8c 201027_1
hgs
parents:
diff changeset
   204
feebad15db8c 201027_1
hgs
parents:
diff changeset
   205
feebad15db8c 201027_1
hgs
parents:
diff changeset
   206
#endif