os/boardsupport/haitest/bspsvs/suite/bsp/keypad/src/T_KeypadDriverData.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
/*
sl@0
     2
* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). 
sl@0
     3
* All rights reserved.
sl@0
     4
* This component and the accompanying materials are made available
sl@0
     5
* under the terms of "Eclipse Public License v1.0"
sl@0
     6
* which accompanies this distribution, and is available
sl@0
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     8
*
sl@0
     9
* Initial Contributors:
sl@0
    10
* Nokia Corporation - initial contribution.
sl@0
    11
*
sl@0
    12
* Contributors:
sl@0
    13
*
sl@0
    14
* Description:
sl@0
    15
*
sl@0
    16
*/
sl@0
    17
sl@0
    18
#include "T_KeypadDriverData.h"
sl@0
    19
sl@0
    20
_LIT(KEnumNull,						" ");
sl@0
    21
_LIT(KGetScanCodes,					"GetScanCodes");
sl@0
    22
_LIT(KGetModifiers,					"GetModifiers");
sl@0
    23
_LIT(KTestAllKeys,					"TestAllKeys");
sl@0
    24
_LIT(KTestOneModifierOneOtherKey,	"TestOneModifierOneOtherKey");
sl@0
    25
_LIT(KTestTwoKeys,					"TestTwoKeys");
sl@0
    26
_LIT(KTestMultipleKeys,				"TestMultipleKeys");
sl@0
    27
_LIT(KVerifyKeypadState,			"VerifyKeypadState");
sl@0
    28
_LIT(KPromptUser,					"PromptUser");
sl@0
    29
_LIT(KSet,							"set%d");
sl@0
    30
_LIT(KScanCodeString,				"scancode_string%d");
sl@0
    31
_LIT(KScanCode,						"scancode%d");
sl@0
    32
_LIT(KModifierString,				"modifier_string%d");
sl@0
    33
_LIT(KModifier,						"modifier%d");
sl@0
    34
_LIT(KTestCoverage,					"test_coverage");
sl@0
    35
_LIT(KFailTest,						"fail_test");
sl@0
    36
_LIT(KPassKeyStr,					"pass_key_str");
sl@0
    37
_LIT(KPassKey,						"pass_key");
sl@0
    38
_LIT(KExpectedState,				"expected_state");
sl@0
    39
_LIT(KTimeOut,						"timeout");
sl@0
    40
_LIT(KUserPrompt,					"user_prompt");
sl@0
    41
_LIT(KConsoleName,					"Console_Window");
sl@0
    42
_LIT(KMaximized,					"+M");
sl@0
    43
_LIT(KRawEventMode,					"+R");
sl@0
    44
_LIT(KRawEventModeOff,				"-R");
sl@0
    45
sl@0
    46
_LIT(KLogMissingParameter,			"Missing parameter '%S'");
sl@0
    47
/*@}*/
sl@0
    48
sl@0
    49
// Scancodes
sl@0
    50
_LIT(KStdKeyNumber0,				"'0'");
sl@0
    51
_LIT(KStdKeyNumber1,				"'1'");
sl@0
    52
_LIT(KStdKeyNumber2,				"'2'");
sl@0
    53
_LIT(KStdKeyNumber3,				"'3'");
sl@0
    54
_LIT(KStdKeyNumber4,				"'4'");
sl@0
    55
_LIT(KStdKeyNumber5,				"'5'");
sl@0
    56
_LIT(KStdKeyNumber6,				"'6'");
sl@0
    57
_LIT(KStdKeyNumber7,				"'7'");
sl@0
    58
_LIT(KStdKeyNumber8,				"'8'");
sl@0
    59
_LIT(KStdKeyNumber9,				"'9'");
sl@0
    60
_LIT(KStdKeyLetterA,				"'A'");
sl@0
    61
_LIT(KStdKeyLetterB,				"'B'");
sl@0
    62
_LIT(KStdKeyLetterC,				"'C'");
sl@0
    63
_LIT(KStdKeyLetterD,				"'D'");
sl@0
    64
_LIT(KStdKeyLetterE,				"'E'");
sl@0
    65
_LIT(KStdKeyLetterF,				"'F'");
sl@0
    66
_LIT(KStdKeyLetterG,				"'G'");
sl@0
    67
_LIT(KStdKeyLetterH,				"'H'");
sl@0
    68
_LIT(KStdKeyLetterI,				"'I'");
sl@0
    69
_LIT(KStdKeyLetterJ,				"'J'");
sl@0
    70
_LIT(KStdKeyLetterK,				"'K'");
sl@0
    71
_LIT(KStdKeyLetterL,				"'L'");
sl@0
    72
_LIT(KStdKeyLetterM,				"'M'");
sl@0
    73
_LIT(KStdKeyLetterN,				"'N'");
sl@0
    74
_LIT(KStdKeyLetterO,				"'O'");
sl@0
    75
_LIT(KStdKeyLetterP,				"'P'");
sl@0
    76
_LIT(KStdKeyLetterQ,				"'Q'");
sl@0
    77
_LIT(KStdKeyLetterR,				"'R'");
sl@0
    78
_LIT(KStdKeyLetterS,				"'S'");
sl@0
    79
_LIT(KStdKeyLetterT,				"'T'");
sl@0
    80
_LIT(KStdKeyLetterU,				"'U'");
sl@0
    81
_LIT(KStdKeyLetterV,				"'V'");
sl@0
    82
_LIT(KStdKeyLetterW,				"'W'");
sl@0
    83
_LIT(KStdKeyLetterX,				"'X'");
sl@0
    84
_LIT(KStdKeyLetterY,				"'Y'");
sl@0
    85
_LIT(KStdKeyLetterZ,				"'Z'");
sl@0
    86
_LIT(KStdKeyAsterisk,				"'*'");
sl@0
    87
_LIT(KStdKeyNull,					"EStdKeyNull");
sl@0
    88
_LIT(KStdKeyBackspace,				"EStdKeyBackspace");
sl@0
    89
_LIT(KStdKeyTab,					"EStdKeyTab");
sl@0
    90
_LIT(KStdKeyEnter,					"EStdKeyEnter");
sl@0
    91
_LIT(KStdKeyEscape,					"EStdKeyEscape");
sl@0
    92
_LIT(KStdKeySpace,					"EStdKeySpace");
sl@0
    93
_LIT(KStdKeyPrintScreen,			"EStdKeyPrintScreen");
sl@0
    94
_LIT(KStdKeyPause,					"EStdKeyPause");
sl@0
    95
_LIT(KStdKeyHome,					"EStdKeyHome");
sl@0
    96
_LIT(KStdKeyEnd,					"EStdKeyEnd");
sl@0
    97
_LIT(KStdKeyPageUp,					"EStdKeyPageUp");
sl@0
    98
_LIT(KStdKeyPageDown,				"EStdKeyPageDown");
sl@0
    99
_LIT(KStdKeyInsert,					"EStdKeyInsert");
sl@0
   100
_LIT(KStdKeyDelete,					"EStdKeyDelete");
sl@0
   101
_LIT(KStdKeyLeftArrow,				"EStdKeyLeftArrow");
sl@0
   102
_LIT(KStdKeyRightArrow,				"EStdKeyRightArrow");
sl@0
   103
_LIT(KStdKeyUpArrow,				"EStdKeyUpArrow");
sl@0
   104
_LIT(KStdKeyDownArrow,				"EStdKeyDownArrow");
sl@0
   105
_LIT(KStdKeyLeftShift,				"EStdKeyLeftShift");
sl@0
   106
_LIT(KStdKeyRightShift,				"EStdKeyRightShift");
sl@0
   107
_LIT(KStdKeyLeftAlt,				"EStdKeyLeftAlt");
sl@0
   108
_LIT(KStdKeyRightAlt,				"EStdKeyRightAlt");
sl@0
   109
_LIT(KStdKeyLeftCtrl,				"EStdKeyLeftCtrl");
sl@0
   110
_LIT(KStdKeyRightCtrl,				"EStdKeyRightCtrl");
sl@0
   111
_LIT(KStdKeyLeftFunc,				"EStdKeyLeftFunc");
sl@0
   112
_LIT(KStdKeyRightFunc,				"EStdKeyRightFunc");
sl@0
   113
_LIT(KStdKeyCapsLock,				"EStdKeyCapsLock");
sl@0
   114
_LIT(KStdKeyNumLock,				"EStdKeyNumLock");
sl@0
   115
_LIT(KStdKeyScrollLock,				"EStdKeyScrollLock");
sl@0
   116
_LIT(KStdKeyF1,						"EStdKeyF1");
sl@0
   117
_LIT(KStdKeyF2,						"EStdKeyF2");
sl@0
   118
_LIT(KStdKeyF3,						"EStdKeyF3");
sl@0
   119
_LIT(KStdKeyF4,						"EStdKeyF4");
sl@0
   120
_LIT(KStdKeyF5,						"EStdKeyF5");
sl@0
   121
_LIT(KStdKeyF6,						"EStdKeyF6");
sl@0
   122
_LIT(KStdKeyF7,						"EStdKeyF7");
sl@0
   123
_LIT(KStdKeyF8,						"EStdKeyF8");
sl@0
   124
_LIT(KStdKeyF9,						"EStdKeyF9");
sl@0
   125
_LIT(KStdKeyF10,					"EStdKeyF10");
sl@0
   126
_LIT(KStdKeyF11,					"EStdKeyF11");
sl@0
   127
_LIT(KStdKeyF12,					"EStdKeyF12");
sl@0
   128
_LIT(KStdKeyF13,					"EStdKeyF13");
sl@0
   129
_LIT(KStdKeyF14,					"EStdKeyF14");
sl@0
   130
_LIT(KStdKeyF15,					"EStdKeyF15");
sl@0
   131
_LIT(KStdKeyF16,					"EStdKeyF16");
sl@0
   132
_LIT(KStdKeyF17,					"EStdKeyF17");
sl@0
   133
_LIT(KStdKeyF18,					"EStdKeyF18");
sl@0
   134
_LIT(KStdKeyF19,					"EStdKeyF19");
sl@0
   135
_LIT(KStdKeyF20,					"EStdKeyF20");
sl@0
   136
_LIT(KStdKeyF21,					"EStdKeyF21");
sl@0
   137
_LIT(KStdKeyF22,					"EStdKeyF22");
sl@0
   138
_LIT(KStdKeyF23,					"EStdKeyF23");
sl@0
   139
_LIT(KStdKeyF24,					"EStdKeyF24");
sl@0
   140
_LIT(KStdKeyXXX,					"EStdKeyXXX");
sl@0
   141
_LIT(KStdKeyComma,					"EStdKeyComma");
sl@0
   142
_LIT(KStdKeyFullStop,				"EStdKeyFullStop");
sl@0
   143
_LIT(KStdKeyForwardSlash,			"EStdKeyForwardSlash");
sl@0
   144
_LIT(KStdKeyBackSlash,				"EStdKeyBackSlash");
sl@0
   145
_LIT(KStdKeySemiColon,				"EStdKeySemiColon");
sl@0
   146
_LIT(KStdKeySingleQuote,			"EStdKeySingleQuote");
sl@0
   147
_LIT(KStdKeyHash,					"EStdKeyHash");
sl@0
   148
_LIT(KStdKeySquareBracketLeft,		"EStdKeySquareBracketLeft");
sl@0
   149
_LIT(KStdKeySquareBracketRight,		"EStdKeySquareBracketRight");
sl@0
   150
_LIT(KStdKeyMinus,					"EStdKeyMinus");
sl@0
   151
_LIT(KStdKeyEquals,					"EStdKeyEquals");
sl@0
   152
_LIT(KStdKeyNkpForwardSlash,		"EStdKeyNkpForwardSlash");
sl@0
   153
_LIT(KStdKeyNkpAsterisk,			"EStdKeyNkpAsterisk");
sl@0
   154
_LIT(KStdKeyNkpMinus,				"EStdKeyNkpMinus");
sl@0
   155
_LIT(KStdKeyNkpPlus,				"EStdKeyNkpPlus");
sl@0
   156
_LIT(KStdKeyNkpEnter,				"EStdKeyNkpEnter");
sl@0
   157
_LIT(KStdKeyNkp1,					"EStdKeyNkp1");
sl@0
   158
_LIT(KStdKeyNkp2,					"EStdKeyNkp2");
sl@0
   159
_LIT(KStdKeyNkp3,					"EStdKeyNkp3");
sl@0
   160
_LIT(KStdKeyNkp4,					"EStdKeyNkp4");
sl@0
   161
_LIT(KStdKeyNkp5,					"EStdKeyNkp5");
sl@0
   162
_LIT(KStdKeyNkp6,					"EStdKeyNkp6");
sl@0
   163
_LIT(KStdKeyNkp7,					"EStdKeyNkp7");
sl@0
   164
_LIT(KStdKeyNkp8,					"EStdKeyNkp8");
sl@0
   165
_LIT(KStdKeyNkp9,					"EStdKeyNkp9");
sl@0
   166
_LIT(KStdKeyNkp0,					"EStdKeyNkp0");
sl@0
   167
_LIT(KStdKeyNkpFullStop,			"EStdKeyNkpFullStop");
sl@0
   168
_LIT(KStdKeyMenu,					"EStdKeyMenu");
sl@0
   169
_LIT(KStdKeyBacklightOn,			"EStdKeyBacklightOn");
sl@0
   170
_LIT(KStdKeyBacklightOff,			"EStdKeyBacklightOff");
sl@0
   171
_LIT(KStdKeyBacklightToggle,		"EStdKeyBacklightToggle");
sl@0
   172
_LIT(KStdKeyIncContrast,			"EStdKeyIncContrast");
sl@0
   173
_LIT(KStdKeyDecContrast,			"EStdKeyDecContrast");
sl@0
   174
_LIT(KStdKeySliderDown,				"EStdKeySliderDown");
sl@0
   175
_LIT(KStdKeySliderUp,				"EStdKeySliderUp");
sl@0
   176
_LIT(KStdKeyDictaphonePlay,			"EStdKeyDictaphonePlay");
sl@0
   177
_LIT(KStdKeyDictaphoneStop,			"EStdKeyDictaphoneStop");
sl@0
   178
_LIT(KStdKeyDictaphoneRecord,		"EStdKeyDictaphoneRecord");
sl@0
   179
_LIT(KStdKeyHelp,					"EStdKeyHelp");
sl@0
   180
_LIT(KStdKeyOff,					"EStdKeyOff");
sl@0
   181
_LIT(KStdKeyDial,					"EStdKeyDial");
sl@0
   182
_LIT(KStdKeyIncVolume,				"EStdKeyIncVolume");
sl@0
   183
_LIT(KStdKeyDecVolume,				"EStdKeyDecVolume");
sl@0
   184
_LIT(KStdKeyDevice0,				"EStdKeyDevice0");
sl@0
   185
_LIT(KStdKeyDevice1,				"EStdKeyDevice1");
sl@0
   186
_LIT(KStdKeyDevice2,				"EStdKeyDevice2");
sl@0
   187
_LIT(KStdKeyDevice3,				"EStdKeyDevice3");
sl@0
   188
_LIT(KStdKeyDevice4,				"EStdKeyDevice4");
sl@0
   189
_LIT(KStdKeyDevice5,				"EStdKeyDevice5");
sl@0
   190
_LIT(KStdKeyDevice6,				"EStdKeyDevice6");
sl@0
   191
_LIT(KStdKeyDevice7,				"EStdKeyDevice7");
sl@0
   192
_LIT(KStdKeyDevice8,				"EStdKeyDevice8");
sl@0
   193
_LIT(KStdKeyDevice9,				"EStdKeyDevice9");
sl@0
   194
_LIT(KStdKeyDeviceA,				"EStdKeyDeviceA");
sl@0
   195
_LIT(KStdKeyDeviceB,				"EStdKeyDeviceB");
sl@0
   196
_LIT(KStdKeyDeviceC,				"EStdKeyDeviceC");
sl@0
   197
_LIT(KStdKeyDeviceD,				"EStdKeyDeviceD");
sl@0
   198
_LIT(KStdKeyDeviceE,				"EStdKeyDeviceE");
sl@0
   199
_LIT(KStdKeyDeviceF,				"EStdKeyDeviceF");
sl@0
   200
_LIT(KStdKeyApplication0,			"EStdKeyApplication0");
sl@0
   201
_LIT(KStdKeyApplication1,			"EStdKeyApplication1");
sl@0
   202
_LIT(KStdKeyApplication2,			"EStdKeyApplication2");
sl@0
   203
_LIT(KStdKeyApplication3,			"EStdKeyApplication3");
sl@0
   204
_LIT(KStdKeyApplication4,			"EStdKeyApplication4");
sl@0
   205
_LIT(KStdKeyApplication5,			"EStdKeyApplication5");
sl@0
   206
_LIT(KStdKeyApplication6,			"EStdKeyApplication6");
sl@0
   207
_LIT(KStdKeyApplication7,			"EStdKeyApplication7");
sl@0
   208
_LIT(KStdKeyApplication8,			"EStdKeyApplication8");
sl@0
   209
_LIT(KStdKeyApplication9,			"EStdKeyApplication9");
sl@0
   210
_LIT(KStdKeyApplicationA,			"EStdKeyApplicationA");
sl@0
   211
_LIT(KStdKeyApplicationB,			"EStdKeyApplicationB");
sl@0
   212
_LIT(KStdKeyApplicationC,			"EStdKeyApplicationC");
sl@0
   213
_LIT(KStdKeyApplicationD,			"EStdKeyApplicationD");
sl@0
   214
_LIT(KStdKeyApplicationE,			"EStdKeyApplicationE");
sl@0
   215
_LIT(KStdKeyApplicationF,			"EStdKeyApplicationF");
sl@0
   216
_LIT(KStdKeyYes,					"EStdKeyYes");
sl@0
   217
_LIT(KStdKeyNo,						"EStdKeyNo");
sl@0
   218
_LIT(KStdKeyIncBrightness,			"EStdKeyIncBrightness");
sl@0
   219
_LIT(KStdKeyDecBrightness,			"EStdKeyDecBrightness");
sl@0
   220
_LIT(KStdKeyKeyboardExtend,			"EStdKeyKeyboardExtend");
sl@0
   221
_LIT(KStdKeyDevice10,				"EStdKeyDevice10");
sl@0
   222
_LIT(KStdKeyDevice11,				"EStdKeyDevice11");
sl@0
   223
_LIT(KStdKeyDevice12,				"EStdKeyDevice12");
sl@0
   224
_LIT(KStdKeyDevice13,				"EStdKeyDevice13");
sl@0
   225
_LIT(KStdKeyDevice14,				"EStdKeyDevice14");
sl@0
   226
_LIT(KStdKeyDevice15,				"EStdKeyDevice15");
sl@0
   227
_LIT(KStdKeyDevice16,				"EStdKeyDevice16");
sl@0
   228
_LIT(KStdKeyDevice17,				"EStdKeyDevice17");
sl@0
   229
_LIT(KStdKeyDevice18,				"EStdKeyDevice18");
sl@0
   230
_LIT(KStdKeyDevice19,				"EStdKeyDevice19");
sl@0
   231
_LIT(KStdKeyDevice1A,				"EStdKeyDevice1A");
sl@0
   232
_LIT(KStdKeyDevice1B,				"EStdKeyDevice1B");
sl@0
   233
_LIT(KStdKeyDevice1C,				"EStdKeyDevice1C");
sl@0
   234
_LIT(KStdKeyDevice1D,				"EStdKeyDevice1D");
sl@0
   235
_LIT(KStdKeyDevice1E,				"EStdKeyDevice1E");
sl@0
   236
_LIT(KStdKeyDevice1F,				"EStdKeyDevice1F");
sl@0
   237
_LIT(KStdKeyApplication10,			"EStdKeyApplication10");
sl@0
   238
_LIT(KStdKeyApplication11,			"EStdKeyApplication11");
sl@0
   239
_LIT(KStdKeyApplication12,			"EStdKeyApplication12");
sl@0
   240
_LIT(KStdKeyApplication13,			"EStdKeyApplication13");
sl@0
   241
_LIT(KStdKeyApplication14,			"EStdKeyApplication14");
sl@0
   242
_LIT(KStdKeyApplication15,			"EStdKeyApplication15");
sl@0
   243
_LIT(KStdKeyApplication16,			"EStdKeyApplication16");
sl@0
   244
_LIT(KStdKeyApplication17,			"EStdKeyApplication17");
sl@0
   245
_LIT(KStdKeyApplication18,			"EStdKeyApplication18");
sl@0
   246
_LIT(KStdKeyApplication19,			"EStdKeyApplication19");
sl@0
   247
_LIT(KStdKeyApplication1A,			"EStdKeyApplication1A");
sl@0
   248
_LIT(KStdKeyApplication1B,			"EStdKeyApplication1B");
sl@0
   249
_LIT(KStdKeyApplication1C,			"EStdKeyApplication1C");
sl@0
   250
_LIT(KStdKeyApplication1D,			"EStdKeyApplication1D");
sl@0
   251
_LIT(KStdKeyApplication1E,			"EStdKeyApplication1E");
sl@0
   252
_LIT(KStdKeyApplication1F,			"EStdKeyApplication1F");
sl@0
   253
_LIT(KStdKeyDevice20,				"EStdKeyDevice20");
sl@0
   254
_LIT(KStdKeyDevice21,				"EStdKeyDevice21");
sl@0
   255
_LIT(KStdKeyDevice22,				"EStdKeyDevice22");
sl@0
   256
_LIT(KStdKeyDevice23,				"EStdKeyDevice23");
sl@0
   257
_LIT(KStdKeyDevice24,				"EStdKeyDevice24");
sl@0
   258
_LIT(KStdKeyDevice25,				"EStdKeyDevice25");
sl@0
   259
_LIT(KStdKeyDevice26,				"EStdKeyDevice26");
sl@0
   260
_LIT(KStdKeyDevice27,				"EStdKeyDevice27");
sl@0
   261
_LIT(KStdKeyApplication20,			"EStdKeyApplication20");
sl@0
   262
_LIT(KStdKeyApplication21,			"EStdKeyApplication21");
sl@0
   263
_LIT(KStdKeyApplication22,			"EStdKeyApplication22");
sl@0
   264
_LIT(KStdKeyApplication23,			"EStdKeyApplication23");
sl@0
   265
_LIT(KStdKeyApplication24,			"EStdKeyApplication24");
sl@0
   266
_LIT(KStdKeyApplication25,			"EStdKeyApplication25");
sl@0
   267
_LIT(KStdKeyApplication26,			"EStdKeyApplication26");
sl@0
   268
_LIT(KStdKeyApplication27,			"EStdKeyApplication27");
sl@0
   269
const CDataWrapperBase::TEnumEntryTable	CT_KeypadDriverData::iEnumTableScanCodes[] =
sl@0
   270
	{
sl@0
   271
//	Scancode as a descriptor		Scancode
sl@0
   272
	KStdKeyNumber0,					(TStdScanCode) '0',
sl@0
   273
	KStdKeyNumber1,					(TStdScanCode) '1',
sl@0
   274
	KStdKeyNumber2,					(TStdScanCode) '2',
sl@0
   275
	KStdKeyNumber3,					(TStdScanCode) '3',
sl@0
   276
	KStdKeyNumber4,					(TStdScanCode) '4',
sl@0
   277
	KStdKeyNumber5,					(TStdScanCode) '5',
sl@0
   278
	KStdKeyNumber6,					(TStdScanCode) '6',
sl@0
   279
	KStdKeyNumber7,					(TStdScanCode) '7',
sl@0
   280
	KStdKeyNumber8,					(TStdScanCode) '8',
sl@0
   281
	KStdKeyNumber9,					(TStdScanCode) '9',
sl@0
   282
	KStdKeyLetterA,					(TStdScanCode) 'A',
sl@0
   283
	KStdKeyLetterB,					(TStdScanCode) 'B',
sl@0
   284
	KStdKeyLetterC,					(TStdScanCode) 'C',
sl@0
   285
	KStdKeyLetterD,					(TStdScanCode) 'D',
sl@0
   286
	KStdKeyLetterE,					(TStdScanCode) 'E',
sl@0
   287
	KStdKeyLetterF,					(TStdScanCode) 'F',
sl@0
   288
	KStdKeyLetterG,					(TStdScanCode) 'G',
sl@0
   289
	KStdKeyLetterH,					(TStdScanCode) 'H',
sl@0
   290
	KStdKeyLetterI,					(TStdScanCode) 'I',
sl@0
   291
	KStdKeyLetterJ,					(TStdScanCode) 'J',
sl@0
   292
	KStdKeyLetterK,					(TStdScanCode) 'K',
sl@0
   293
	KStdKeyLetterL,					(TStdScanCode) 'L',
sl@0
   294
	KStdKeyLetterM,					(TStdScanCode) 'M',
sl@0
   295
	KStdKeyLetterN,					(TStdScanCode) 'N',
sl@0
   296
	KStdKeyLetterO,					(TStdScanCode) 'O',
sl@0
   297
	KStdKeyLetterP,					(TStdScanCode) 'P',
sl@0
   298
	KStdKeyLetterQ,					(TStdScanCode) 'Q',
sl@0
   299
	KStdKeyLetterR,					(TStdScanCode) 'R',
sl@0
   300
	KStdKeyLetterS,					(TStdScanCode) 'S',
sl@0
   301
	KStdKeyLetterT,					(TStdScanCode) 'T',
sl@0
   302
	KStdKeyLetterU,					(TStdScanCode) 'U',
sl@0
   303
	KStdKeyLetterV,					(TStdScanCode) 'V',
sl@0
   304
	KStdKeyLetterW,					(TStdScanCode) 'W',
sl@0
   305
	KStdKeyLetterX,					(TStdScanCode) 'X',
sl@0
   306
	KStdKeyLetterY,					(TStdScanCode) 'Y',
sl@0
   307
	KStdKeyLetterZ,					(TStdScanCode) 'Z',
sl@0
   308
	KStdKeyAsterisk,				(TStdScanCode) '*',
sl@0
   309
	KStdKeyNull,					EStdKeyNull,
sl@0
   310
	KStdKeyBackspace,				EStdKeyBackspace,
sl@0
   311
	KStdKeyTab,						EStdKeyTab,
sl@0
   312
	KStdKeyEnter,					EStdKeyEnter,
sl@0
   313
	KStdKeyEscape,					EStdKeyEscape,
sl@0
   314
	KStdKeySpace,					EStdKeySpace,
sl@0
   315
	KStdKeyPrintScreen,				EStdKeyPrintScreen,
sl@0
   316
	KStdKeyPause,					EStdKeyPause,
sl@0
   317
	KStdKeyHome,					EStdKeyHome,
sl@0
   318
	KStdKeyEnd,						EStdKeyEnd,
sl@0
   319
	KStdKeyPageUp,					EStdKeyPageUp,
sl@0
   320
	KStdKeyPageDown,				EStdKeyPageDown,
sl@0
   321
	KStdKeyInsert,					EStdKeyInsert,
sl@0
   322
	KStdKeyDelete,					EStdKeyDelete,
sl@0
   323
	KStdKeyLeftArrow,				EStdKeyLeftArrow,
sl@0
   324
	KStdKeyRightArrow,				EStdKeyRightArrow,
sl@0
   325
	KStdKeyUpArrow,					EStdKeyUpArrow,
sl@0
   326
	KStdKeyDownArrow,				EStdKeyDownArrow,
sl@0
   327
	KStdKeyLeftShift,				EStdKeyLeftShift,
sl@0
   328
	KStdKeyRightShift,				EStdKeyRightShift,
sl@0
   329
	KStdKeyLeftAlt,					EStdKeyLeftAlt,
sl@0
   330
	KStdKeyRightAlt,				EStdKeyRightAlt,
sl@0
   331
	KStdKeyLeftCtrl,				EStdKeyLeftCtrl,
sl@0
   332
	KStdKeyRightCtrl,				EStdKeyRightCtrl,
sl@0
   333
	KStdKeyLeftFunc,				EStdKeyLeftFunc,
sl@0
   334
	KStdKeyRightFunc,				EStdKeyRightFunc,
sl@0
   335
	KStdKeyCapsLock,				EStdKeyCapsLock,
sl@0
   336
	KStdKeyNumLock,					EStdKeyNumLock,
sl@0
   337
	KStdKeyScrollLock,				EStdKeyScrollLock,
sl@0
   338
	KStdKeyF1,						EStdKeyF1,
sl@0
   339
	KStdKeyF2,						EStdKeyF2,
sl@0
   340
	KStdKeyF3,						EStdKeyF3,
sl@0
   341
	KStdKeyF4,						EStdKeyF4,
sl@0
   342
	KStdKeyF5,						EStdKeyF5,
sl@0
   343
	KStdKeyF6,						EStdKeyF6,
sl@0
   344
	KStdKeyF7,						EStdKeyF7,
sl@0
   345
	KStdKeyF8,						EStdKeyF8,
sl@0
   346
	KStdKeyF9,						EStdKeyF9,
sl@0
   347
	KStdKeyF10,						EStdKeyF10,
sl@0
   348
	KStdKeyF11,						EStdKeyF11,
sl@0
   349
	KStdKeyF12,						EStdKeyF12,
sl@0
   350
	KStdKeyF13,						EStdKeyF13,
sl@0
   351
	KStdKeyF14,						EStdKeyF14,
sl@0
   352
	KStdKeyF15,						EStdKeyF15,
sl@0
   353
	KStdKeyF16,						EStdKeyF16,
sl@0
   354
	KStdKeyF17,						EStdKeyF17,
sl@0
   355
	KStdKeyF18,						EStdKeyF18,
sl@0
   356
	KStdKeyF19,						EStdKeyF19,
sl@0
   357
	KStdKeyF20,						EStdKeyF20,
sl@0
   358
	KStdKeyF21,						EStdKeyF21,
sl@0
   359
	KStdKeyF22,						EStdKeyF22,
sl@0
   360
	KStdKeyF23,						EStdKeyF23,
sl@0
   361
	KStdKeyF24,						EStdKeyF24,
sl@0
   362
	KStdKeyXXX,						EStdKeyXXX,
sl@0
   363
	KStdKeyComma,					EStdKeyComma,
sl@0
   364
	KStdKeyFullStop,				EStdKeyFullStop,
sl@0
   365
	KStdKeyForwardSlash,			EStdKeyForwardSlash,
sl@0
   366
	KStdKeyBackSlash,				EStdKeyBackSlash,
sl@0
   367
	KStdKeySemiColon,				EStdKeySemiColon,
sl@0
   368
	KStdKeySingleQuote,				EStdKeySingleQuote,
sl@0
   369
	KStdKeyHash,					EStdKeyHash,
sl@0
   370
	KStdKeySquareBracketLeft,		EStdKeySquareBracketLeft,
sl@0
   371
	KStdKeySquareBracketRight,		EStdKeySquareBracketRight,
sl@0
   372
	KStdKeyMinus,					EStdKeyMinus,
sl@0
   373
	KStdKeyEquals,					EStdKeyEquals,
sl@0
   374
	KStdKeyNkpForwardSlash,			EStdKeyNkpForwardSlash,
sl@0
   375
	KStdKeyNkpAsterisk,				EStdKeyNkpAsterisk,
sl@0
   376
	KStdKeyNkpMinus,				EStdKeyNkpMinus,
sl@0
   377
	KStdKeyNkpPlus,					EStdKeyNkpPlus,
sl@0
   378
	KStdKeyNkpEnter,				EStdKeyNkpEnter,
sl@0
   379
	KStdKeyNkp1,					EStdKeyNkp1,
sl@0
   380
	KStdKeyNkp2,					EStdKeyNkp2,
sl@0
   381
	KStdKeyNkp3,					EStdKeyNkp3,
sl@0
   382
	KStdKeyNkp4,					EStdKeyNkp4,
sl@0
   383
	KStdKeyNkp5,					EStdKeyNkp5,
sl@0
   384
	KStdKeyNkp6,					EStdKeyNkp6,
sl@0
   385
	KStdKeyNkp7,					EStdKeyNkp7,
sl@0
   386
	KStdKeyNkp8,					EStdKeyNkp8,
sl@0
   387
	KStdKeyNkp9,					EStdKeyNkp9,
sl@0
   388
	KStdKeyNkp0,					EStdKeyNkp0,
sl@0
   389
	KStdKeyNkpFullStop,				EStdKeyNkpFullStop,
sl@0
   390
	KStdKeyMenu,					EStdKeyMenu,
sl@0
   391
	KStdKeyBacklightOn,				EStdKeyBacklightOn,
sl@0
   392
	KStdKeyBacklightOff,			EStdKeyBacklightOff,
sl@0
   393
	KStdKeyBacklightToggle,			EStdKeyBacklightToggle,
sl@0
   394
	KStdKeyIncContrast,				EStdKeyIncContrast,
sl@0
   395
	KStdKeyDecContrast,				EStdKeyDecContrast,
sl@0
   396
	KStdKeySliderDown,				EStdKeySliderDown,
sl@0
   397
	KStdKeySliderUp,				EStdKeySliderUp,
sl@0
   398
	KStdKeyDictaphonePlay,			EStdKeyDictaphonePlay,
sl@0
   399
	KStdKeyDictaphoneStop,			EStdKeyDictaphoneStop,
sl@0
   400
	KStdKeyDictaphoneRecord,		EStdKeyDictaphoneRecord,
sl@0
   401
	KStdKeyHelp,					EStdKeyHelp,
sl@0
   402
	KStdKeyOff,						EStdKeyOff,
sl@0
   403
	KStdKeyDial,					EStdKeyDial,
sl@0
   404
	KStdKeyIncVolume,				EStdKeyIncVolume,
sl@0
   405
	KStdKeyDecVolume,				EStdKeyDecVolume,
sl@0
   406
	KStdKeyDevice0,					EStdKeyDevice0,
sl@0
   407
	KStdKeyDevice1,					EStdKeyDevice1,
sl@0
   408
	KStdKeyDevice2,					EStdKeyDevice2,
sl@0
   409
	KStdKeyDevice3,					EStdKeyDevice3,
sl@0
   410
	KStdKeyDevice4,					EStdKeyDevice4,
sl@0
   411
	KStdKeyDevice5,					EStdKeyDevice5,
sl@0
   412
	KStdKeyDevice6,					EStdKeyDevice6,
sl@0
   413
	KStdKeyDevice7,					EStdKeyDevice7,
sl@0
   414
	KStdKeyDevice8,					EStdKeyDevice8,
sl@0
   415
	KStdKeyDevice9,					EStdKeyDevice9,
sl@0
   416
	KStdKeyDeviceA,					EStdKeyDeviceA,
sl@0
   417
	KStdKeyDeviceB,					EStdKeyDeviceB,
sl@0
   418
	KStdKeyDeviceC,					EStdKeyDeviceC,
sl@0
   419
	KStdKeyDeviceD,					EStdKeyDeviceD,
sl@0
   420
	KStdKeyDeviceE,					EStdKeyDeviceE,
sl@0
   421
	KStdKeyDeviceF,					EStdKeyDeviceF,
sl@0
   422
	KStdKeyApplication0,			EStdKeyApplication0,
sl@0
   423
	KStdKeyApplication1,			EStdKeyApplication1,
sl@0
   424
	KStdKeyApplication2,			EStdKeyApplication2,
sl@0
   425
	KStdKeyApplication3,			EStdKeyApplication3,
sl@0
   426
	KStdKeyApplication4,			EStdKeyApplication4,
sl@0
   427
	KStdKeyApplication5,			EStdKeyApplication5,
sl@0
   428
	KStdKeyApplication6,			EStdKeyApplication6,
sl@0
   429
	KStdKeyApplication7,			EStdKeyApplication7,
sl@0
   430
	KStdKeyApplication8,			EStdKeyApplication8,
sl@0
   431
	KStdKeyApplication9,			EStdKeyApplication9,
sl@0
   432
	KStdKeyApplicationA,			EStdKeyApplicationA,
sl@0
   433
	KStdKeyApplicationB,			EStdKeyApplicationB,
sl@0
   434
	KStdKeyApplicationC,			EStdKeyApplicationC,
sl@0
   435
	KStdKeyApplicationD,			EStdKeyApplicationD,
sl@0
   436
	KStdKeyApplicationE,			EStdKeyApplicationE,
sl@0
   437
	KStdKeyApplicationF,			EStdKeyApplicationF,
sl@0
   438
	KStdKeyYes,						EStdKeyYes,
sl@0
   439
	KStdKeyNo,						EStdKeyNo,
sl@0
   440
	KStdKeyIncBrightness,			EStdKeyIncBrightness,
sl@0
   441
	KStdKeyDecBrightness,			EStdKeyDecBrightness,
sl@0
   442
	KStdKeyKeyboardExtend,			EStdKeyKeyboardExtend,
sl@0
   443
	KStdKeyDevice10,				EStdKeyDevice10,
sl@0
   444
	KStdKeyDevice11,				EStdKeyDevice11,
sl@0
   445
	KStdKeyDevice12,				EStdKeyDevice12,
sl@0
   446
	KStdKeyDevice13,				EStdKeyDevice13,
sl@0
   447
	KStdKeyDevice14,				EStdKeyDevice14,
sl@0
   448
	KStdKeyDevice15,				EStdKeyDevice15,
sl@0
   449
	KStdKeyDevice16,				EStdKeyDevice16,
sl@0
   450
	KStdKeyDevice17,				EStdKeyDevice17,
sl@0
   451
	KStdKeyDevice18,				EStdKeyDevice18,
sl@0
   452
	KStdKeyDevice19,				EStdKeyDevice19,
sl@0
   453
	KStdKeyDevice1A,				EStdKeyDevice1A,
sl@0
   454
	KStdKeyDevice1B,				EStdKeyDevice1B,
sl@0
   455
	KStdKeyDevice1C,				EStdKeyDevice1C,
sl@0
   456
	KStdKeyDevice1D,				EStdKeyDevice1D,
sl@0
   457
	KStdKeyDevice1E,				EStdKeyDevice1E,
sl@0
   458
	KStdKeyDevice1F,				EStdKeyDevice1F,
sl@0
   459
	KStdKeyApplication10,			EStdKeyApplication10,
sl@0
   460
	KStdKeyApplication11,			EStdKeyApplication11,
sl@0
   461
	KStdKeyApplication12,			EStdKeyApplication12,
sl@0
   462
	KStdKeyApplication13,			EStdKeyApplication13,
sl@0
   463
	KStdKeyApplication14,			EStdKeyApplication14,
sl@0
   464
	KStdKeyApplication15,			EStdKeyApplication15,
sl@0
   465
	KStdKeyApplication16,			EStdKeyApplication16,
sl@0
   466
	KStdKeyApplication17,			EStdKeyApplication17,
sl@0
   467
	KStdKeyApplication18,			EStdKeyApplication18,
sl@0
   468
	KStdKeyApplication19,			EStdKeyApplication19,
sl@0
   469
	KStdKeyApplication1A,			EStdKeyApplication1A,
sl@0
   470
	KStdKeyApplication1B,			EStdKeyApplication1B,
sl@0
   471
	KStdKeyApplication1C,			EStdKeyApplication1C,
sl@0
   472
	KStdKeyApplication1D,			EStdKeyApplication1D,
sl@0
   473
	KStdKeyApplication1E,			EStdKeyApplication1E,
sl@0
   474
	KStdKeyApplication1F,			EStdKeyApplication1F,
sl@0
   475
	KStdKeyDevice20,				EStdKeyDevice20,
sl@0
   476
	KStdKeyDevice21,				EStdKeyDevice21,
sl@0
   477
	KStdKeyDevice22,				EStdKeyDevice22,
sl@0
   478
	KStdKeyDevice23,				EStdKeyDevice23,
sl@0
   479
	KStdKeyDevice24,				EStdKeyDevice24,
sl@0
   480
	KStdKeyDevice25,				EStdKeyDevice25,
sl@0
   481
	KStdKeyDevice26,				EStdKeyDevice26,
sl@0
   482
	KStdKeyDevice27,				EStdKeyDevice27,
sl@0
   483
	KStdKeyApplication20,			EStdKeyApplication20,
sl@0
   484
	KStdKeyApplication21,			EStdKeyApplication21,
sl@0
   485
	KStdKeyApplication22,			EStdKeyApplication22,
sl@0
   486
	KStdKeyApplication23,			EStdKeyApplication23,
sl@0
   487
	KStdKeyApplication24,			EStdKeyApplication24,
sl@0
   488
	KStdKeyApplication25,			EStdKeyApplication25,
sl@0
   489
	KStdKeyApplication26,			EStdKeyApplication26,
sl@0
   490
	KStdKeyApplication27,			EStdKeyApplication27,
sl@0
   491
	KEnumNull,						(TStdScanCode) -1
sl@0
   492
	};
sl@0
   493
sl@0
   494
_LIT(KEnumCoverageVeryLow,			"VeryLow");
sl@0
   495
_LIT(KEnumCoverageLow,				"Low");
sl@0
   496
_LIT(KEnumCoverageMedium,			"Medium");
sl@0
   497
_LIT(KEnumCoverageFull,				"Full");
sl@0
   498
const CDataWrapperBase::TEnumEntryTable	CT_KeypadDriverData::iEnumTableCoverage[] =
sl@0
   499
	{
sl@0
   500
	KEnumCoverageVeryLow,			8,
sl@0
   501
	KEnumCoverageLow,				4,
sl@0
   502
	KEnumCoverageMedium,			2,
sl@0
   503
	KEnumCoverageFull,				1,
sl@0
   504
	KEnumNull,						-1
sl@0
   505
	};
sl@0
   506
sl@0
   507
_LIT(KEnumKeyboardState,					"EKeyboardState");
sl@0
   508
_LIT(KEnumKeyboard,							"EKeyboard");
sl@0
   509
_LIT(KEnumKeyboardDeviceKeys,				"EKeyboardDeviceKeys");
sl@0
   510
_LIT(KEnumKeyboardAppKeys,					"EKeyboardAppKeys");
sl@0
   511
_LIT(KEnumKeyboardClick,					"EKeyboardClick");
sl@0
   512
_LIT(KEnumKeyboardClickVolumeMax,			"EKeyboardClickVolumeMax");
sl@0
   513
_LIT(KEnumKeyboardClickState,				"EKeyboardClickState");
sl@0
   514
_LIT(KEnumKeyboardClickVolume,				"EKeyboardClickVolume");
sl@0
   515
const CT_HALData::THalTableLookup	CT_KeypadDriverData::iTableLookup[] =
sl@0
   516
	{
sl@0
   517
//	Enum as a descriptor			Enum								Prepare input	Prepare				Validation of		Store data returned after a		Flag indicating
sl@0
   518
//																		value prior to	parameters			value returned		successful HAL::Get or			if validation
sl@0
   519
//																		HAL::Set call	prior to 			after a successful	HAL::Set call					is mandatory
sl@0
   520
//																						HAL::Get call		HAL::Get call
sl@0
   521
	KEnumKeyboardState,				HALData::EKeyboardState,			SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardState,				ETrue,
sl@0
   522
	KEnumKeyboard,					HALData::EKeyboard,					SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboard,					ETrue,
sl@0
   523
	KEnumKeyboardDeviceKeys,		HALData::EKeyboardDeviceKeys,		SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardDeviceKeys,			ETrue,
sl@0
   524
	KEnumKeyboardAppKeys,			HALData::EKeyboardAppKeys,			SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardAppKeys,				ETrue,
sl@0
   525
	KEnumKeyboardClick,				HALData::EKeyboardClick,			SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardClick,				ETrue,
sl@0
   526
	KEnumKeyboardClickVolumeMax,	HALData::EKeyboardClickVolumeMax,	SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardClickVolumeMax,		ETrue,
sl@0
   527
	KEnumKeyboardClickState,		HALData::EKeyboardClickState,		SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardClickState,			ETrue,
sl@0
   528
	KEnumKeyboardClickVolume,		HALData::EKeyboardClickVolume,		SetPrepareInt,	GetPrepareNothing,	GetValidationInt,	SetKeyboardClickVolume,			ETrue,
sl@0
   529
	KEnumNull,						(HALData::TAttribute)0,				NULL,			NULL,				NULL,				NULL,							NULL
sl@0
   530
	};
sl@0
   531
sl@0
   532
//////////////////////////////////////////////////////////////////////
sl@0
   533
// Construction/Destruction
sl@0
   534
//////////////////////////////////////////////////////////////////////
sl@0
   535
sl@0
   536
CT_KeypadDriverData* CT_KeypadDriverData::NewL()
sl@0
   537
	{
sl@0
   538
	CT_KeypadDriverData*	ret=new (ELeave) CT_KeypadDriverData();
sl@0
   539
	CleanupStack::PushL(ret);
sl@0
   540
	ret->ConstructL();
sl@0
   541
	CleanupStack::Pop(ret);
sl@0
   542
	return ret;
sl@0
   543
	}
sl@0
   544
sl@0
   545
sl@0
   546
CT_KeypadDriverData::CT_KeypadDriverData()
sl@0
   547
:	CT_HALData(iTableLookup)
sl@0
   548
,	iKeyboardState(-1)
sl@0
   549
,	iKeyboard(-1)
sl@0
   550
,	iKeyboardDeviceKeys(-1)
sl@0
   551
,	iKeyboardAppKeys(-1)
sl@0
   552
,	iKeyboardClick(-1)
sl@0
   553
,	iKeyboardClickVolumeMax(-1)
sl@0
   554
,	iKeyboardClickState(-1)
sl@0
   555
,	iKeyboardClickVolume(-1)
sl@0
   556
,	iActiveKey(NULL)
sl@0
   557
,	iActiveCombination(NULL)
sl@0
   558
,	iActiveKeypadState(NULL)
sl@0
   559
,	iActivePrompt(NULL)
sl@0
   560
,	iExpectedState(0)
sl@0
   561
,	iKeyCount(0)
sl@0
   562
,	iCombinationCount(0)
sl@0
   563
,	iCombinationKeyCount(0)
sl@0
   564
,	iFailTest(EFalse)
sl@0
   565
,	iPassKey(0)
sl@0
   566
	{
sl@0
   567
	}
sl@0
   568
sl@0
   569
void CT_KeypadDriverData::ConstructL()
sl@0
   570
/**
sl@0
   571
 * Second phase construction
sl@0
   572
 *
sl@0
   573
 * @internalComponent
sl@0
   574
 *
sl@0
   575
 * @return	N/A
sl@0
   576
 *
sl@0
   577
 * @pre		None
sl@0
   578
 * @post	None
sl@0
   579
 *
sl@0
   580
 * @leave	system wide error
sl@0
   581
 */
sl@0
   582
	{
sl@0
   583
	iActiveKey 				= CActiveCallback::NewL(*this);
sl@0
   584
	iActiveCombination		= CActiveCallback::NewL(*this);
sl@0
   585
	iActiveKeypadState		= CActiveCallbackBase::NewL(*this);
sl@0
   586
	iActivePrompt			= CActiveCallback::NewL(*this);
sl@0
   587
sl@0
   588
	User::LeaveIfError(iConsole.Init(KConsoleName,TSize(KConsFullScreen,KConsFullScreen)));
sl@0
   589
	User::LeaveIfError(iConsole.Control(KMaximized));
sl@0
   590
	User::LeaveIfError(iConsole.Control(KRawEventMode));
sl@0
   591
sl@0
   592
	iEventStore.AppendL(TRawEvent::EKeyDown);
sl@0
   593
	iEventStore.AppendL(TRawEvent::EKeyUp);
sl@0
   594
	}
sl@0
   595
sl@0
   596
CT_KeypadDriverData::~CT_KeypadDriverData()
sl@0
   597
/**
sl@0
   598
 * Public destructor
sl@0
   599
 */
sl@0
   600
	{
sl@0
   601
	iConsole.Control(KRawEventModeOff);
sl@0
   602
	iConsole.Destroy();
sl@0
   603
sl@0
   604
	iPossibleScanCodeStrStore.Reset();
sl@0
   605
	iPossibleScanCodeStrStore.Close();
sl@0
   606
	iPossibleScanCodeStore.Reset();
sl@0
   607
	iPossibleScanCodeStore.Close();
sl@0
   608
	iPossibleModifierStrStore.Reset();
sl@0
   609
	iPossibleModifierStrStore.Close();
sl@0
   610
	iPossibleModifierStore.Reset();
sl@0
   611
	iPossibleModifierStore.Close();
sl@0
   612
	iAllPossibleKeysStrStore.Reset();
sl@0
   613
	iAllPossibleKeysStrStore.Close();
sl@0
   614
	iAllPossibleKeysStore.Reset();
sl@0
   615
	iAllPossibleKeysStore.Close();
sl@0
   616
	iCombinationStrStore.Reset();
sl@0
   617
	iCombinationStrStore.Close();
sl@0
   618
	iExpectedStore.Reset();
sl@0
   619
	iExpectedStore.Close();
sl@0
   620
	iActualStore.Reset();
sl@0
   621
	iActualStore.Close();
sl@0
   622
	iEventStore.Reset();
sl@0
   623
	iEventStore.Close();
sl@0
   624
sl@0
   625
	delete iActiveKey;
sl@0
   626
	delete iActiveCombination;
sl@0
   627
	delete iActiveKeypadState;
sl@0
   628
	delete iActivePrompt;
sl@0
   629
	}
sl@0
   630
sl@0
   631
TAny* CT_KeypadDriverData::GetObject()
sl@0
   632
/**
sl@0
   633
 * Return a pointer to the object that the data wraps
sl@0
   634
 *
sl@0
   635
 * @return	pointer to the object that the data wraps
sl@0
   636
 */
sl@0
   637
	{
sl@0
   638
	return NULL;
sl@0
   639
	}
sl@0
   640
sl@0
   641
//	An empty function to ensure that the code will work fine with HAL_Data
sl@0
   642
TBool CT_KeypadDriverData::GetPrepareNothing(CDataWrapperBase* /*aThis*/, const TDesC& /*aSection*/, TInt& /*aValueStart*/, TInt& /*aValueEnd*/)
sl@0
   643
	{
sl@0
   644
	return ETrue;
sl@0
   645
	}
sl@0
   646
sl@0
   647
//	Store the keypad state
sl@0
   648
void CT_KeypadDriverData::SetKeyboardState(CDataWrapperBase* aThis, TInt aValue)
sl@0
   649
	{
sl@0
   650
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardState=aValue;
sl@0
   651
	}
sl@0
   652
sl@0
   653
//	Store the keypad type
sl@0
   654
void CT_KeypadDriverData::SetKeyboard(CDataWrapperBase* aThis, TInt aValue)
sl@0
   655
	{
sl@0
   656
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboard=aValue;
sl@0
   657
	}
sl@0
   658
sl@0
   659
//	Store the amount of keypad device keys
sl@0
   660
void CT_KeypadDriverData::SetKeyboardDeviceKeys(CDataWrapperBase* aThis, TInt aValue)
sl@0
   661
	{
sl@0
   662
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardDeviceKeys=aValue;
sl@0
   663
	}
sl@0
   664
sl@0
   665
//	Store the amount of keypad app keys
sl@0
   666
void CT_KeypadDriverData::SetKeyboardAppKeys(CDataWrapperBase* aThis, TInt aValue)
sl@0
   667
	{
sl@0
   668
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardAppKeys=aValue;
sl@0
   669
	}
sl@0
   670
sl@0
   671
//	Store the keypad click indicator
sl@0
   672
void CT_KeypadDriverData::SetKeyboardClick(CDataWrapperBase* aThis, TInt aValue)
sl@0
   673
	{
sl@0
   674
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClick=aValue;
sl@0
   675
	}
sl@0
   676
sl@0
   677
//	Store the keypad max click volume
sl@0
   678
void CT_KeypadDriverData::SetKeyboardClickVolumeMax(CDataWrapperBase* aThis, TInt aValue)
sl@0
   679
	{
sl@0
   680
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClickVolumeMax=aValue;
sl@0
   681
	}
sl@0
   682
sl@0
   683
//	Store the keypad click state
sl@0
   684
void CT_KeypadDriverData::SetKeyboardClickState(CDataWrapperBase* aThis, TInt aValue)
sl@0
   685
	{
sl@0
   686
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClickState=aValue;
sl@0
   687
	}
sl@0
   688
sl@0
   689
//	Store the keypad click volume
sl@0
   690
void CT_KeypadDriverData::SetKeyboardClickVolume(CDataWrapperBase* aThis, TInt aValue)
sl@0
   691
	{
sl@0
   692
	static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClickVolume=aValue;
sl@0
   693
	}
sl@0
   694
sl@0
   695
TBool CT_KeypadDriverData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
sl@0
   696
/**
sl@0
   697
 * Process a command read from the ini file
sl@0
   698
 *
sl@0
   699
 * @param aCommand			The command to process
sl@0
   700
 * @param aSection			The section in the ini containing data for the command
sl@0
   701
 * @param aAsyncErrorIndex	Command index for async calls to return errors to
sl@0
   702
 *
sl@0
   703
 * @return					ETrue if the command is processed
sl@0
   704
 *
sl@0
   705
 * @leave					System wide error
sl@0
   706
 */
sl@0
   707
	{
sl@0
   708
	TBool	ret = ETrue;
sl@0
   709
sl@0
   710
	if ( aCommand == KGetScanCodes )
sl@0
   711
		{
sl@0
   712
		DoCmdGetScanCodesL(aSection);
sl@0
   713
		}
sl@0
   714
	else if ( aCommand == KGetModifiers )
sl@0
   715
		{
sl@0
   716
		DoCmdGetModifiersL(aSection);
sl@0
   717
		}
sl@0
   718
	else if ( aCommand == KTestAllKeys )
sl@0
   719
		{
sl@0
   720
		DoCmdTestAllKeysL(aAsyncErrorIndex);
sl@0
   721
		}
sl@0
   722
	else if ( aCommand == KTestOneModifierOneOtherKey )
sl@0
   723
		{
sl@0
   724
		DoCmdTestOneModifierOneOtherKeyL(aSection, aAsyncErrorIndex);
sl@0
   725
		}
sl@0
   726
	else if ( aCommand == KTestTwoKeys )
sl@0
   727
		{
sl@0
   728
		DoCmdTestTwoKeysL(aSection, aAsyncErrorIndex);
sl@0
   729
		}
sl@0
   730
	else if ( aCommand == KTestMultipleKeys )
sl@0
   731
		{
sl@0
   732
		DoCmdTestMultipleKeysL(aSection, aAsyncErrorIndex);
sl@0
   733
		}
sl@0
   734
	else if ( aCommand == KVerifyKeypadState )
sl@0
   735
		{
sl@0
   736
		DoCmdVerifyKeypadState(aSection, aAsyncErrorIndex);
sl@0
   737
		}
sl@0
   738
	else if ( aCommand == KPromptUser )
sl@0
   739
		{
sl@0
   740
		DoCmdPromptUser(aSection, aAsyncErrorIndex);
sl@0
   741
		}
sl@0
   742
	else
sl@0
   743
		{
sl@0
   744
		ret = CT_HALData::DoCommandL(aCommand, aSection, aAsyncErrorIndex);
sl@0
   745
		}
sl@0
   746
sl@0
   747
	return ret;
sl@0
   748
	}
sl@0
   749
sl@0
   750
sl@0
   751
void CT_KeypadDriverData::DoCmdGetScanCodesL(const TDesC& aSection)
sl@0
   752
/**
sl@0
   753
 * Get the scancodes of the platform
sl@0
   754
 *
sl@0
   755
 * @param aSection			The section in the ini containing data for the command
sl@0
   756
 *
sl@0
   757
 * @return					void
sl@0
   758
 *
sl@0
   759
 * @leave					System wide error
sl@0
   760
 */
sl@0
   761
	{
sl@0
   762
	iPossibleScanCodeStrStore.Reset();
sl@0
   763
	iPossibleScanCodeStore.Reset();
sl@0
   764
	iAllPossibleKeysStrStore.Reset();
sl@0
   765
	iAllPossibleKeysStore.Reset();
sl@0
   766
sl@0
   767
	TIniDataName	tempStore;
sl@0
   768
	TPtrC			scanCodeStr;
sl@0
   769
	TPtrC			scanCodeName;
sl@0
   770
	TInt		 	scanCode;
sl@0
   771
sl@0
   772
	TInt	index=0;
sl@0
   773
	TBool	moreData=ETrue;
sl@0
   774
	while ( moreData )
sl@0
   775
		{
sl@0
   776
		++index;
sl@0
   777
		tempStore.Format(KScanCodeString(), index);
sl@0
   778
		moreData=GetStringFromConfig(aSection, tempStore, scanCodeStr);
sl@0
   779
		if ( moreData )
sl@0
   780
			{
sl@0
   781
			tempStore.Format(KScanCode(), index);
sl@0
   782
			if (!GetEnumFromConfig(aSection, tempStore, iEnumTableScanCodes, scanCode))
sl@0
   783
				{
sl@0
   784
				ERR_PRINTF2(_L("Invalid scancode value: %d"), scanCode);
sl@0
   785
				SetBlockResult(EFail);
sl@0
   786
				}
sl@0
   787
			else
sl@0
   788
				{
sl@0
   789
				iPossibleScanCodeStrStore.AppendL(scanCodeStr);
sl@0
   790
				iPossibleScanCodeStore.AppendL(scanCode);
sl@0
   791
sl@0
   792
				iAllPossibleKeysStrStore.AppendL(scanCodeStr);
sl@0
   793
				iAllPossibleKeysStore.AppendL(scanCode);
sl@0
   794
				}
sl@0
   795
			}
sl@0
   796
		}
sl@0
   797
	}
sl@0
   798
sl@0
   799
void CT_KeypadDriverData::DoCmdGetModifiersL(const TDesC& aSection)
sl@0
   800
/**
sl@0
   801
 * Get the modifiers of the platform
sl@0
   802
 *
sl@0
   803
 * @param aSection			The section in the ini containing data for the command
sl@0
   804
 *
sl@0
   805
 * @return					void
sl@0
   806
 *
sl@0
   807
 * @leave					System wide error
sl@0
   808
 */
sl@0
   809
	{
sl@0
   810
	iPossibleModifierStrStore.Reset();
sl@0
   811
	iPossibleModifierStore.Reset();
sl@0
   812
sl@0
   813
	TIniDataName	tempStore;
sl@0
   814
	TPtrC			modifierStr;
sl@0
   815
	TInt			modifier;
sl@0
   816
sl@0
   817
	TInt	index=0;
sl@0
   818
	TBool	moreData=ETrue;
sl@0
   819
	while ( moreData )
sl@0
   820
		{
sl@0
   821
		++index;
sl@0
   822
		tempStore.Format(KModifierString(), index);
sl@0
   823
		moreData=GetStringFromConfig(aSection, tempStore, modifierStr);
sl@0
   824
		if ( moreData )
sl@0
   825
			{
sl@0
   826
			tempStore.Format(KModifier(), index);
sl@0
   827
			if (!GetEnumFromConfig(aSection, tempStore, iEnumTableScanCodes, modifier))
sl@0
   828
				{
sl@0
   829
				ERR_PRINTF2(_L("Invalid modifier value: %d"), modifier);
sl@0
   830
				SetBlockResult(EFail);
sl@0
   831
				}
sl@0
   832
			else
sl@0
   833
				{
sl@0
   834
				iPossibleModifierStrStore.AppendL(modifierStr);
sl@0
   835
				iPossibleModifierStore.AppendL(modifier);
sl@0
   836
sl@0
   837
				iAllPossibleKeysStrStore.AppendL(modifierStr);
sl@0
   838
				iAllPossibleKeysStore.AppendL(modifier);
sl@0
   839
				}
sl@0
   840
			}
sl@0
   841
		}
sl@0
   842
	}
sl@0
   843
sl@0
   844
void CT_KeypadDriverData::DoCmdTestAllKeysL(const TInt aAsyncErrorIndex)
sl@0
   845
/**
sl@0
   846
 * Tests one key at the time by verifying the actual scancode against expected value
sl@0
   847
 *
sl@0
   848
 * @param aSection			The section in the ini containing data for the command
sl@0
   849
 *
sl@0
   850
 * @return					void
sl@0
   851
 *
sl@0
   852
 * @leave					System wide error
sl@0
   853
 */
sl@0
   854
	{
sl@0
   855
	iExpectedStore.Reset();
sl@0
   856
	iActualStore.Reset();
sl@0
   857
	iConsole.ClearScreen();
sl@0
   858
sl@0
   859
	iKeyCount=0;
sl@0
   860
	for ( TInt key=0; key<iAllPossibleKeysStore.Count(); ++key )
sl@0
   861
		{
sl@0
   862
		for ( TInt event=0; event<iEventStore.Count(); ++event )
sl@0
   863
			{
sl@0
   864
			iExpectedStore.AppendL(iEventStore[event]);
sl@0
   865
			iExpectedStore.AppendL(iAllPossibleKeysStore[key]);
sl@0
   866
			}
sl@0
   867
		}
sl@0
   868
sl@0
   869
	//end of setup and start testcase
sl@0
   870
	iConsole.Write(_L("Keyboard layout test.\n"));
sl@0
   871
	iConsole.Write(_L("Press the key corresponding to the "));
sl@0
   872
sl@0
   873
	iConsole.Write(iAllPossibleKeysStrStore[iKeyCount]);
sl@0
   874
sl@0
   875
	iConsole.Read(iKey, iActiveKey->iStatus);
sl@0
   876
	iActiveKey->Activate( aAsyncErrorIndex );
sl@0
   877
	IncOutstanding(); 	// request an event
sl@0
   878
	}
sl@0
   879
sl@0
   880
sl@0
   881
void CT_KeypadDriverData::DoCmdTestOneModifierOneOtherKeyL(const TDesC& aSection, const TInt aAsyncErrorIndex)
sl@0
   882
/**
sl@0
   883
 * Tests one modifier + key combinations by verifying their scancodes against expected values
sl@0
   884
 *
sl@0
   885
 * @param aSection			The section in the ini containing data for the command
sl@0
   886
 *
sl@0
   887
 * @return					void
sl@0
   888
 *
sl@0
   889
 * @leave					System wide error
sl@0
   890
 */
sl@0
   891
	{
sl@0
   892
	iCombinationStrStore.Reset();
sl@0
   893
	iExpectedStore.Reset();
sl@0
   894
	iActualStore.Reset();
sl@0
   895
	iConsole.ClearScreen();
sl@0
   896
	iCombinationCount  	 = 0;
sl@0
   897
	iCombinationKeyCount = 0;
sl@0
   898
sl@0
   899
	TInt	divider 	 = 1;
sl@0
   900
	TBool	dataOk=GetEnumFromConfig(aSection, KTestCoverage, iEnumTableCoverage, divider);
sl@0
   901
	if ( !dataOk )
sl@0
   902
		{
sl@0
   903
		ERR_PRINTF2(KLogMissingParameter, &KTestCoverage());
sl@0
   904
		SetBlockResult(EFail);
sl@0
   905
		}
sl@0
   906
	else
sl@0
   907
		{
sl@0
   908
		TInt	modifierCount 	= iPossibleModifierStore.Count();
sl@0
   909
		TInt	keyCount	  	= (TInt)(iPossibleScanCodeStore.Count() / divider);
sl@0
   910
sl@0
   911
		if (divider != 1)
sl@0
   912
			{
sl@0
   913
			++keyCount;
sl@0
   914
			}
sl@0
   915
sl@0
   916
		for ( TInt key=0; key<keyCount; ++key )
sl@0
   917
			{
sl@0
   918
			for ( TInt modifier=0; modifier<modifierCount; ++modifier )
sl@0
   919
				{
sl@0
   920
				for ( TInt event=0; event<iEventStore.Count(); ++event )
sl@0
   921
					{
sl@0
   922
					iExpectedStore.AppendL(iEventStore[event]);
sl@0
   923
					iExpectedStore.AppendL(iPossibleModifierStore[modifier]);
sl@0
   924
					iExpectedStore.AppendL(iEventStore[event]);
sl@0
   925
					iExpectedStore.AppendL(iPossibleScanCodeStore[key]);
sl@0
   926
					}
sl@0
   927
sl@0
   928
				TIniDataName	tempStrArray;
sl@0
   929
				tempStrArray.Append(iPossibleModifierStrStore[modifier]);
sl@0
   930
				tempStrArray.Append(_L(" + "));
sl@0
   931
				tempStrArray.Append(iPossibleScanCodeStrStore[key]);
sl@0
   932
				iCombinationStrStore.Append(tempStrArray);
sl@0
   933
				}
sl@0
   934
			}
sl@0
   935
sl@0
   936
		if ( iExpectedStore.Count()>0 )
sl@0
   937
			{//end of setup and start testcase
sl@0
   938
			iConsole.Write(_L("Keyboard layout test.\n"));
sl@0
   939
			iConsole.Write(_L("Press the following keys in the sequence as displayed:\n"));
sl@0
   940
			iConsole.Write(iCombinationStrStore[iCombinationCount]);
sl@0
   941
			iConsole.Write(_L("\n"));
sl@0
   942
			iConsole.Write(_L("and release them in the same sequence."));
sl@0
   943
sl@0
   944
			iConsole.Read(iKey, iActiveCombination->iStatus);
sl@0
   945
			iActiveCombination->Activate( aAsyncErrorIndex );
sl@0
   946
			IncOutstanding(); 	// request an event*/
sl@0
   947
			}
sl@0
   948
		else
sl@0
   949
			{
sl@0
   950
			INFO_PRINTF1(_L("No modifiers and/or keys available or too small test coverage set"));
sl@0
   951
			}
sl@0
   952
		}
sl@0
   953
	}
sl@0
   954
sl@0
   955
void CT_KeypadDriverData::DoCmdTestTwoKeysL(const TDesC& aSection, const TInt aAsyncErrorIndex)
sl@0
   956
/**
sl@0
   957
 * Tests key + key combinations by verifying their scancodes against expected values
sl@0
   958
 *
sl@0
   959
 * @param aSection			The section in the ini containing data for the command
sl@0
   960
 *
sl@0
   961
 * @return					void
sl@0
   962
 *
sl@0
   963
 * @leave					System wide error
sl@0
   964
 */
sl@0
   965
 	{
sl@0
   966
	iCombinationStrStore.Reset();
sl@0
   967
	iExpectedStore.Reset();
sl@0
   968
	iActualStore.Reset();
sl@0
   969
	iConsole.ClearScreen();
sl@0
   970
	iCombinationCount		= 0;
sl@0
   971
	iCombinationKeyCount	= 0;
sl@0
   972
sl@0
   973
	TInt	divider			= 1;
sl@0
   974
	TBool	dataOk=GetEnumFromConfig(aSection, KTestCoverage, iEnumTableCoverage, divider);
sl@0
   975
	if ( !dataOk )
sl@0
   976
		{
sl@0
   977
		ERR_PRINTF2(KLogMissingParameter, &KTestCoverage());
sl@0
   978
		SetBlockResult(EFail);
sl@0
   979
		}
sl@0
   980
	else
sl@0
   981
		{
sl@0
   982
		TInt	keyCount=(TInt)(iPossibleScanCodeStore.Count() / divider);
sl@0
   983
sl@0
   984
		if (divider != 1)
sl@0
   985
			{
sl@0
   986
			++keyCount;
sl@0
   987
			}
sl@0
   988
sl@0
   989
		for ( TInt key1=0; key1<keyCount; ++key1 )
sl@0
   990
			{
sl@0
   991
			for ( TInt key2= 0; key2<keyCount; ++key2 )
sl@0
   992
				{
sl@0
   993
				if ( iPossibleScanCodeStore[key1]!=iPossibleScanCodeStore[key2] )
sl@0
   994
					{
sl@0
   995
					for ( TInt event=0; event<iEventStore.Count(); ++event )
sl@0
   996
						{
sl@0
   997
						iExpectedStore.AppendL(iEventStore[event]);
sl@0
   998
						iExpectedStore.AppendL(iPossibleScanCodeStore[key1]);
sl@0
   999
						iExpectedStore.AppendL(iEventStore[event]);
sl@0
  1000
						iExpectedStore.AppendL(iPossibleScanCodeStore[key2]);
sl@0
  1001
						}
sl@0
  1002
sl@0
  1003
					TIniDataName	tempStrArray;
sl@0
  1004
					tempStrArray.Append(iPossibleScanCodeStrStore[key1]);
sl@0
  1005
					tempStrArray.Append(_L(" + "));
sl@0
  1006
					tempStrArray.Append(iPossibleScanCodeStrStore[key2]);
sl@0
  1007
					iCombinationStrStore.Append(tempStrArray);
sl@0
  1008
					}
sl@0
  1009
				}
sl@0
  1010
			}
sl@0
  1011
sl@0
  1012
		if ( iExpectedStore.Count()>0 )
sl@0
  1013
			{//end of setup and start testcase
sl@0
  1014
			iConsole.Write(_L("Keyboard layout test.\n"));
sl@0
  1015
			iConsole.Write(_L("Press the following keys in the sequence as displayed:\n"));
sl@0
  1016
			iConsole.Write(iCombinationStrStore[iCombinationCount]);
sl@0
  1017
			iConsole.Write(_L("\n"));
sl@0
  1018
			iConsole.Write(_L("and release them in the same sequence."));
sl@0
  1019
sl@0
  1020
			iConsole.Read(iKey, iActiveCombination->iStatus);
sl@0
  1021
			iActiveCombination->Activate( aAsyncErrorIndex );
sl@0
  1022
			IncOutstanding(); 	// request an event*/
sl@0
  1023
			}
sl@0
  1024
		else
sl@0
  1025
			{
sl@0
  1026
			INFO_PRINTF1(_L("No keys available or too small test coverage set"));
sl@0
  1027
			}
sl@0
  1028
		}
sl@0
  1029
	}
sl@0
  1030
sl@0
  1031
void CT_KeypadDriverData::DoCmdTestMultipleKeysL(const TDesC& aSection, const TInt aAsyncErrorIndex)
sl@0
  1032
/**
sl@0
  1033
 * Tests multiple key combinations by verifying their scancodes against expected values
sl@0
  1034
 *
sl@0
  1035
 * @param aSection			The section in the ini containing data for the command
sl@0
  1036
 *
sl@0
  1037
 * @return					void
sl@0
  1038
 *
sl@0
  1039
 * @leave					System wide error
sl@0
  1040
 */
sl@0
  1041
 	{
sl@0
  1042
	iCombinationStrStore.Reset();
sl@0
  1043
	iExpectedStore.Reset();
sl@0
  1044
	iActualStore.Reset();
sl@0
  1045
	iCombinationKeyCount = 0;
sl@0
  1046
	iConsole.ClearScreen();
sl@0
  1047
sl@0
  1048
	RArray<TInt>	keyStore;
sl@0
  1049
	RArray<TPtrC>	keyStrStore;
sl@0
  1050
sl@0
  1051
	keyStore.Reset();
sl@0
  1052
	keyStrStore.Reset();
sl@0
  1053
sl@0
  1054
	TIniDataName	setStore;
sl@0
  1055
	TIniDataName	strStore;
sl@0
  1056
	TIniDataName	fullStore;
sl@0
  1057
	TPtrC			scanCodeStr;
sl@0
  1058
	TInt			scanCode;
sl@0
  1059
sl@0
  1060
	TInt	setIndex=0;
sl@0
  1061
	TBool	moreSets=ETrue;
sl@0
  1062
	while ( moreSets )
sl@0
  1063
		{
sl@0
  1064
		++setIndex;
sl@0
  1065
sl@0
  1066
		keyStore.Reset();
sl@0
  1067
		keyStrStore.Reset();
sl@0
  1068
sl@0
  1069
		setStore.Format(KSet(), setIndex);
sl@0
  1070
		setStore.Append(_L("_"));
sl@0
  1071
sl@0
  1072
		TInt	index	=0;
sl@0
  1073
		TBool	moreData=ETrue;
sl@0
  1074
		while ( moreData )
sl@0
  1075
			{
sl@0
  1076
			++index;
sl@0
  1077
sl@0
  1078
			fullStore 	= _L("");
sl@0
  1079
			strStore.Format(KScanCodeString(), index);
sl@0
  1080
			fullStore.Append(setStore);
sl@0
  1081
			fullStore.Append(strStore);
sl@0
  1082
sl@0
  1083
			moreData=GetStringFromConfig(aSection, fullStore, scanCodeStr);
sl@0
  1084
			if ( moreData )
sl@0
  1085
				{
sl@0
  1086
				fullStore = _L("");
sl@0
  1087
				strStore.Format(KScanCode(), index);
sl@0
  1088
				fullStore.Append(setStore);
sl@0
  1089
				fullStore.Append(strStore);
sl@0
  1090
sl@0
  1091
				if (!GetEnumFromConfig(aSection, fullStore, iEnumTableScanCodes, scanCode))
sl@0
  1092
					{
sl@0
  1093
					ERR_PRINTF2(_L("Invalid scancode value: %d"), scanCode);
sl@0
  1094
					SetBlockResult(EFail);
sl@0
  1095
					}
sl@0
  1096
				else
sl@0
  1097
					{
sl@0
  1098
					keyStrStore.AppendL(scanCodeStr);
sl@0
  1099
					keyStore.AppendL(scanCode);
sl@0
  1100
					}
sl@0
  1101
				++index;
sl@0
  1102
				}
sl@0
  1103
			else
sl@0
  1104
				{
sl@0
  1105
				if (index == 1)
sl@0
  1106
					{
sl@0
  1107
					moreSets = EFalse;
sl@0
  1108
					}
sl@0
  1109
				}
sl@0
  1110
			}
sl@0
  1111
sl@0
  1112
		if (moreSets)
sl@0
  1113
			{
sl@0
  1114
			TInt	keyCount=keyStore.Count();
sl@0
  1115
			for ( TInt event=0; event<iEventStore.Count(); ++event )
sl@0
  1116
				{
sl@0
  1117
				for ( TInt key=0; key<keyCount; ++key )
sl@0
  1118
					{
sl@0
  1119
					iExpectedStore.AppendL(iEventStore[event]);
sl@0
  1120
					iExpectedStore.AppendL(keyStore[key]);
sl@0
  1121
					}
sl@0
  1122
				}
sl@0
  1123
sl@0
  1124
			TIniDataName	tempStrArray;
sl@0
  1125
			for ( TInt key=0; key<keyCount; ++key )
sl@0
  1126
				{
sl@0
  1127
				if (tempStrArray == _L(""))
sl@0
  1128
					{
sl@0
  1129
					tempStrArray.Append(keyStrStore[key]);
sl@0
  1130
					}
sl@0
  1131
				else
sl@0
  1132
					{
sl@0
  1133
					tempStrArray.Append(_L(" + "));
sl@0
  1134
					tempStrArray.Append(keyStrStore[key]);
sl@0
  1135
					}
sl@0
  1136
				}
sl@0
  1137
sl@0
  1138
			iCombinationStrStore.Append(tempStrArray);
sl@0
  1139
			}
sl@0
  1140
		}
sl@0
  1141
sl@0
  1142
	keyStore.Reset();
sl@0
  1143
	keyStore.Close();
sl@0
  1144
	keyStrStore.Reset();
sl@0
  1145
	keyStrStore.Close();
sl@0
  1146
sl@0
  1147
	if (iExpectedStore.Count() > 0)
sl@0
  1148
		{//end of setup and start testcase
sl@0
  1149
		iConsole.Write(_L("Keyboard layout test.\n"));
sl@0
  1150
		iConsole.Write(_L("Press the following keys in the sequence as displayed:\n"));
sl@0
  1151
		iConsole.Write(iCombinationStrStore[0]);
sl@0
  1152
		iConsole.Write(_L("\n"));
sl@0
  1153
		iConsole.Write(_L("and release them in the same sequence."));
sl@0
  1154
sl@0
  1155
		iConsole.Read(iKey, iActiveCombination->iStatus);
sl@0
  1156
		iActiveCombination->Activate( aAsyncErrorIndex );
sl@0
  1157
		IncOutstanding(); 	// request an event
sl@0
  1158
		}
sl@0
  1159
	else
sl@0
  1160
		{
sl@0
  1161
		INFO_PRINTF1(_L("No multiple key sets available"));
sl@0
  1162
		}
sl@0
  1163
	}
sl@0
  1164
sl@0
  1165
sl@0
  1166
void CT_KeypadDriverData::DoCmdVerifyKeypadState(const TDesC& aSection, const TInt aAsyncErrorIndex)
sl@0
  1167
/**
sl@0
  1168
 * Function for verifying the keypad state manually if running manual tests
sl@0
  1169
 *
sl@0
  1170
 * @param aSection			The section in the ini containing data for the command
sl@0
  1171
 *
sl@0
  1172
 * @return					void
sl@0
  1173
 *
sl@0
  1174
 * @leave					System wide error
sl@0
  1175
 */
sl@0
  1176
	{
sl@0
  1177
	iExpectedState = 0;
sl@0
  1178
	GetIntFromConfig(aSection, KExpectedState(), iExpectedState);
sl@0
  1179
sl@0
  1180
	TInt	timeOut=0;
sl@0
  1181
	GetIntFromConfig(aSection, KTimeOut(), timeOut);
sl@0
  1182
sl@0
  1183
	TIniDataName	seconds;
sl@0
  1184
	seconds.Format(_L("%d"), timeOut / 1000000);
sl@0
  1185
sl@0
  1186
	iConsole.ClearScreen();
sl@0
  1187
	iConsole.Write(_L("Manual tests enabled...\n"));
sl@0
  1188
	iConsole.Write(_L("Press any key within "));
sl@0
  1189
	iConsole.Write(seconds);
sl@0
  1190
	iConsole.Write(_L(" seconds to check the keypad state..."));
sl@0
  1191
sl@0
  1192
	iConsole.Read(iKey, iActiveKeypadState->iStatus);
sl@0
  1193
	iActiveKeypadState->Activate( aAsyncErrorIndex, timeOut );
sl@0
  1194
	IncOutstanding(); 	// request an event
sl@0
  1195
	}
sl@0
  1196
sl@0
  1197
sl@0
  1198
void CT_KeypadDriverData::DoCmdPromptUser(const TDesC& aSection, const TInt aAsyncErrorIndex)
sl@0
  1199
/**
sl@0
  1200
 * Function for verifying the volume manually if running manual tests
sl@0
  1201
 *
sl@0
  1202
 * @param aSection			The section in the ini containing data for the command
sl@0
  1203
 *
sl@0
  1204
 * @return					void
sl@0
  1205
 *
sl@0
  1206
 * @leave					System wide error
sl@0
  1207
 */
sl@0
  1208
	{
sl@0
  1209
	iFailTest = EFalse;
sl@0
  1210
	GetBoolFromConfig(aSection, KFailTest(), iFailTest);
sl@0
  1211
sl@0
  1212
	if ( !GetStringFromConfig(aSection, KUserPrompt(), iUserPromptStr) )
sl@0
  1213
		{
sl@0
  1214
		ERR_PRINTF2(KLogMissingParameter, &KUserPrompt());
sl@0
  1215
		SetBlockResult(EFail);
sl@0
  1216
		}
sl@0
  1217
	else
sl@0
  1218
		{
sl@0
  1219
		iConsole.ClearScreen();
sl@0
  1220
		iConsole.Write(_L("Manual tests enabled...\n"));
sl@0
  1221
		iConsole.Write(iUserPromptStr);
sl@0
  1222
sl@0
  1223
		if(iFailTest)
sl@0
  1224
			{
sl@0
  1225
			GetStringFromConfig(aSection, KPassKeyStr, iPassKeyStr);
sl@0
  1226
			GetEnumFromConfig(aSection, KPassKey, iEnumTableScanCodes, iPassKey);
sl@0
  1227
sl@0
  1228
			iConsole.Write(_L("Press "));
sl@0
  1229
			iConsole.Write(iPassKeyStr);
sl@0
  1230
			iConsole.Write(_L(" to pass the test or any other key to fail->>>"));
sl@0
  1231
			}
sl@0
  1232
		else
sl@0
  1233
			{
sl@0
  1234
			iConsole.Write(_L("Press any key to continue->>>"));
sl@0
  1235
			}
sl@0
  1236
sl@0
  1237
		iConsole.Read(iKey, iActivePrompt->iStatus);
sl@0
  1238
		iActivePrompt->Activate( aAsyncErrorIndex );
sl@0
  1239
		IncOutstanding(); 	// request an event
sl@0
  1240
		}
sl@0
  1241
	}
sl@0
  1242
sl@0
  1243
sl@0
  1244
void CT_KeypadDriverData::DoCancel(CActive* aActive, TInt /*aIndex*/)
sl@0
  1245
	{
sl@0
  1246
	if( aActive == iActiveKeypadState )
sl@0
  1247
		{
sl@0
  1248
		INFO_PRINTF1(_L("Keypad state DoCancel called"));
sl@0
  1249
sl@0
  1250
		iConsole.ReadCancel();
sl@0
  1251
		DecOutstanding();
sl@0
  1252
sl@0
  1253
		if(iExpectedState == 1)
sl@0
  1254
			{
sl@0
  1255
			ERR_PRINTF1(_L("No key press detected. Expected state is 1 (on)"));
sl@0
  1256
			SetBlockResult(EFail);
sl@0
  1257
			}
sl@0
  1258
		else
sl@0
  1259
			{
sl@0
  1260
			INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
sl@0
  1261
			}
sl@0
  1262
		}
sl@0
  1263
	else
sl@0
  1264
		{
sl@0
  1265
		ERR_PRINTF1(_L("An unchecked active object cancelled"));
sl@0
  1266
		SetBlockResult(EFail);
sl@0
  1267
		}
sl@0
  1268
	}
sl@0
  1269
sl@0
  1270
void CT_KeypadDriverData::RunL(CActive* aActive, TInt aIndex)
sl@0
  1271
	{
sl@0
  1272
	DecOutstanding();
sl@0
  1273
	TBool	straySignal		= EFalse;
sl@0
  1274
	TBool	furtherRequest	= EFalse;
sl@0
  1275
sl@0
  1276
	TBool	isCombination	= EFalse;
sl@0
  1277
	TBool	isPrompt		= EFalse;
sl@0
  1278
sl@0
  1279
	if( aActive == iActiveKey )
sl@0
  1280
		{
sl@0
  1281
		INFO_PRINTF1(_L("RunL called"));
sl@0
  1282
sl@0
  1283
		isCombination			= EFalse;
sl@0
  1284
		isPrompt				= EFalse;
sl@0
  1285
		TInt	eventType		= iKey.Type();
sl@0
  1286
		TInt	scanCode		= iKey.Code();
sl@0
  1287
sl@0
  1288
		if( eventType == TRawEvent::EKeyDown || eventType == TRawEvent::EKeyUp)
sl@0
  1289
			{
sl@0
  1290
			INFO_PRINTF2(_L("Raw Event: %d"), eventType);
sl@0
  1291
sl@0
  1292
			iActualStore.AppendL(eventType);
sl@0
  1293
			iActualStore.AppendL(scanCode);
sl@0
  1294
sl@0
  1295
			INFO_PRINTF2(_L("Expected scancode string: %S"), &iAllPossibleKeysStrStore[iKeyCount]);
sl@0
  1296
			INFO_PRINTF2(_L("Actual scancode: %d"), scanCode);
sl@0
  1297
sl@0
  1298
			if (eventType == TRawEvent::EKeyUp)
sl@0
  1299
				{
sl@0
  1300
				if(iKeyCount < iAllPossibleKeysStore.Count() - 1)
sl@0
  1301
					{
sl@0
  1302
					furtherRequest = ETrue;
sl@0
  1303
					iKeyCount++;
sl@0
  1304
					}
sl@0
  1305
				else
sl@0
  1306
					{
sl@0
  1307
					furtherRequest = EFalse;
sl@0
  1308
					}
sl@0
  1309
				}
sl@0
  1310
			else
sl@0
  1311
				{
sl@0
  1312
				furtherRequest = ETrue;
sl@0
  1313
				}
sl@0
  1314
			}
sl@0
  1315
		else
sl@0
  1316
			{
sl@0
  1317
			ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
sl@0
  1318
			SetBlockResult(EFail);
sl@0
  1319
			furtherRequest = ETrue;
sl@0
  1320
			}
sl@0
  1321
		}
sl@0
  1322
	else if( aActive == iActiveCombination )
sl@0
  1323
		{
sl@0
  1324
		INFO_PRINTF1(_L("RunL called"));
sl@0
  1325
sl@0
  1326
		isCombination				= ETrue;
sl@0
  1327
		isPrompt					= EFalse;
sl@0
  1328
		TInt 	eventType			= iKey.Type();
sl@0
  1329
		TInt	scanCode			= iKey.Code();
sl@0
  1330
sl@0
  1331
		if( eventType == TRawEvent::EKeyDown )
sl@0
  1332
			{
sl@0
  1333
			INFO_PRINTF2(_L("Raw Event: %d"), eventType);
sl@0
  1334
sl@0
  1335
			iActualStore.AppendL(eventType);
sl@0
  1336
			iActualStore.AppendL(scanCode);
sl@0
  1337
sl@0
  1338
			INFO_PRINTF2(_L("Expected scancode string: %S"), &iCombinationStrStore[iCombinationCount]);
sl@0
  1339
			INFO_PRINTF2(_L("Actual scancode: %d"), scanCode);
sl@0
  1340
sl@0
  1341
			iCombinationKeyCount++;
sl@0
  1342
sl@0
  1343
			furtherRequest = ETrue;
sl@0
  1344
			}
sl@0
  1345
		else if ( eventType == TRawEvent::EKeyUp )
sl@0
  1346
			{
sl@0
  1347
			INFO_PRINTF2(_L("Raw Event: %d"), eventType);
sl@0
  1348
sl@0
  1349
			iActualStore.AppendL(eventType);
sl@0
  1350
			iActualStore.AppendL(scanCode);
sl@0
  1351
sl@0
  1352
			INFO_PRINTF2(_L("Actual scancode: %d"), scanCode);
sl@0
  1353
sl@0
  1354
			iCombinationKeyCount--;
sl@0
  1355
sl@0
  1356
			if(iCombinationCount < iCombinationStrStore.Count() - 1 && iCombinationKeyCount == 0)
sl@0
  1357
				{
sl@0
  1358
				furtherRequest = ETrue;
sl@0
  1359
				iCombinationCount++;
sl@0
  1360
				}
sl@0
  1361
			else if (iCombinationKeyCount != 0)
sl@0
  1362
				{
sl@0
  1363
				furtherRequest = ETrue;
sl@0
  1364
				}
sl@0
  1365
			else
sl@0
  1366
				{
sl@0
  1367
				furtherRequest = EFalse;
sl@0
  1368
				}
sl@0
  1369
			}
sl@0
  1370
		else
sl@0
  1371
			{
sl@0
  1372
			ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
sl@0
  1373
			SetBlockResult(EFail);
sl@0
  1374
			furtherRequest = ETrue;
sl@0
  1375
			}
sl@0
  1376
		}
sl@0
  1377
	else if( aActive == iActiveKeypadState )
sl@0
  1378
		{
sl@0
  1379
		INFO_PRINTF1(_L("RunL called"));
sl@0
  1380
sl@0
  1381
		TInt eventType = iKey.Type();
sl@0
  1382
		TInt scanCode  = iKey.Code();
sl@0
  1383
sl@0
  1384
		if(eventType == TRawEvent::EKeyDown && scanCode != 0)
sl@0
  1385
			{
sl@0
  1386
			iActiveKeypadState->KillTimer();
sl@0
  1387
			DecOutstanding();
sl@0
  1388
sl@0
  1389
			if(iExpectedState == 0)
sl@0
  1390
				{
sl@0
  1391
				ERR_PRINTF1(_L("Key press detected. Expected state is 0 (off)"));
sl@0
  1392
				SetBlockResult(EFail);
sl@0
  1393
				}
sl@0
  1394
			else
sl@0
  1395
				{
sl@0
  1396
				INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
sl@0
  1397
				}
sl@0
  1398
			}
sl@0
  1399
		}
sl@0
  1400
	else if ( aActive == iActivePrompt )
sl@0
  1401
		{
sl@0
  1402
		INFO_PRINTF1(_L("Prompt RunL called"));
sl@0
  1403
sl@0
  1404
		isCombination		= EFalse;
sl@0
  1405
		isPrompt			= ETrue;
sl@0
  1406
		TInt	eventType	= iKey.Type();
sl@0
  1407
		TInt	scanCode	= iKey.Code();
sl@0
  1408
sl@0
  1409
		if (iFailTest)
sl@0
  1410
			{
sl@0
  1411
			if(eventType == TRawEvent::EKeyDown && scanCode != iPassKey)
sl@0
  1412
				{
sl@0
  1413
				ERR_PRINTF1(_L("Test failed - User verifies that the result is not as expected"));
sl@0
  1414
				SetBlockResult(EFail);
sl@0
  1415
				furtherRequest = EFalse;
sl@0
  1416
				}
sl@0
  1417
			else if (eventType == TRawEvent::EKeyDown && scanCode == iPassKey)
sl@0
  1418
				{
sl@0
  1419
				INFO_PRINTF1(_L("Test passed - User verifies that the result is as expected"));
sl@0
  1420
				furtherRequest = EFalse;
sl@0
  1421
				}
sl@0
  1422
			else if (eventType == TRawEvent::EKeyUp)
sl@0
  1423
				{
sl@0
  1424
				furtherRequest = ETrue;
sl@0
  1425
				}
sl@0
  1426
			else
sl@0
  1427
				{
sl@0
  1428
				ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
sl@0
  1429
				SetBlockResult(EFail);
sl@0
  1430
				furtherRequest = ETrue;
sl@0
  1431
				}
sl@0
  1432
			}
sl@0
  1433
		else
sl@0
  1434
			{
sl@0
  1435
			if(eventType == TRawEvent::EKeyDown)
sl@0
  1436
				{
sl@0
  1437
				INFO_PRINTF1(_L("Continuing..."));
sl@0
  1438
				furtherRequest = EFalse;
sl@0
  1439
				}
sl@0
  1440
			else if (eventType == TRawEvent::EKeyUp)
sl@0
  1441
				{
sl@0
  1442
				furtherRequest = ETrue;
sl@0
  1443
				}
sl@0
  1444
			else
sl@0
  1445
				{
sl@0
  1446
				ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
sl@0
  1447
				SetBlockResult(EFail);
sl@0
  1448
				furtherRequest = ETrue;
sl@0
  1449
				}
sl@0
  1450
			}
sl@0
  1451
		}
sl@0
  1452
	else
sl@0
  1453
		{
sl@0
  1454
		ERR_PRINTF1(_L("An unchecked active object completed"));
sl@0
  1455
		SetBlockResult(EFail);
sl@0
  1456
		straySignal = ETrue;
sl@0
  1457
		}
sl@0
  1458
sl@0
  1459
	if( !straySignal )
sl@0
  1460
		{
sl@0
  1461
		TInt	err = aActive->iStatus.Int();
sl@0
  1462
		if( err != KErrNone )
sl@0
  1463
			{
sl@0
  1464
			if(aActive == iActiveKeypadState && err == KErrCancel)
sl@0
  1465
				{
sl@0
  1466
				if(iExpectedState == 1)
sl@0
  1467
					{
sl@0
  1468
					ERR_PRINTF1(_L("No key press detected. Expected state is 1 (on)"));
sl@0
  1469
					SetBlockResult(EFail);
sl@0
  1470
					}
sl@0
  1471
				else
sl@0
  1472
					{
sl@0
  1473
					INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
sl@0
  1474
					}
sl@0
  1475
				}
sl@0
  1476
			else
sl@0
  1477
				{
sl@0
  1478
				ERR_PRINTF2(_L("RunL Error %d"), err);
sl@0
  1479
				SetAsyncError( aIndex, err );
sl@0
  1480
				}
sl@0
  1481
			}
sl@0
  1482
		else
sl@0
  1483
			{
sl@0
  1484
			if(furtherRequest)// check if re-issue required
sl@0
  1485
				{
sl@0
  1486
				iConsole.ClearScreen();
sl@0
  1487
				INFO_PRINTF1(_L("Re-issuing Read"));
sl@0
  1488
sl@0
  1489
				if(!isCombination && !isPrompt)
sl@0
  1490
					{
sl@0
  1491
					iConsole.Write(_L("Press the key corresponding to the "));
sl@0
  1492
					iConsole.Write(iAllPossibleKeysStrStore[iKeyCount]);
sl@0
  1493
sl@0
  1494
					iConsole.Read(iKey, iActiveKey->iStatus);
sl@0
  1495
					iActiveKey->Activate(aIndex);
sl@0
  1496
					IncOutstanding();
sl@0
  1497
					}
sl@0
  1498
				else if (!isPrompt)
sl@0
  1499
					{
sl@0
  1500
					iConsole.Write(_L("Press the following keys in the same sequence as displayed:\n"));
sl@0
  1501
					iConsole.Write(iCombinationStrStore[iCombinationCount]);
sl@0
  1502
					iConsole.Write(_L("\n"));
sl@0
  1503
					iConsole.Write(_L("and release them in the same sequence."));
sl@0
  1504
sl@0
  1505
					iConsole.Read(iKey, iActiveCombination->iStatus);
sl@0
  1506
					iActiveCombination->Activate(aIndex);
sl@0
  1507
					IncOutstanding();
sl@0
  1508
					}
sl@0
  1509
				else{
sl@0
  1510
					iConsole.Write(iUserPromptStr);
sl@0
  1511
sl@0
  1512
					if(iFailTest)
sl@0
  1513
						{
sl@0
  1514
						iConsole.Write(_L("Press "));
sl@0
  1515
						iConsole.Write(iPassKeyStr);
sl@0
  1516
						iConsole.Write(_L(" to pass the test or any other key to fail->>>"));
sl@0
  1517
						}
sl@0
  1518
					else
sl@0
  1519
						{
sl@0
  1520
						iConsole.Write(_L("Press any key to continue->>>"));
sl@0
  1521
						}
sl@0
  1522
sl@0
  1523
					iConsole.Read(iKey, iActivePrompt->iStatus);
sl@0
  1524
					iActivePrompt->Activate( aIndex );
sl@0
  1525
					IncOutstanding();
sl@0
  1526
					}
sl@0
  1527
				}
sl@0
  1528
			else
sl@0
  1529
				{
sl@0
  1530
				if(aActive == iActiveKeypadState)
sl@0
  1531
					{
sl@0
  1532
					if ( iExpectedState == 0 )
sl@0
  1533
						{
sl@0
  1534
						ERR_PRINTF1(_L("Expected state is 0 (off). Verifying keypad state should have been cancelled."));
sl@0
  1535
						SetBlockResult(EFail);
sl@0
  1536
						}
sl@0
  1537
					else
sl@0
  1538
						{
sl@0
  1539
						INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
sl@0
  1540
						}
sl@0
  1541
					}
sl@0
  1542
				else
sl@0
  1543
					{
sl@0
  1544
					INFO_PRINTF1(_L("RunL call completed successfully"));
sl@0
  1545
					ProcessResults();	//process results
sl@0
  1546
					}
sl@0
  1547
				}
sl@0
  1548
			}
sl@0
  1549
		}
sl@0
  1550
	}
sl@0
  1551
sl@0
  1552
void CT_KeypadDriverData::ProcessResults()
sl@0
  1553
	{
sl@0
  1554
	INFO_PRINTF1(_L("Processing results"));
sl@0
  1555
sl@0
  1556
	if (iActualStore.Count() == iExpectedStore.Count())
sl@0
  1557
		{
sl@0
  1558
		for(TInt i = 0; i < iActualStore.Count(); i+=2)
sl@0
  1559
			{
sl@0
  1560
			if(	iActualStore[i] != iExpectedStore[i]	)//compare event
sl@0
  1561
				{
sl@0
  1562
				ERR_PRINTF3(_L("Expected event (%d) does not match Actual event (%d)! "), iExpectedStore[i], iActualStore[i]);
sl@0
  1563
				SetBlockResult(EFail);
sl@0
  1564
				}
sl@0
  1565
			else
sl@0
  1566
				{
sl@0
  1567
				INFO_PRINTF2(_L("Expected event was: %d, Actual event matches the expected one."), iExpectedStore[i]);
sl@0
  1568
				}
sl@0
  1569
sl@0
  1570
			if(iActualStore[i+1] == iExpectedStore[i+1])
sl@0
  1571
				{
sl@0
  1572
				INFO_PRINTF2(_L("Expected scancode was: %d. Actual scancode matches the expected one."), iExpectedStore[i+1]);
sl@0
  1573
				}
sl@0
  1574
			else
sl@0
  1575
				{
sl@0
  1576
				ERR_PRINTF3(_L("Actual scancode (%d) != expected scancode (%d)"), iActualStore[i+1], iExpectedStore[i+1]);
sl@0
  1577
				SetBlockResult(EFail);
sl@0
  1578
				}
sl@0
  1579
			}
sl@0
  1580
		}
sl@0
  1581
	else
sl@0
  1582
		{
sl@0
  1583
		ERR_PRINTF3(_L("Actual results array count (%d) != expected results array count (%d)"), iActualStore.Count(), iExpectedStore.Count());
sl@0
  1584
		SetBlockResult(EFail);
sl@0
  1585
		}
sl@0
  1586
	}