--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/haitest/bspsvs/suite/bsp/keypad/src/T_KeypadDriverData.cpp Tue Feb 02 01:39:10 2010 +0200
@@ -0,0 +1,1586 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include "T_KeypadDriverData.h"
+
+_LIT(KEnumNull, " ");
+_LIT(KGetScanCodes, "GetScanCodes");
+_LIT(KGetModifiers, "GetModifiers");
+_LIT(KTestAllKeys, "TestAllKeys");
+_LIT(KTestOneModifierOneOtherKey, "TestOneModifierOneOtherKey");
+_LIT(KTestTwoKeys, "TestTwoKeys");
+_LIT(KTestMultipleKeys, "TestMultipleKeys");
+_LIT(KVerifyKeypadState, "VerifyKeypadState");
+_LIT(KPromptUser, "PromptUser");
+_LIT(KSet, "set%d");
+_LIT(KScanCodeString, "scancode_string%d");
+_LIT(KScanCode, "scancode%d");
+_LIT(KModifierString, "modifier_string%d");
+_LIT(KModifier, "modifier%d");
+_LIT(KTestCoverage, "test_coverage");
+_LIT(KFailTest, "fail_test");
+_LIT(KPassKeyStr, "pass_key_str");
+_LIT(KPassKey, "pass_key");
+_LIT(KExpectedState, "expected_state");
+_LIT(KTimeOut, "timeout");
+_LIT(KUserPrompt, "user_prompt");
+_LIT(KConsoleName, "Console_Window");
+_LIT(KMaximized, "+M");
+_LIT(KRawEventMode, "+R");
+_LIT(KRawEventModeOff, "-R");
+
+_LIT(KLogMissingParameter, "Missing parameter '%S'");
+/*@}*/
+
+// Scancodes
+_LIT(KStdKeyNumber0, "'0'");
+_LIT(KStdKeyNumber1, "'1'");
+_LIT(KStdKeyNumber2, "'2'");
+_LIT(KStdKeyNumber3, "'3'");
+_LIT(KStdKeyNumber4, "'4'");
+_LIT(KStdKeyNumber5, "'5'");
+_LIT(KStdKeyNumber6, "'6'");
+_LIT(KStdKeyNumber7, "'7'");
+_LIT(KStdKeyNumber8, "'8'");
+_LIT(KStdKeyNumber9, "'9'");
+_LIT(KStdKeyLetterA, "'A'");
+_LIT(KStdKeyLetterB, "'B'");
+_LIT(KStdKeyLetterC, "'C'");
+_LIT(KStdKeyLetterD, "'D'");
+_LIT(KStdKeyLetterE, "'E'");
+_LIT(KStdKeyLetterF, "'F'");
+_LIT(KStdKeyLetterG, "'G'");
+_LIT(KStdKeyLetterH, "'H'");
+_LIT(KStdKeyLetterI, "'I'");
+_LIT(KStdKeyLetterJ, "'J'");
+_LIT(KStdKeyLetterK, "'K'");
+_LIT(KStdKeyLetterL, "'L'");
+_LIT(KStdKeyLetterM, "'M'");
+_LIT(KStdKeyLetterN, "'N'");
+_LIT(KStdKeyLetterO, "'O'");
+_LIT(KStdKeyLetterP, "'P'");
+_LIT(KStdKeyLetterQ, "'Q'");
+_LIT(KStdKeyLetterR, "'R'");
+_LIT(KStdKeyLetterS, "'S'");
+_LIT(KStdKeyLetterT, "'T'");
+_LIT(KStdKeyLetterU, "'U'");
+_LIT(KStdKeyLetterV, "'V'");
+_LIT(KStdKeyLetterW, "'W'");
+_LIT(KStdKeyLetterX, "'X'");
+_LIT(KStdKeyLetterY, "'Y'");
+_LIT(KStdKeyLetterZ, "'Z'");
+_LIT(KStdKeyAsterisk, "'*'");
+_LIT(KStdKeyNull, "EStdKeyNull");
+_LIT(KStdKeyBackspace, "EStdKeyBackspace");
+_LIT(KStdKeyTab, "EStdKeyTab");
+_LIT(KStdKeyEnter, "EStdKeyEnter");
+_LIT(KStdKeyEscape, "EStdKeyEscape");
+_LIT(KStdKeySpace, "EStdKeySpace");
+_LIT(KStdKeyPrintScreen, "EStdKeyPrintScreen");
+_LIT(KStdKeyPause, "EStdKeyPause");
+_LIT(KStdKeyHome, "EStdKeyHome");
+_LIT(KStdKeyEnd, "EStdKeyEnd");
+_LIT(KStdKeyPageUp, "EStdKeyPageUp");
+_LIT(KStdKeyPageDown, "EStdKeyPageDown");
+_LIT(KStdKeyInsert, "EStdKeyInsert");
+_LIT(KStdKeyDelete, "EStdKeyDelete");
+_LIT(KStdKeyLeftArrow, "EStdKeyLeftArrow");
+_LIT(KStdKeyRightArrow, "EStdKeyRightArrow");
+_LIT(KStdKeyUpArrow, "EStdKeyUpArrow");
+_LIT(KStdKeyDownArrow, "EStdKeyDownArrow");
+_LIT(KStdKeyLeftShift, "EStdKeyLeftShift");
+_LIT(KStdKeyRightShift, "EStdKeyRightShift");
+_LIT(KStdKeyLeftAlt, "EStdKeyLeftAlt");
+_LIT(KStdKeyRightAlt, "EStdKeyRightAlt");
+_LIT(KStdKeyLeftCtrl, "EStdKeyLeftCtrl");
+_LIT(KStdKeyRightCtrl, "EStdKeyRightCtrl");
+_LIT(KStdKeyLeftFunc, "EStdKeyLeftFunc");
+_LIT(KStdKeyRightFunc, "EStdKeyRightFunc");
+_LIT(KStdKeyCapsLock, "EStdKeyCapsLock");
+_LIT(KStdKeyNumLock, "EStdKeyNumLock");
+_LIT(KStdKeyScrollLock, "EStdKeyScrollLock");
+_LIT(KStdKeyF1, "EStdKeyF1");
+_LIT(KStdKeyF2, "EStdKeyF2");
+_LIT(KStdKeyF3, "EStdKeyF3");
+_LIT(KStdKeyF4, "EStdKeyF4");
+_LIT(KStdKeyF5, "EStdKeyF5");
+_LIT(KStdKeyF6, "EStdKeyF6");
+_LIT(KStdKeyF7, "EStdKeyF7");
+_LIT(KStdKeyF8, "EStdKeyF8");
+_LIT(KStdKeyF9, "EStdKeyF9");
+_LIT(KStdKeyF10, "EStdKeyF10");
+_LIT(KStdKeyF11, "EStdKeyF11");
+_LIT(KStdKeyF12, "EStdKeyF12");
+_LIT(KStdKeyF13, "EStdKeyF13");
+_LIT(KStdKeyF14, "EStdKeyF14");
+_LIT(KStdKeyF15, "EStdKeyF15");
+_LIT(KStdKeyF16, "EStdKeyF16");
+_LIT(KStdKeyF17, "EStdKeyF17");
+_LIT(KStdKeyF18, "EStdKeyF18");
+_LIT(KStdKeyF19, "EStdKeyF19");
+_LIT(KStdKeyF20, "EStdKeyF20");
+_LIT(KStdKeyF21, "EStdKeyF21");
+_LIT(KStdKeyF22, "EStdKeyF22");
+_LIT(KStdKeyF23, "EStdKeyF23");
+_LIT(KStdKeyF24, "EStdKeyF24");
+_LIT(KStdKeyXXX, "EStdKeyXXX");
+_LIT(KStdKeyComma, "EStdKeyComma");
+_LIT(KStdKeyFullStop, "EStdKeyFullStop");
+_LIT(KStdKeyForwardSlash, "EStdKeyForwardSlash");
+_LIT(KStdKeyBackSlash, "EStdKeyBackSlash");
+_LIT(KStdKeySemiColon, "EStdKeySemiColon");
+_LIT(KStdKeySingleQuote, "EStdKeySingleQuote");
+_LIT(KStdKeyHash, "EStdKeyHash");
+_LIT(KStdKeySquareBracketLeft, "EStdKeySquareBracketLeft");
+_LIT(KStdKeySquareBracketRight, "EStdKeySquareBracketRight");
+_LIT(KStdKeyMinus, "EStdKeyMinus");
+_LIT(KStdKeyEquals, "EStdKeyEquals");
+_LIT(KStdKeyNkpForwardSlash, "EStdKeyNkpForwardSlash");
+_LIT(KStdKeyNkpAsterisk, "EStdKeyNkpAsterisk");
+_LIT(KStdKeyNkpMinus, "EStdKeyNkpMinus");
+_LIT(KStdKeyNkpPlus, "EStdKeyNkpPlus");
+_LIT(KStdKeyNkpEnter, "EStdKeyNkpEnter");
+_LIT(KStdKeyNkp1, "EStdKeyNkp1");
+_LIT(KStdKeyNkp2, "EStdKeyNkp2");
+_LIT(KStdKeyNkp3, "EStdKeyNkp3");
+_LIT(KStdKeyNkp4, "EStdKeyNkp4");
+_LIT(KStdKeyNkp5, "EStdKeyNkp5");
+_LIT(KStdKeyNkp6, "EStdKeyNkp6");
+_LIT(KStdKeyNkp7, "EStdKeyNkp7");
+_LIT(KStdKeyNkp8, "EStdKeyNkp8");
+_LIT(KStdKeyNkp9, "EStdKeyNkp9");
+_LIT(KStdKeyNkp0, "EStdKeyNkp0");
+_LIT(KStdKeyNkpFullStop, "EStdKeyNkpFullStop");
+_LIT(KStdKeyMenu, "EStdKeyMenu");
+_LIT(KStdKeyBacklightOn, "EStdKeyBacklightOn");
+_LIT(KStdKeyBacklightOff, "EStdKeyBacklightOff");
+_LIT(KStdKeyBacklightToggle, "EStdKeyBacklightToggle");
+_LIT(KStdKeyIncContrast, "EStdKeyIncContrast");
+_LIT(KStdKeyDecContrast, "EStdKeyDecContrast");
+_LIT(KStdKeySliderDown, "EStdKeySliderDown");
+_LIT(KStdKeySliderUp, "EStdKeySliderUp");
+_LIT(KStdKeyDictaphonePlay, "EStdKeyDictaphonePlay");
+_LIT(KStdKeyDictaphoneStop, "EStdKeyDictaphoneStop");
+_LIT(KStdKeyDictaphoneRecord, "EStdKeyDictaphoneRecord");
+_LIT(KStdKeyHelp, "EStdKeyHelp");
+_LIT(KStdKeyOff, "EStdKeyOff");
+_LIT(KStdKeyDial, "EStdKeyDial");
+_LIT(KStdKeyIncVolume, "EStdKeyIncVolume");
+_LIT(KStdKeyDecVolume, "EStdKeyDecVolume");
+_LIT(KStdKeyDevice0, "EStdKeyDevice0");
+_LIT(KStdKeyDevice1, "EStdKeyDevice1");
+_LIT(KStdKeyDevice2, "EStdKeyDevice2");
+_LIT(KStdKeyDevice3, "EStdKeyDevice3");
+_LIT(KStdKeyDevice4, "EStdKeyDevice4");
+_LIT(KStdKeyDevice5, "EStdKeyDevice5");
+_LIT(KStdKeyDevice6, "EStdKeyDevice6");
+_LIT(KStdKeyDevice7, "EStdKeyDevice7");
+_LIT(KStdKeyDevice8, "EStdKeyDevice8");
+_LIT(KStdKeyDevice9, "EStdKeyDevice9");
+_LIT(KStdKeyDeviceA, "EStdKeyDeviceA");
+_LIT(KStdKeyDeviceB, "EStdKeyDeviceB");
+_LIT(KStdKeyDeviceC, "EStdKeyDeviceC");
+_LIT(KStdKeyDeviceD, "EStdKeyDeviceD");
+_LIT(KStdKeyDeviceE, "EStdKeyDeviceE");
+_LIT(KStdKeyDeviceF, "EStdKeyDeviceF");
+_LIT(KStdKeyApplication0, "EStdKeyApplication0");
+_LIT(KStdKeyApplication1, "EStdKeyApplication1");
+_LIT(KStdKeyApplication2, "EStdKeyApplication2");
+_LIT(KStdKeyApplication3, "EStdKeyApplication3");
+_LIT(KStdKeyApplication4, "EStdKeyApplication4");
+_LIT(KStdKeyApplication5, "EStdKeyApplication5");
+_LIT(KStdKeyApplication6, "EStdKeyApplication6");
+_LIT(KStdKeyApplication7, "EStdKeyApplication7");
+_LIT(KStdKeyApplication8, "EStdKeyApplication8");
+_LIT(KStdKeyApplication9, "EStdKeyApplication9");
+_LIT(KStdKeyApplicationA, "EStdKeyApplicationA");
+_LIT(KStdKeyApplicationB, "EStdKeyApplicationB");
+_LIT(KStdKeyApplicationC, "EStdKeyApplicationC");
+_LIT(KStdKeyApplicationD, "EStdKeyApplicationD");
+_LIT(KStdKeyApplicationE, "EStdKeyApplicationE");
+_LIT(KStdKeyApplicationF, "EStdKeyApplicationF");
+_LIT(KStdKeyYes, "EStdKeyYes");
+_LIT(KStdKeyNo, "EStdKeyNo");
+_LIT(KStdKeyIncBrightness, "EStdKeyIncBrightness");
+_LIT(KStdKeyDecBrightness, "EStdKeyDecBrightness");
+_LIT(KStdKeyKeyboardExtend, "EStdKeyKeyboardExtend");
+_LIT(KStdKeyDevice10, "EStdKeyDevice10");
+_LIT(KStdKeyDevice11, "EStdKeyDevice11");
+_LIT(KStdKeyDevice12, "EStdKeyDevice12");
+_LIT(KStdKeyDevice13, "EStdKeyDevice13");
+_LIT(KStdKeyDevice14, "EStdKeyDevice14");
+_LIT(KStdKeyDevice15, "EStdKeyDevice15");
+_LIT(KStdKeyDevice16, "EStdKeyDevice16");
+_LIT(KStdKeyDevice17, "EStdKeyDevice17");
+_LIT(KStdKeyDevice18, "EStdKeyDevice18");
+_LIT(KStdKeyDevice19, "EStdKeyDevice19");
+_LIT(KStdKeyDevice1A, "EStdKeyDevice1A");
+_LIT(KStdKeyDevice1B, "EStdKeyDevice1B");
+_LIT(KStdKeyDevice1C, "EStdKeyDevice1C");
+_LIT(KStdKeyDevice1D, "EStdKeyDevice1D");
+_LIT(KStdKeyDevice1E, "EStdKeyDevice1E");
+_LIT(KStdKeyDevice1F, "EStdKeyDevice1F");
+_LIT(KStdKeyApplication10, "EStdKeyApplication10");
+_LIT(KStdKeyApplication11, "EStdKeyApplication11");
+_LIT(KStdKeyApplication12, "EStdKeyApplication12");
+_LIT(KStdKeyApplication13, "EStdKeyApplication13");
+_LIT(KStdKeyApplication14, "EStdKeyApplication14");
+_LIT(KStdKeyApplication15, "EStdKeyApplication15");
+_LIT(KStdKeyApplication16, "EStdKeyApplication16");
+_LIT(KStdKeyApplication17, "EStdKeyApplication17");
+_LIT(KStdKeyApplication18, "EStdKeyApplication18");
+_LIT(KStdKeyApplication19, "EStdKeyApplication19");
+_LIT(KStdKeyApplication1A, "EStdKeyApplication1A");
+_LIT(KStdKeyApplication1B, "EStdKeyApplication1B");
+_LIT(KStdKeyApplication1C, "EStdKeyApplication1C");
+_LIT(KStdKeyApplication1D, "EStdKeyApplication1D");
+_LIT(KStdKeyApplication1E, "EStdKeyApplication1E");
+_LIT(KStdKeyApplication1F, "EStdKeyApplication1F");
+_LIT(KStdKeyDevice20, "EStdKeyDevice20");
+_LIT(KStdKeyDevice21, "EStdKeyDevice21");
+_LIT(KStdKeyDevice22, "EStdKeyDevice22");
+_LIT(KStdKeyDevice23, "EStdKeyDevice23");
+_LIT(KStdKeyDevice24, "EStdKeyDevice24");
+_LIT(KStdKeyDevice25, "EStdKeyDevice25");
+_LIT(KStdKeyDevice26, "EStdKeyDevice26");
+_LIT(KStdKeyDevice27, "EStdKeyDevice27");
+_LIT(KStdKeyApplication20, "EStdKeyApplication20");
+_LIT(KStdKeyApplication21, "EStdKeyApplication21");
+_LIT(KStdKeyApplication22, "EStdKeyApplication22");
+_LIT(KStdKeyApplication23, "EStdKeyApplication23");
+_LIT(KStdKeyApplication24, "EStdKeyApplication24");
+_LIT(KStdKeyApplication25, "EStdKeyApplication25");
+_LIT(KStdKeyApplication26, "EStdKeyApplication26");
+_LIT(KStdKeyApplication27, "EStdKeyApplication27");
+const CDataWrapperBase::TEnumEntryTable CT_KeypadDriverData::iEnumTableScanCodes[] =
+ {
+// Scancode as a descriptor Scancode
+ KStdKeyNumber0, (TStdScanCode) '0',
+ KStdKeyNumber1, (TStdScanCode) '1',
+ KStdKeyNumber2, (TStdScanCode) '2',
+ KStdKeyNumber3, (TStdScanCode) '3',
+ KStdKeyNumber4, (TStdScanCode) '4',
+ KStdKeyNumber5, (TStdScanCode) '5',
+ KStdKeyNumber6, (TStdScanCode) '6',
+ KStdKeyNumber7, (TStdScanCode) '7',
+ KStdKeyNumber8, (TStdScanCode) '8',
+ KStdKeyNumber9, (TStdScanCode) '9',
+ KStdKeyLetterA, (TStdScanCode) 'A',
+ KStdKeyLetterB, (TStdScanCode) 'B',
+ KStdKeyLetterC, (TStdScanCode) 'C',
+ KStdKeyLetterD, (TStdScanCode) 'D',
+ KStdKeyLetterE, (TStdScanCode) 'E',
+ KStdKeyLetterF, (TStdScanCode) 'F',
+ KStdKeyLetterG, (TStdScanCode) 'G',
+ KStdKeyLetterH, (TStdScanCode) 'H',
+ KStdKeyLetterI, (TStdScanCode) 'I',
+ KStdKeyLetterJ, (TStdScanCode) 'J',
+ KStdKeyLetterK, (TStdScanCode) 'K',
+ KStdKeyLetterL, (TStdScanCode) 'L',
+ KStdKeyLetterM, (TStdScanCode) 'M',
+ KStdKeyLetterN, (TStdScanCode) 'N',
+ KStdKeyLetterO, (TStdScanCode) 'O',
+ KStdKeyLetterP, (TStdScanCode) 'P',
+ KStdKeyLetterQ, (TStdScanCode) 'Q',
+ KStdKeyLetterR, (TStdScanCode) 'R',
+ KStdKeyLetterS, (TStdScanCode) 'S',
+ KStdKeyLetterT, (TStdScanCode) 'T',
+ KStdKeyLetterU, (TStdScanCode) 'U',
+ KStdKeyLetterV, (TStdScanCode) 'V',
+ KStdKeyLetterW, (TStdScanCode) 'W',
+ KStdKeyLetterX, (TStdScanCode) 'X',
+ KStdKeyLetterY, (TStdScanCode) 'Y',
+ KStdKeyLetterZ, (TStdScanCode) 'Z',
+ KStdKeyAsterisk, (TStdScanCode) '*',
+ KStdKeyNull, EStdKeyNull,
+ KStdKeyBackspace, EStdKeyBackspace,
+ KStdKeyTab, EStdKeyTab,
+ KStdKeyEnter, EStdKeyEnter,
+ KStdKeyEscape, EStdKeyEscape,
+ KStdKeySpace, EStdKeySpace,
+ KStdKeyPrintScreen, EStdKeyPrintScreen,
+ KStdKeyPause, EStdKeyPause,
+ KStdKeyHome, EStdKeyHome,
+ KStdKeyEnd, EStdKeyEnd,
+ KStdKeyPageUp, EStdKeyPageUp,
+ KStdKeyPageDown, EStdKeyPageDown,
+ KStdKeyInsert, EStdKeyInsert,
+ KStdKeyDelete, EStdKeyDelete,
+ KStdKeyLeftArrow, EStdKeyLeftArrow,
+ KStdKeyRightArrow, EStdKeyRightArrow,
+ KStdKeyUpArrow, EStdKeyUpArrow,
+ KStdKeyDownArrow, EStdKeyDownArrow,
+ KStdKeyLeftShift, EStdKeyLeftShift,
+ KStdKeyRightShift, EStdKeyRightShift,
+ KStdKeyLeftAlt, EStdKeyLeftAlt,
+ KStdKeyRightAlt, EStdKeyRightAlt,
+ KStdKeyLeftCtrl, EStdKeyLeftCtrl,
+ KStdKeyRightCtrl, EStdKeyRightCtrl,
+ KStdKeyLeftFunc, EStdKeyLeftFunc,
+ KStdKeyRightFunc, EStdKeyRightFunc,
+ KStdKeyCapsLock, EStdKeyCapsLock,
+ KStdKeyNumLock, EStdKeyNumLock,
+ KStdKeyScrollLock, EStdKeyScrollLock,
+ KStdKeyF1, EStdKeyF1,
+ KStdKeyF2, EStdKeyF2,
+ KStdKeyF3, EStdKeyF3,
+ KStdKeyF4, EStdKeyF4,
+ KStdKeyF5, EStdKeyF5,
+ KStdKeyF6, EStdKeyF6,
+ KStdKeyF7, EStdKeyF7,
+ KStdKeyF8, EStdKeyF8,
+ KStdKeyF9, EStdKeyF9,
+ KStdKeyF10, EStdKeyF10,
+ KStdKeyF11, EStdKeyF11,
+ KStdKeyF12, EStdKeyF12,
+ KStdKeyF13, EStdKeyF13,
+ KStdKeyF14, EStdKeyF14,
+ KStdKeyF15, EStdKeyF15,
+ KStdKeyF16, EStdKeyF16,
+ KStdKeyF17, EStdKeyF17,
+ KStdKeyF18, EStdKeyF18,
+ KStdKeyF19, EStdKeyF19,
+ KStdKeyF20, EStdKeyF20,
+ KStdKeyF21, EStdKeyF21,
+ KStdKeyF22, EStdKeyF22,
+ KStdKeyF23, EStdKeyF23,
+ KStdKeyF24, EStdKeyF24,
+ KStdKeyXXX, EStdKeyXXX,
+ KStdKeyComma, EStdKeyComma,
+ KStdKeyFullStop, EStdKeyFullStop,
+ KStdKeyForwardSlash, EStdKeyForwardSlash,
+ KStdKeyBackSlash, EStdKeyBackSlash,
+ KStdKeySemiColon, EStdKeySemiColon,
+ KStdKeySingleQuote, EStdKeySingleQuote,
+ KStdKeyHash, EStdKeyHash,
+ KStdKeySquareBracketLeft, EStdKeySquareBracketLeft,
+ KStdKeySquareBracketRight, EStdKeySquareBracketRight,
+ KStdKeyMinus, EStdKeyMinus,
+ KStdKeyEquals, EStdKeyEquals,
+ KStdKeyNkpForwardSlash, EStdKeyNkpForwardSlash,
+ KStdKeyNkpAsterisk, EStdKeyNkpAsterisk,
+ KStdKeyNkpMinus, EStdKeyNkpMinus,
+ KStdKeyNkpPlus, EStdKeyNkpPlus,
+ KStdKeyNkpEnter, EStdKeyNkpEnter,
+ KStdKeyNkp1, EStdKeyNkp1,
+ KStdKeyNkp2, EStdKeyNkp2,
+ KStdKeyNkp3, EStdKeyNkp3,
+ KStdKeyNkp4, EStdKeyNkp4,
+ KStdKeyNkp5, EStdKeyNkp5,
+ KStdKeyNkp6, EStdKeyNkp6,
+ KStdKeyNkp7, EStdKeyNkp7,
+ KStdKeyNkp8, EStdKeyNkp8,
+ KStdKeyNkp9, EStdKeyNkp9,
+ KStdKeyNkp0, EStdKeyNkp0,
+ KStdKeyNkpFullStop, EStdKeyNkpFullStop,
+ KStdKeyMenu, EStdKeyMenu,
+ KStdKeyBacklightOn, EStdKeyBacklightOn,
+ KStdKeyBacklightOff, EStdKeyBacklightOff,
+ KStdKeyBacklightToggle, EStdKeyBacklightToggle,
+ KStdKeyIncContrast, EStdKeyIncContrast,
+ KStdKeyDecContrast, EStdKeyDecContrast,
+ KStdKeySliderDown, EStdKeySliderDown,
+ KStdKeySliderUp, EStdKeySliderUp,
+ KStdKeyDictaphonePlay, EStdKeyDictaphonePlay,
+ KStdKeyDictaphoneStop, EStdKeyDictaphoneStop,
+ KStdKeyDictaphoneRecord, EStdKeyDictaphoneRecord,
+ KStdKeyHelp, EStdKeyHelp,
+ KStdKeyOff, EStdKeyOff,
+ KStdKeyDial, EStdKeyDial,
+ KStdKeyIncVolume, EStdKeyIncVolume,
+ KStdKeyDecVolume, EStdKeyDecVolume,
+ KStdKeyDevice0, EStdKeyDevice0,
+ KStdKeyDevice1, EStdKeyDevice1,
+ KStdKeyDevice2, EStdKeyDevice2,
+ KStdKeyDevice3, EStdKeyDevice3,
+ KStdKeyDevice4, EStdKeyDevice4,
+ KStdKeyDevice5, EStdKeyDevice5,
+ KStdKeyDevice6, EStdKeyDevice6,
+ KStdKeyDevice7, EStdKeyDevice7,
+ KStdKeyDevice8, EStdKeyDevice8,
+ KStdKeyDevice9, EStdKeyDevice9,
+ KStdKeyDeviceA, EStdKeyDeviceA,
+ KStdKeyDeviceB, EStdKeyDeviceB,
+ KStdKeyDeviceC, EStdKeyDeviceC,
+ KStdKeyDeviceD, EStdKeyDeviceD,
+ KStdKeyDeviceE, EStdKeyDeviceE,
+ KStdKeyDeviceF, EStdKeyDeviceF,
+ KStdKeyApplication0, EStdKeyApplication0,
+ KStdKeyApplication1, EStdKeyApplication1,
+ KStdKeyApplication2, EStdKeyApplication2,
+ KStdKeyApplication3, EStdKeyApplication3,
+ KStdKeyApplication4, EStdKeyApplication4,
+ KStdKeyApplication5, EStdKeyApplication5,
+ KStdKeyApplication6, EStdKeyApplication6,
+ KStdKeyApplication7, EStdKeyApplication7,
+ KStdKeyApplication8, EStdKeyApplication8,
+ KStdKeyApplication9, EStdKeyApplication9,
+ KStdKeyApplicationA, EStdKeyApplicationA,
+ KStdKeyApplicationB, EStdKeyApplicationB,
+ KStdKeyApplicationC, EStdKeyApplicationC,
+ KStdKeyApplicationD, EStdKeyApplicationD,
+ KStdKeyApplicationE, EStdKeyApplicationE,
+ KStdKeyApplicationF, EStdKeyApplicationF,
+ KStdKeyYes, EStdKeyYes,
+ KStdKeyNo, EStdKeyNo,
+ KStdKeyIncBrightness, EStdKeyIncBrightness,
+ KStdKeyDecBrightness, EStdKeyDecBrightness,
+ KStdKeyKeyboardExtend, EStdKeyKeyboardExtend,
+ KStdKeyDevice10, EStdKeyDevice10,
+ KStdKeyDevice11, EStdKeyDevice11,
+ KStdKeyDevice12, EStdKeyDevice12,
+ KStdKeyDevice13, EStdKeyDevice13,
+ KStdKeyDevice14, EStdKeyDevice14,
+ KStdKeyDevice15, EStdKeyDevice15,
+ KStdKeyDevice16, EStdKeyDevice16,
+ KStdKeyDevice17, EStdKeyDevice17,
+ KStdKeyDevice18, EStdKeyDevice18,
+ KStdKeyDevice19, EStdKeyDevice19,
+ KStdKeyDevice1A, EStdKeyDevice1A,
+ KStdKeyDevice1B, EStdKeyDevice1B,
+ KStdKeyDevice1C, EStdKeyDevice1C,
+ KStdKeyDevice1D, EStdKeyDevice1D,
+ KStdKeyDevice1E, EStdKeyDevice1E,
+ KStdKeyDevice1F, EStdKeyDevice1F,
+ KStdKeyApplication10, EStdKeyApplication10,
+ KStdKeyApplication11, EStdKeyApplication11,
+ KStdKeyApplication12, EStdKeyApplication12,
+ KStdKeyApplication13, EStdKeyApplication13,
+ KStdKeyApplication14, EStdKeyApplication14,
+ KStdKeyApplication15, EStdKeyApplication15,
+ KStdKeyApplication16, EStdKeyApplication16,
+ KStdKeyApplication17, EStdKeyApplication17,
+ KStdKeyApplication18, EStdKeyApplication18,
+ KStdKeyApplication19, EStdKeyApplication19,
+ KStdKeyApplication1A, EStdKeyApplication1A,
+ KStdKeyApplication1B, EStdKeyApplication1B,
+ KStdKeyApplication1C, EStdKeyApplication1C,
+ KStdKeyApplication1D, EStdKeyApplication1D,
+ KStdKeyApplication1E, EStdKeyApplication1E,
+ KStdKeyApplication1F, EStdKeyApplication1F,
+ KStdKeyDevice20, EStdKeyDevice20,
+ KStdKeyDevice21, EStdKeyDevice21,
+ KStdKeyDevice22, EStdKeyDevice22,
+ KStdKeyDevice23, EStdKeyDevice23,
+ KStdKeyDevice24, EStdKeyDevice24,
+ KStdKeyDevice25, EStdKeyDevice25,
+ KStdKeyDevice26, EStdKeyDevice26,
+ KStdKeyDevice27, EStdKeyDevice27,
+ KStdKeyApplication20, EStdKeyApplication20,
+ KStdKeyApplication21, EStdKeyApplication21,
+ KStdKeyApplication22, EStdKeyApplication22,
+ KStdKeyApplication23, EStdKeyApplication23,
+ KStdKeyApplication24, EStdKeyApplication24,
+ KStdKeyApplication25, EStdKeyApplication25,
+ KStdKeyApplication26, EStdKeyApplication26,
+ KStdKeyApplication27, EStdKeyApplication27,
+ KEnumNull, (TStdScanCode) -1
+ };
+
+_LIT(KEnumCoverageVeryLow, "VeryLow");
+_LIT(KEnumCoverageLow, "Low");
+_LIT(KEnumCoverageMedium, "Medium");
+_LIT(KEnumCoverageFull, "Full");
+const CDataWrapperBase::TEnumEntryTable CT_KeypadDriverData::iEnumTableCoverage[] =
+ {
+ KEnumCoverageVeryLow, 8,
+ KEnumCoverageLow, 4,
+ KEnumCoverageMedium, 2,
+ KEnumCoverageFull, 1,
+ KEnumNull, -1
+ };
+
+_LIT(KEnumKeyboardState, "EKeyboardState");
+_LIT(KEnumKeyboard, "EKeyboard");
+_LIT(KEnumKeyboardDeviceKeys, "EKeyboardDeviceKeys");
+_LIT(KEnumKeyboardAppKeys, "EKeyboardAppKeys");
+_LIT(KEnumKeyboardClick, "EKeyboardClick");
+_LIT(KEnumKeyboardClickVolumeMax, "EKeyboardClickVolumeMax");
+_LIT(KEnumKeyboardClickState, "EKeyboardClickState");
+_LIT(KEnumKeyboardClickVolume, "EKeyboardClickVolume");
+const CT_HALData::THalTableLookup CT_KeypadDriverData::iTableLookup[] =
+ {
+// Enum as a descriptor Enum Prepare input Prepare Validation of Store data returned after a Flag indicating
+// value prior to parameters value returned successful HAL::Get or if validation
+// HAL::Set call prior to after a successful HAL::Set call is mandatory
+// HAL::Get call HAL::Get call
+ KEnumKeyboardState, HALData::EKeyboardState, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardState, ETrue,
+ KEnumKeyboard, HALData::EKeyboard, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboard, ETrue,
+ KEnumKeyboardDeviceKeys, HALData::EKeyboardDeviceKeys, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardDeviceKeys, ETrue,
+ KEnumKeyboardAppKeys, HALData::EKeyboardAppKeys, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardAppKeys, ETrue,
+ KEnumKeyboardClick, HALData::EKeyboardClick, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardClick, ETrue,
+ KEnumKeyboardClickVolumeMax, HALData::EKeyboardClickVolumeMax, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardClickVolumeMax, ETrue,
+ KEnumKeyboardClickState, HALData::EKeyboardClickState, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardClickState, ETrue,
+ KEnumKeyboardClickVolume, HALData::EKeyboardClickVolume, SetPrepareInt, GetPrepareNothing, GetValidationInt, SetKeyboardClickVolume, ETrue,
+ KEnumNull, (HALData::TAttribute)0, NULL, NULL, NULL, NULL, NULL
+ };
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+CT_KeypadDriverData* CT_KeypadDriverData::NewL()
+ {
+ CT_KeypadDriverData* ret=new (ELeave) CT_KeypadDriverData();
+ CleanupStack::PushL(ret);
+ ret->ConstructL();
+ CleanupStack::Pop(ret);
+ return ret;
+ }
+
+
+CT_KeypadDriverData::CT_KeypadDriverData()
+: CT_HALData(iTableLookup)
+, iKeyboardState(-1)
+, iKeyboard(-1)
+, iKeyboardDeviceKeys(-1)
+, iKeyboardAppKeys(-1)
+, iKeyboardClick(-1)
+, iKeyboardClickVolumeMax(-1)
+, iKeyboardClickState(-1)
+, iKeyboardClickVolume(-1)
+, iActiveKey(NULL)
+, iActiveCombination(NULL)
+, iActiveKeypadState(NULL)
+, iActivePrompt(NULL)
+, iExpectedState(0)
+, iKeyCount(0)
+, iCombinationCount(0)
+, iCombinationKeyCount(0)
+, iFailTest(EFalse)
+, iPassKey(0)
+ {
+ }
+
+void CT_KeypadDriverData::ConstructL()
+/**
+ * Second phase construction
+ *
+ * @internalComponent
+ *
+ * @return N/A
+ *
+ * @pre None
+ * @post None
+ *
+ * @leave system wide error
+ */
+ {
+ iActiveKey = CActiveCallback::NewL(*this);
+ iActiveCombination = CActiveCallback::NewL(*this);
+ iActiveKeypadState = CActiveCallbackBase::NewL(*this);
+ iActivePrompt = CActiveCallback::NewL(*this);
+
+ User::LeaveIfError(iConsole.Init(KConsoleName,TSize(KConsFullScreen,KConsFullScreen)));
+ User::LeaveIfError(iConsole.Control(KMaximized));
+ User::LeaveIfError(iConsole.Control(KRawEventMode));
+
+ iEventStore.AppendL(TRawEvent::EKeyDown);
+ iEventStore.AppendL(TRawEvent::EKeyUp);
+ }
+
+CT_KeypadDriverData::~CT_KeypadDriverData()
+/**
+ * Public destructor
+ */
+ {
+ iConsole.Control(KRawEventModeOff);
+ iConsole.Destroy();
+
+ iPossibleScanCodeStrStore.Reset();
+ iPossibleScanCodeStrStore.Close();
+ iPossibleScanCodeStore.Reset();
+ iPossibleScanCodeStore.Close();
+ iPossibleModifierStrStore.Reset();
+ iPossibleModifierStrStore.Close();
+ iPossibleModifierStore.Reset();
+ iPossibleModifierStore.Close();
+ iAllPossibleKeysStrStore.Reset();
+ iAllPossibleKeysStrStore.Close();
+ iAllPossibleKeysStore.Reset();
+ iAllPossibleKeysStore.Close();
+ iCombinationStrStore.Reset();
+ iCombinationStrStore.Close();
+ iExpectedStore.Reset();
+ iExpectedStore.Close();
+ iActualStore.Reset();
+ iActualStore.Close();
+ iEventStore.Reset();
+ iEventStore.Close();
+
+ delete iActiveKey;
+ delete iActiveCombination;
+ delete iActiveKeypadState;
+ delete iActivePrompt;
+ }
+
+TAny* CT_KeypadDriverData::GetObject()
+/**
+ * Return a pointer to the object that the data wraps
+ *
+ * @return pointer to the object that the data wraps
+ */
+ {
+ return NULL;
+ }
+
+// An empty function to ensure that the code will work fine with HAL_Data
+TBool CT_KeypadDriverData::GetPrepareNothing(CDataWrapperBase* /*aThis*/, const TDesC& /*aSection*/, TInt& /*aValueStart*/, TInt& /*aValueEnd*/)
+ {
+ return ETrue;
+ }
+
+// Store the keypad state
+void CT_KeypadDriverData::SetKeyboardState(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardState=aValue;
+ }
+
+// Store the keypad type
+void CT_KeypadDriverData::SetKeyboard(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboard=aValue;
+ }
+
+// Store the amount of keypad device keys
+void CT_KeypadDriverData::SetKeyboardDeviceKeys(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardDeviceKeys=aValue;
+ }
+
+// Store the amount of keypad app keys
+void CT_KeypadDriverData::SetKeyboardAppKeys(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardAppKeys=aValue;
+ }
+
+// Store the keypad click indicator
+void CT_KeypadDriverData::SetKeyboardClick(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClick=aValue;
+ }
+
+// Store the keypad max click volume
+void CT_KeypadDriverData::SetKeyboardClickVolumeMax(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClickVolumeMax=aValue;
+ }
+
+// Store the keypad click state
+void CT_KeypadDriverData::SetKeyboardClickState(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClickState=aValue;
+ }
+
+// Store the keypad click volume
+void CT_KeypadDriverData::SetKeyboardClickVolume(CDataWrapperBase* aThis, TInt aValue)
+ {
+ static_cast<CT_KeypadDriverData*>(aThis)->iKeyboardClickVolume=aValue;
+ }
+
+TBool CT_KeypadDriverData::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Process a command read from the ini file
+ *
+ * @param aCommand The command to process
+ * @param aSection The section in the ini containing data for the command
+ * @param aAsyncErrorIndex Command index for async calls to return errors to
+ *
+ * @return ETrue if the command is processed
+ *
+ * @leave System wide error
+ */
+ {
+ TBool ret = ETrue;
+
+ if ( aCommand == KGetScanCodes )
+ {
+ DoCmdGetScanCodesL(aSection);
+ }
+ else if ( aCommand == KGetModifiers )
+ {
+ DoCmdGetModifiersL(aSection);
+ }
+ else if ( aCommand == KTestAllKeys )
+ {
+ DoCmdTestAllKeysL(aAsyncErrorIndex);
+ }
+ else if ( aCommand == KTestOneModifierOneOtherKey )
+ {
+ DoCmdTestOneModifierOneOtherKeyL(aSection, aAsyncErrorIndex);
+ }
+ else if ( aCommand == KTestTwoKeys )
+ {
+ DoCmdTestTwoKeysL(aSection, aAsyncErrorIndex);
+ }
+ else if ( aCommand == KTestMultipleKeys )
+ {
+ DoCmdTestMultipleKeysL(aSection, aAsyncErrorIndex);
+ }
+ else if ( aCommand == KVerifyKeypadState )
+ {
+ DoCmdVerifyKeypadState(aSection, aAsyncErrorIndex);
+ }
+ else if ( aCommand == KPromptUser )
+ {
+ DoCmdPromptUser(aSection, aAsyncErrorIndex);
+ }
+ else
+ {
+ ret = CT_HALData::DoCommandL(aCommand, aSection, aAsyncErrorIndex);
+ }
+
+ return ret;
+ }
+
+
+void CT_KeypadDriverData::DoCmdGetScanCodesL(const TDesC& aSection)
+/**
+ * Get the scancodes of the platform
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iPossibleScanCodeStrStore.Reset();
+ iPossibleScanCodeStore.Reset();
+ iAllPossibleKeysStrStore.Reset();
+ iAllPossibleKeysStore.Reset();
+
+ TIniDataName tempStore;
+ TPtrC scanCodeStr;
+ TPtrC scanCodeName;
+ TInt scanCode;
+
+ TInt index=0;
+ TBool moreData=ETrue;
+ while ( moreData )
+ {
+ ++index;
+ tempStore.Format(KScanCodeString(), index);
+ moreData=GetStringFromConfig(aSection, tempStore, scanCodeStr);
+ if ( moreData )
+ {
+ tempStore.Format(KScanCode(), index);
+ if (!GetEnumFromConfig(aSection, tempStore, iEnumTableScanCodes, scanCode))
+ {
+ ERR_PRINTF2(_L("Invalid scancode value: %d"), scanCode);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ iPossibleScanCodeStrStore.AppendL(scanCodeStr);
+ iPossibleScanCodeStore.AppendL(scanCode);
+
+ iAllPossibleKeysStrStore.AppendL(scanCodeStr);
+ iAllPossibleKeysStore.AppendL(scanCode);
+ }
+ }
+ }
+ }
+
+void CT_KeypadDriverData::DoCmdGetModifiersL(const TDesC& aSection)
+/**
+ * Get the modifiers of the platform
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iPossibleModifierStrStore.Reset();
+ iPossibleModifierStore.Reset();
+
+ TIniDataName tempStore;
+ TPtrC modifierStr;
+ TInt modifier;
+
+ TInt index=0;
+ TBool moreData=ETrue;
+ while ( moreData )
+ {
+ ++index;
+ tempStore.Format(KModifierString(), index);
+ moreData=GetStringFromConfig(aSection, tempStore, modifierStr);
+ if ( moreData )
+ {
+ tempStore.Format(KModifier(), index);
+ if (!GetEnumFromConfig(aSection, tempStore, iEnumTableScanCodes, modifier))
+ {
+ ERR_PRINTF2(_L("Invalid modifier value: %d"), modifier);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ iPossibleModifierStrStore.AppendL(modifierStr);
+ iPossibleModifierStore.AppendL(modifier);
+
+ iAllPossibleKeysStrStore.AppendL(modifierStr);
+ iAllPossibleKeysStore.AppendL(modifier);
+ }
+ }
+ }
+ }
+
+void CT_KeypadDriverData::DoCmdTestAllKeysL(const TInt aAsyncErrorIndex)
+/**
+ * Tests one key at the time by verifying the actual scancode against expected value
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iExpectedStore.Reset();
+ iActualStore.Reset();
+ iConsole.ClearScreen();
+
+ iKeyCount=0;
+ for ( TInt key=0; key<iAllPossibleKeysStore.Count(); ++key )
+ {
+ for ( TInt event=0; event<iEventStore.Count(); ++event )
+ {
+ iExpectedStore.AppendL(iEventStore[event]);
+ iExpectedStore.AppendL(iAllPossibleKeysStore[key]);
+ }
+ }
+
+ //end of setup and start testcase
+ iConsole.Write(_L("Keyboard layout test.\n"));
+ iConsole.Write(_L("Press the key corresponding to the "));
+
+ iConsole.Write(iAllPossibleKeysStrStore[iKeyCount]);
+
+ iConsole.Read(iKey, iActiveKey->iStatus);
+ iActiveKey->Activate( aAsyncErrorIndex );
+ IncOutstanding(); // request an event
+ }
+
+
+void CT_KeypadDriverData::DoCmdTestOneModifierOneOtherKeyL(const TDesC& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Tests one modifier + key combinations by verifying their scancodes against expected values
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iCombinationStrStore.Reset();
+ iExpectedStore.Reset();
+ iActualStore.Reset();
+ iConsole.ClearScreen();
+ iCombinationCount = 0;
+ iCombinationKeyCount = 0;
+
+ TInt divider = 1;
+ TBool dataOk=GetEnumFromConfig(aSection, KTestCoverage, iEnumTableCoverage, divider);
+ if ( !dataOk )
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KTestCoverage());
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ TInt modifierCount = iPossibleModifierStore.Count();
+ TInt keyCount = (TInt)(iPossibleScanCodeStore.Count() / divider);
+
+ if (divider != 1)
+ {
+ ++keyCount;
+ }
+
+ for ( TInt key=0; key<keyCount; ++key )
+ {
+ for ( TInt modifier=0; modifier<modifierCount; ++modifier )
+ {
+ for ( TInt event=0; event<iEventStore.Count(); ++event )
+ {
+ iExpectedStore.AppendL(iEventStore[event]);
+ iExpectedStore.AppendL(iPossibleModifierStore[modifier]);
+ iExpectedStore.AppendL(iEventStore[event]);
+ iExpectedStore.AppendL(iPossibleScanCodeStore[key]);
+ }
+
+ TIniDataName tempStrArray;
+ tempStrArray.Append(iPossibleModifierStrStore[modifier]);
+ tempStrArray.Append(_L(" + "));
+ tempStrArray.Append(iPossibleScanCodeStrStore[key]);
+ iCombinationStrStore.Append(tempStrArray);
+ }
+ }
+
+ if ( iExpectedStore.Count()>0 )
+ {//end of setup and start testcase
+ iConsole.Write(_L("Keyboard layout test.\n"));
+ iConsole.Write(_L("Press the following keys in the sequence as displayed:\n"));
+ iConsole.Write(iCombinationStrStore[iCombinationCount]);
+ iConsole.Write(_L("\n"));
+ iConsole.Write(_L("and release them in the same sequence."));
+
+ iConsole.Read(iKey, iActiveCombination->iStatus);
+ iActiveCombination->Activate( aAsyncErrorIndex );
+ IncOutstanding(); // request an event*/
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No modifiers and/or keys available or too small test coverage set"));
+ }
+ }
+ }
+
+void CT_KeypadDriverData::DoCmdTestTwoKeysL(const TDesC& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Tests key + key combinations by verifying their scancodes against expected values
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iCombinationStrStore.Reset();
+ iExpectedStore.Reset();
+ iActualStore.Reset();
+ iConsole.ClearScreen();
+ iCombinationCount = 0;
+ iCombinationKeyCount = 0;
+
+ TInt divider = 1;
+ TBool dataOk=GetEnumFromConfig(aSection, KTestCoverage, iEnumTableCoverage, divider);
+ if ( !dataOk )
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KTestCoverage());
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ TInt keyCount=(TInt)(iPossibleScanCodeStore.Count() / divider);
+
+ if (divider != 1)
+ {
+ ++keyCount;
+ }
+
+ for ( TInt key1=0; key1<keyCount; ++key1 )
+ {
+ for ( TInt key2= 0; key2<keyCount; ++key2 )
+ {
+ if ( iPossibleScanCodeStore[key1]!=iPossibleScanCodeStore[key2] )
+ {
+ for ( TInt event=0; event<iEventStore.Count(); ++event )
+ {
+ iExpectedStore.AppendL(iEventStore[event]);
+ iExpectedStore.AppendL(iPossibleScanCodeStore[key1]);
+ iExpectedStore.AppendL(iEventStore[event]);
+ iExpectedStore.AppendL(iPossibleScanCodeStore[key2]);
+ }
+
+ TIniDataName tempStrArray;
+ tempStrArray.Append(iPossibleScanCodeStrStore[key1]);
+ tempStrArray.Append(_L(" + "));
+ tempStrArray.Append(iPossibleScanCodeStrStore[key2]);
+ iCombinationStrStore.Append(tempStrArray);
+ }
+ }
+ }
+
+ if ( iExpectedStore.Count()>0 )
+ {//end of setup and start testcase
+ iConsole.Write(_L("Keyboard layout test.\n"));
+ iConsole.Write(_L("Press the following keys in the sequence as displayed:\n"));
+ iConsole.Write(iCombinationStrStore[iCombinationCount]);
+ iConsole.Write(_L("\n"));
+ iConsole.Write(_L("and release them in the same sequence."));
+
+ iConsole.Read(iKey, iActiveCombination->iStatus);
+ iActiveCombination->Activate( aAsyncErrorIndex );
+ IncOutstanding(); // request an event*/
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No keys available or too small test coverage set"));
+ }
+ }
+ }
+
+void CT_KeypadDriverData::DoCmdTestMultipleKeysL(const TDesC& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Tests multiple key combinations by verifying their scancodes against expected values
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iCombinationStrStore.Reset();
+ iExpectedStore.Reset();
+ iActualStore.Reset();
+ iCombinationKeyCount = 0;
+ iConsole.ClearScreen();
+
+ RArray<TInt> keyStore;
+ RArray<TPtrC> keyStrStore;
+
+ keyStore.Reset();
+ keyStrStore.Reset();
+
+ TIniDataName setStore;
+ TIniDataName strStore;
+ TIniDataName fullStore;
+ TPtrC scanCodeStr;
+ TInt scanCode;
+
+ TInt setIndex=0;
+ TBool moreSets=ETrue;
+ while ( moreSets )
+ {
+ ++setIndex;
+
+ keyStore.Reset();
+ keyStrStore.Reset();
+
+ setStore.Format(KSet(), setIndex);
+ setStore.Append(_L("_"));
+
+ TInt index =0;
+ TBool moreData=ETrue;
+ while ( moreData )
+ {
+ ++index;
+
+ fullStore = _L("");
+ strStore.Format(KScanCodeString(), index);
+ fullStore.Append(setStore);
+ fullStore.Append(strStore);
+
+ moreData=GetStringFromConfig(aSection, fullStore, scanCodeStr);
+ if ( moreData )
+ {
+ fullStore = _L("");
+ strStore.Format(KScanCode(), index);
+ fullStore.Append(setStore);
+ fullStore.Append(strStore);
+
+ if (!GetEnumFromConfig(aSection, fullStore, iEnumTableScanCodes, scanCode))
+ {
+ ERR_PRINTF2(_L("Invalid scancode value: %d"), scanCode);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ keyStrStore.AppendL(scanCodeStr);
+ keyStore.AppendL(scanCode);
+ }
+ ++index;
+ }
+ else
+ {
+ if (index == 1)
+ {
+ moreSets = EFalse;
+ }
+ }
+ }
+
+ if (moreSets)
+ {
+ TInt keyCount=keyStore.Count();
+ for ( TInt event=0; event<iEventStore.Count(); ++event )
+ {
+ for ( TInt key=0; key<keyCount; ++key )
+ {
+ iExpectedStore.AppendL(iEventStore[event]);
+ iExpectedStore.AppendL(keyStore[key]);
+ }
+ }
+
+ TIniDataName tempStrArray;
+ for ( TInt key=0; key<keyCount; ++key )
+ {
+ if (tempStrArray == _L(""))
+ {
+ tempStrArray.Append(keyStrStore[key]);
+ }
+ else
+ {
+ tempStrArray.Append(_L(" + "));
+ tempStrArray.Append(keyStrStore[key]);
+ }
+ }
+
+ iCombinationStrStore.Append(tempStrArray);
+ }
+ }
+
+ keyStore.Reset();
+ keyStore.Close();
+ keyStrStore.Reset();
+ keyStrStore.Close();
+
+ if (iExpectedStore.Count() > 0)
+ {//end of setup and start testcase
+ iConsole.Write(_L("Keyboard layout test.\n"));
+ iConsole.Write(_L("Press the following keys in the sequence as displayed:\n"));
+ iConsole.Write(iCombinationStrStore[0]);
+ iConsole.Write(_L("\n"));
+ iConsole.Write(_L("and release them in the same sequence."));
+
+ iConsole.Read(iKey, iActiveCombination->iStatus);
+ iActiveCombination->Activate( aAsyncErrorIndex );
+ IncOutstanding(); // request an event
+ }
+ else
+ {
+ INFO_PRINTF1(_L("No multiple key sets available"));
+ }
+ }
+
+
+void CT_KeypadDriverData::DoCmdVerifyKeypadState(const TDesC& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Function for verifying the keypad state manually if running manual tests
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iExpectedState = 0;
+ GetIntFromConfig(aSection, KExpectedState(), iExpectedState);
+
+ TInt timeOut=0;
+ GetIntFromConfig(aSection, KTimeOut(), timeOut);
+
+ TIniDataName seconds;
+ seconds.Format(_L("%d"), timeOut / 1000000);
+
+ iConsole.ClearScreen();
+ iConsole.Write(_L("Manual tests enabled...\n"));
+ iConsole.Write(_L("Press any key within "));
+ iConsole.Write(seconds);
+ iConsole.Write(_L(" seconds to check the keypad state..."));
+
+ iConsole.Read(iKey, iActiveKeypadState->iStatus);
+ iActiveKeypadState->Activate( aAsyncErrorIndex, timeOut );
+ IncOutstanding(); // request an event
+ }
+
+
+void CT_KeypadDriverData::DoCmdPromptUser(const TDesC& aSection, const TInt aAsyncErrorIndex)
+/**
+ * Function for verifying the volume manually if running manual tests
+ *
+ * @param aSection The section in the ini containing data for the command
+ *
+ * @return void
+ *
+ * @leave System wide error
+ */
+ {
+ iFailTest = EFalse;
+ GetBoolFromConfig(aSection, KFailTest(), iFailTest);
+
+ if ( !GetStringFromConfig(aSection, KUserPrompt(), iUserPromptStr) )
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KUserPrompt());
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ iConsole.ClearScreen();
+ iConsole.Write(_L("Manual tests enabled...\n"));
+ iConsole.Write(iUserPromptStr);
+
+ if(iFailTest)
+ {
+ GetStringFromConfig(aSection, KPassKeyStr, iPassKeyStr);
+ GetEnumFromConfig(aSection, KPassKey, iEnumTableScanCodes, iPassKey);
+
+ iConsole.Write(_L("Press "));
+ iConsole.Write(iPassKeyStr);
+ iConsole.Write(_L(" to pass the test or any other key to fail->>>"));
+ }
+ else
+ {
+ iConsole.Write(_L("Press any key to continue->>>"));
+ }
+
+ iConsole.Read(iKey, iActivePrompt->iStatus);
+ iActivePrompt->Activate( aAsyncErrorIndex );
+ IncOutstanding(); // request an event
+ }
+ }
+
+
+void CT_KeypadDriverData::DoCancel(CActive* aActive, TInt /*aIndex*/)
+ {
+ if( aActive == iActiveKeypadState )
+ {
+ INFO_PRINTF1(_L("Keypad state DoCancel called"));
+
+ iConsole.ReadCancel();
+ DecOutstanding();
+
+ if(iExpectedState == 1)
+ {
+ ERR_PRINTF1(_L("No key press detected. Expected state is 1 (on)"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("An unchecked active object cancelled"));
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_KeypadDriverData::RunL(CActive* aActive, TInt aIndex)
+ {
+ DecOutstanding();
+ TBool straySignal = EFalse;
+ TBool furtherRequest = EFalse;
+
+ TBool isCombination = EFalse;
+ TBool isPrompt = EFalse;
+
+ if( aActive == iActiveKey )
+ {
+ INFO_PRINTF1(_L("RunL called"));
+
+ isCombination = EFalse;
+ isPrompt = EFalse;
+ TInt eventType = iKey.Type();
+ TInt scanCode = iKey.Code();
+
+ if( eventType == TRawEvent::EKeyDown || eventType == TRawEvent::EKeyUp)
+ {
+ INFO_PRINTF2(_L("Raw Event: %d"), eventType);
+
+ iActualStore.AppendL(eventType);
+ iActualStore.AppendL(scanCode);
+
+ INFO_PRINTF2(_L("Expected scancode string: %S"), &iAllPossibleKeysStrStore[iKeyCount]);
+ INFO_PRINTF2(_L("Actual scancode: %d"), scanCode);
+
+ if (eventType == TRawEvent::EKeyUp)
+ {
+ if(iKeyCount < iAllPossibleKeysStore.Count() - 1)
+ {
+ furtherRequest = ETrue;
+ iKeyCount++;
+ }
+ else
+ {
+ furtherRequest = EFalse;
+ }
+ }
+ else
+ {
+ furtherRequest = ETrue;
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
+ SetBlockResult(EFail);
+ furtherRequest = ETrue;
+ }
+ }
+ else if( aActive == iActiveCombination )
+ {
+ INFO_PRINTF1(_L("RunL called"));
+
+ isCombination = ETrue;
+ isPrompt = EFalse;
+ TInt eventType = iKey.Type();
+ TInt scanCode = iKey.Code();
+
+ if( eventType == TRawEvent::EKeyDown )
+ {
+ INFO_PRINTF2(_L("Raw Event: %d"), eventType);
+
+ iActualStore.AppendL(eventType);
+ iActualStore.AppendL(scanCode);
+
+ INFO_PRINTF2(_L("Expected scancode string: %S"), &iCombinationStrStore[iCombinationCount]);
+ INFO_PRINTF2(_L("Actual scancode: %d"), scanCode);
+
+ iCombinationKeyCount++;
+
+ furtherRequest = ETrue;
+ }
+ else if ( eventType == TRawEvent::EKeyUp )
+ {
+ INFO_PRINTF2(_L("Raw Event: %d"), eventType);
+
+ iActualStore.AppendL(eventType);
+ iActualStore.AppendL(scanCode);
+
+ INFO_PRINTF2(_L("Actual scancode: %d"), scanCode);
+
+ iCombinationKeyCount--;
+
+ if(iCombinationCount < iCombinationStrStore.Count() - 1 && iCombinationKeyCount == 0)
+ {
+ furtherRequest = ETrue;
+ iCombinationCount++;
+ }
+ else if (iCombinationKeyCount != 0)
+ {
+ furtherRequest = ETrue;
+ }
+ else
+ {
+ furtherRequest = EFalse;
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
+ SetBlockResult(EFail);
+ furtherRequest = ETrue;
+ }
+ }
+ else if( aActive == iActiveKeypadState )
+ {
+ INFO_PRINTF1(_L("RunL called"));
+
+ TInt eventType = iKey.Type();
+ TInt scanCode = iKey.Code();
+
+ if(eventType == TRawEvent::EKeyDown && scanCode != 0)
+ {
+ iActiveKeypadState->KillTimer();
+ DecOutstanding();
+
+ if(iExpectedState == 0)
+ {
+ ERR_PRINTF1(_L("Key press detected. Expected state is 0 (off)"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
+ }
+ }
+ }
+ else if ( aActive == iActivePrompt )
+ {
+ INFO_PRINTF1(_L("Prompt RunL called"));
+
+ isCombination = EFalse;
+ isPrompt = ETrue;
+ TInt eventType = iKey.Type();
+ TInt scanCode = iKey.Code();
+
+ if (iFailTest)
+ {
+ if(eventType == TRawEvent::EKeyDown && scanCode != iPassKey)
+ {
+ ERR_PRINTF1(_L("Test failed - User verifies that the result is not as expected"));
+ SetBlockResult(EFail);
+ furtherRequest = EFalse;
+ }
+ else if (eventType == TRawEvent::EKeyDown && scanCode == iPassKey)
+ {
+ INFO_PRINTF1(_L("Test passed - User verifies that the result is as expected"));
+ furtherRequest = EFalse;
+ }
+ else if (eventType == TRawEvent::EKeyUp)
+ {
+ furtherRequest = ETrue;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
+ SetBlockResult(EFail);
+ furtherRequest = ETrue;
+ }
+ }
+ else
+ {
+ if(eventType == TRawEvent::EKeyDown)
+ {
+ INFO_PRINTF1(_L("Continuing..."));
+ furtherRequest = EFalse;
+ }
+ else if (eventType == TRawEvent::EKeyUp)
+ {
+ furtherRequest = ETrue;
+ }
+ else
+ {
+ ERR_PRINTF2(_L("Unexpected Raw Event: %d"), eventType);
+ SetBlockResult(EFail);
+ furtherRequest = ETrue;
+ }
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("An unchecked active object completed"));
+ SetBlockResult(EFail);
+ straySignal = ETrue;
+ }
+
+ if( !straySignal )
+ {
+ TInt err = aActive->iStatus.Int();
+ if( err != KErrNone )
+ {
+ if(aActive == iActiveKeypadState && err == KErrCancel)
+ {
+ if(iExpectedState == 1)
+ {
+ ERR_PRINTF1(_L("No key press detected. Expected state is 1 (on)"));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
+ }
+ }
+ else
+ {
+ ERR_PRINTF2(_L("RunL Error %d"), err);
+ SetAsyncError( aIndex, err );
+ }
+ }
+ else
+ {
+ if(furtherRequest)// check if re-issue required
+ {
+ iConsole.ClearScreen();
+ INFO_PRINTF1(_L("Re-issuing Read"));
+
+ if(!isCombination && !isPrompt)
+ {
+ iConsole.Write(_L("Press the key corresponding to the "));
+ iConsole.Write(iAllPossibleKeysStrStore[iKeyCount]);
+
+ iConsole.Read(iKey, iActiveKey->iStatus);
+ iActiveKey->Activate(aIndex);
+ IncOutstanding();
+ }
+ else if (!isPrompt)
+ {
+ iConsole.Write(_L("Press the following keys in the same sequence as displayed:\n"));
+ iConsole.Write(iCombinationStrStore[iCombinationCount]);
+ iConsole.Write(_L("\n"));
+ iConsole.Write(_L("and release them in the same sequence."));
+
+ iConsole.Read(iKey, iActiveCombination->iStatus);
+ iActiveCombination->Activate(aIndex);
+ IncOutstanding();
+ }
+ else{
+ iConsole.Write(iUserPromptStr);
+
+ if(iFailTest)
+ {
+ iConsole.Write(_L("Press "));
+ iConsole.Write(iPassKeyStr);
+ iConsole.Write(_L(" to pass the test or any other key to fail->>>"));
+ }
+ else
+ {
+ iConsole.Write(_L("Press any key to continue->>>"));
+ }
+
+ iConsole.Read(iKey, iActivePrompt->iStatus);
+ iActivePrompt->Activate( aIndex );
+ IncOutstanding();
+ }
+ }
+ else
+ {
+ if(aActive == iActiveKeypadState)
+ {
+ if ( iExpectedState == 0 )
+ {
+ ERR_PRINTF1(_L("Expected state is 0 (off). Verifying keypad state should have been cancelled."));
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Key press result is corresponding to the expected state: %d"), iExpectedState);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("RunL call completed successfully"));
+ ProcessResults(); //process results
+ }
+ }
+ }
+ }
+ }
+
+void CT_KeypadDriverData::ProcessResults()
+ {
+ INFO_PRINTF1(_L("Processing results"));
+
+ if (iActualStore.Count() == iExpectedStore.Count())
+ {
+ for(TInt i = 0; i < iActualStore.Count(); i+=2)
+ {
+ if( iActualStore[i] != iExpectedStore[i] )//compare event
+ {
+ ERR_PRINTF3(_L("Expected event (%d) does not match Actual event (%d)! "), iExpectedStore[i], iActualStore[i]);
+ SetBlockResult(EFail);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Expected event was: %d, Actual event matches the expected one."), iExpectedStore[i]);
+ }
+
+ if(iActualStore[i+1] == iExpectedStore[i+1])
+ {
+ INFO_PRINTF2(_L("Expected scancode was: %d. Actual scancode matches the expected one."), iExpectedStore[i+1]);
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Actual scancode (%d) != expected scancode (%d)"), iActualStore[i+1], iExpectedStore[i+1]);
+ SetBlockResult(EFail);
+ }
+ }
+ }
+ else
+ {
+ ERR_PRINTF3(_L("Actual results array count (%d) != expected results array count (%d)"), iActualStore.Count(), iExpectedStore.Count());
+ SetBlockResult(EFail);
+ }
+ }