--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/hti/PC_Tools/HTIGateway/ServicePlugins/HtiKeyEvent/HtiKeyEvent.cpp Wed Oct 13 16:17:58 2010 +0300
@@ -0,0 +1,246 @@
+/*
+* Copyright (c) 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 "HtiKeyEventH.h"
+#include "HtiPlugin.h"
+#include "HtiSoapHandlerInterface.h"
+
+const unsigned char CMD_SINGLE_KEY_PRESS = 0x01;
+const unsigned char CMD_KEY_DOWN = 0x02;
+const unsigned char CMD_KEY_UP = 0x03;
+const unsigned char CMD_TYPE_TEXT = 0x04;
+const unsigned char CMD_LONG_KEY_PRESS = 0x05;
+const unsigned char CMD_TYPE_TEXT_PASSWORD = 0x06;
+const unsigned char CMD_KEY_PRESS_SEQUENCE = 0x07;
+const unsigned char CMD_TAP_SCREEN = 0x10;
+const unsigned char CMD_TAP_AND_DRAG = 0x11;
+const unsigned char CMD_TAP_AND_DRAG_MULTI = 0x12;
+const unsigned char CMD_POINTER_DOWN = 0x13;
+const unsigned char CMD_POINTER_UP = 0x14;
+
+const unsigned char KEY_EVENT_OK = 0xFF;
+
+//**********************************************************************************
+// SOAP FUNCTIONS
+//
+//**********************************************************************************
+//**********************************************************************************
+// ns1__pressKey()
+//**********************************************************************************
+int ns1__pressKey(struct soap* soap,
+ short key,
+ struct ns1__pressKeyResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_SINGLE_KEY_PRESS );
+ msg.AddWord( key );
+ return msg.SendReceiveMsg( HTIMSG_TIMEOUT_10_SECONDS );
+}
+
+//**********************************************************************************
+// ns1__holdKey()
+//**********************************************************************************
+int ns1__holdKey(struct soap* soap,
+ short key,
+ struct ns1__holdKeyResponse *out )
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_KEY_DOWN );
+ msg.AddWord( key );
+ return msg.SendReceiveMsg( HTIMSG_TIMEOUT_10_SECONDS );
+}
+
+//**********************************************************************************
+// ns1__releaseKey()
+//**********************************************************************************
+int ns1__releaseKey(struct soap* soap,
+ short key,
+ struct ns1__releaseKeyResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_KEY_UP );
+ msg.AddWord( key );
+ return msg.SendReceiveMsg( HTIMSG_TIMEOUT_10_SECONDS );
+}
+
+//**********************************************************************************
+// ns1__longKeyPress()
+//**********************************************************************************
+int ns1__longKeyPress(struct soap* soap,
+ short key,
+ short time,
+ struct ns1__longKeyPressResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_LONG_KEY_PRESS );
+ msg.AddWord( key );
+ msg.AddWord( time );
+ return msg.SendReceiveMsg( time + HTIMSG_TIMEOUT_10_SECONDS );
+}
+
+//**********************************************************************************
+// ns1__typeText()
+//**********************************************************************************
+int ns1__typeText(struct soap* soap,
+ wchar_t *text,
+ struct ns1__typeTextResponse *out)
+{
+ if(check_mandatory_wcstring_parameter(soap, text, "text"))
+ return SOAP_FAULT;
+
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_TYPE_TEXT );
+ msg.AddWCString( text );
+
+ // Set timeout for ok message
+ // Assume that writing 100 characters takes 10 seconds (should be more than enough)
+ // = 10s/100char = 0.1s/char = 100ms/char
+ int timeout = (int) wcslen(text)*100;
+ timeout+= HTIMSG_TIMEOUT_10_SECONDS; // add extra 10 seconds for lag
+ return msg.SendReceiveMsg( timeout );
+}
+
+//**********************************************************************************
+// ns1__typeTextPassword()
+//**********************************************************************************
+int ns1__typeTextPassword(struct soap* soap,
+ wchar_t *text,
+ struct ns1__typeTextPasswordResponse *out)
+{
+ if(check_mandatory_wcstring_parameter(soap, text, "text"))
+ return SOAP_FAULT;
+
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_TYPE_TEXT_PASSWORD );
+ msg.AddWCString( text );
+
+ // Set timeout for ok message
+ // Assume that writing 100 characters takes 10 seconds (should be more than enough)
+ // = 10s/100char = 0.1s/char = 100ms/char
+ int timeout = (int) wcslen(text)*100;
+ timeout+= HTIMSG_TIMEOUT_10_SECONDS; // add extra 10 seconds for lag
+ return msg.SendReceiveMsg( timeout );
+}
+
+//**********************************************************************************
+// ns1__keyPressSequence()
+//**********************************************************************************
+int ns1__keyPressSequence(struct soap* soap,
+ short time,
+ short interval,
+ struct ns1__arrayOfKeyCodes keyCodes,
+ struct ns1__keyPressSequenceResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_KEY_PRESS_SEQUENCE );
+ msg.AddWord( time );
+ msg.AddWord( interval );
+ for ( int i = 0; i < keyCodes.__size; i++ )
+ {
+ msg.AddWord( keyCodes.__ptrKeyCode[i] );
+ }
+ int timeout = keyCodes.__size * ( time + interval );
+ timeout += HTIMSG_TIMEOUT_10_SECONDS;
+ return msg.SendReceiveMsg( timeout );
+}
+
+//**********************************************************************************
+// ns1__tapScreen()
+//**********************************************************************************
+int ns1__tapScreen(struct soap* soap,
+ struct ns1__HtiPoint tapPoint,
+ short timeToHold,
+ short tapCount,
+ short pauseBetweenTaps,
+ struct ns1__tapScreenResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_TAP_SCREEN );
+ msg.AddWord( tapPoint.xCoordinate );
+ msg.AddWord( tapPoint.yCoordinate );
+ msg.AddWord( timeToHold );
+ msg.AddWord( tapCount );
+ msg.AddWord( pauseBetweenTaps );
+ int timeout = tapCount * ( timeToHold + pauseBetweenTaps );
+ timeout += HTIMSG_TIMEOUT_10_SECONDS;
+ return msg.SendReceiveMsg( timeout );
+}
+
+//**********************************************************************************
+// ns1__tapAndDrag()
+//**********************************************************************************
+int ns1__tapAndDrag(struct soap* soap,
+ struct ns1__HtiPoint pointDown,
+ struct ns1__HtiPoint pointUp,
+ short dragTime,
+ struct ns1__tapAndDragResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_TAP_AND_DRAG );
+ msg.AddWord( pointDown.xCoordinate );
+ msg.AddWord( pointDown.yCoordinate );
+ msg.AddWord( pointUp.xCoordinate );
+ msg.AddWord( pointUp.yCoordinate );
+ msg.AddWord( dragTime );
+ return msg.SendReceiveMsg( dragTime + HTIMSG_TIMEOUT_10_SECONDS );
+}
+
+//**********************************************************************************
+// ns1__tapAndDragMultipoint()
+//**********************************************************************************
+int ns1__tapAndDragMultipoint(struct soap* soap,
+ short timeBetweenPoints,
+ short timeBetweenLines,
+ struct ns1__arrayOfLines lines,
+ struct ns1__tapAndDragMultipointResponse *out)
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_TAP_AND_DRAG_MULTI );
+ msg.AddWord( timeBetweenPoints );
+ msg.AddWord( timeBetweenLines );
+ int pointCount = 0;
+ for ( int i = 0; i < lines.__size; i++ )
+ {
+ int pointsInLine = lines.__ptrLine[i].__size;
+ pointCount += pointsInLine;
+ msg.AddWord( pointsInLine );
+ for ( int j = 0; j < pointsInLine; j++ )
+ {
+ msg.AddWord( lines.__ptrLine[i].__ptrPoint[j].xCoordinate );
+ msg.AddWord( lines.__ptrLine[i].__ptrPoint[j].yCoordinate );
+ }
+ }
+
+ int timeout = ( pointCount * timeBetweenPoints ) +
+ ( lines.__size * timeBetweenLines );
+ timeout += HTIMSG_TIMEOUT_10_SECONDS;
+ return msg.SendReceiveMsg( timeout );
+}
+
+//**********************************************************************************
+// ns1__pointerDown()
+//**********************************************************************************
+int ns1__pointerDown(struct soap* soap,
+ struct ns1__HtiPoint pointDown,
+ struct ns1__pointerDownResponse *out )
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_POINTER_DOWN );
+ msg.AddWord( pointDown.xCoordinate );
+ msg.AddWord( pointDown.yCoordinate );
+ return msg.SendReceiveMsg( HTIMSG_TIMEOUT_10_SECONDS );
+}
+
+//**********************************************************************************
+// ns1__pointerUp()
+//**********************************************************************************
+int ns1__pointerUp(struct soap* soap,
+ struct ns1__HtiPoint pointUp,
+ struct ns1__pointerUpResponse *out )
+{
+ HtiMsgHelper msg( soap, HTI_KEYEVENT_UID, CMD_POINTER_UP );
+ msg.AddWord( pointUp.xCoordinate );
+ msg.AddWord( pointUp.yCoordinate );
+ return msg.SendReceiveMsg( HTIMSG_TIMEOUT_10_SECONDS );
+}