FreeRDP
client/rdpei_main.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winpr/crt.h>
#include <winpr/synch.h>
#include <winpr/thread.h>
#include <winpr/stream.h>
#include <winpr/sysinfo.h>
#include <winpr/cmdline.h>
#include <winpr/collections.h>
#include <freerdp/addin.h>
#include <freerdp/freerdp.h>
#include "rdpei_common.h"
#include "rdpei_main.h"

Macros

#define MAX_CONTACTS   512
 
#define DVCPluginEntry   FREERDP_API DVCPluginEntry
 

Functions

UINT rdpei_send_frame (RdpeiClientContext *context)
 
UINT rdpei_add_frame (RdpeiClientContext *context)
 
static DWORD WINAPI rdpei_schedule_thread (LPVOID arg)
 
UINT rdpei_send_pdu (RDPEI_CHANNEL_CALLBACK *callback, wStream *s, UINT16 eventId, UINT32 pduLength)
 
UINT rdpei_send_cs_ready_pdu (RDPEI_CHANNEL_CALLBACK *callback)
 
void rdpei_print_contact_flags (UINT32 contactFlags)
 
UINT rdpei_write_touch_frame (wStream *s, RDPINPUT_TOUCH_FRAME *frame)
 
UINT rdpei_send_touch_event_pdu (RDPEI_CHANNEL_CALLBACK *callback, RDPINPUT_TOUCH_FRAME *frame)
 
UINT rdpei_recv_sc_ready_pdu (RDPEI_CHANNEL_CALLBACK *callback, wStream *s)
 
UINT rdpei_recv_suspend_touch_pdu (RDPEI_CHANNEL_CALLBACK *callback, wStream *s)
 
UINT rdpei_recv_resume_touch_pdu (RDPEI_CHANNEL_CALLBACK *callback, wStream *s)
 
UINT rdpei_recv_pdu (RDPEI_CHANNEL_CALLBACK *callback, wStream *s)
 
static UINT rdpei_on_data_received (IWTSVirtualChannelCallback *pChannelCallback, wStream *data)
 
static UINT rdpei_on_close (IWTSVirtualChannelCallback *pChannelCallback)
 
static UINT rdpei_on_new_channel_connection (IWTSListenerCallback *pListenerCallback, IWTSVirtualChannel *pChannel, BYTE *Data, BOOL *pbAccept, IWTSVirtualChannelCallback **ppCallback)
 
static UINT rdpei_plugin_initialize (IWTSPlugin *pPlugin, IWTSVirtualChannelManager *pChannelMgr)
 
static UINT rdpei_plugin_terminated (IWTSPlugin *pPlugin)
 
int rdpei_get_version (RdpeiClientContext *context)
 
UINT rdpei_add_contact (RdpeiClientContext *context, RDPINPUT_CONTACT_DATA *contact)
 
UINT rdpei_touch_begin (RdpeiClientContext *context, int externalId, int x, int y, int *contactId)
 
UINT rdpei_touch_update (RdpeiClientContext *context, int externalId, int x, int y, int *contactId)
 
UINT rdpei_touch_end (RdpeiClientContext *context, int externalId, int x, int y, int *contactId)
 
UINT DVCPluginEntry (IDRDYNVC_ENTRY_POINTS *pEntryPoints)
 

Variables

const char * RDPEI_EVENTID_STRINGS []
 

Macro Definition Documentation

#define DVCPluginEntry   FREERDP_API DVCPluginEntry
#define MAX_CONTACTS   512

FreeRDP: A Remote Desktop Protocol Implementation Input Virtual Channel Extension

Copyright 2013 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com Copyright 2015 Thincast Technologies GmbH Copyright 2015 DI (FH) Martin Haimberger marti.nosp@m.n.ha.nosp@m.imber.nosp@m.ger@.nosp@m.thinc.nosp@m.ast..nosp@m.com

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. Touch Input http://msdn.microsoft.com/en-us/library/windows/desktop/dd562197/

Windows Touch Input http://msdn.microsoft.com/en-us/library/windows/desktop/dd317321/

Input: Touch injection sample http://code.msdn.microsoft.com/windowsdesktop/Touch-Injection-Sample-444d9bf7

Pointer Input Message Reference http://msdn.microsoft.com/en-us/library/hh454916/

POINTER_INFO Structure http://msdn.microsoft.com/en-us/library/hh454907/

POINTER_TOUCH_INFO Structure http://msdn.microsoft.com/en-us/library/hh454910/

Function Documentation

UINT DVCPluginEntry ( IDRDYNVC_ENTRY_POINTS *  pEntryPoints)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

UINT rdpei_add_contact ( RdpeiClientContext *  context,
RDPINPUT_CONTACT_DATA *  contact 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_add_frame ( RdpeiClientContext *  context)

Function description

Returns
0 on success, otherwise a Win32 error code
int rdpei_get_version ( RdpeiClientContext *  context)

Channel Client Interface

Here is the caller graph for this function:

static UINT rdpei_on_close ( IWTSVirtualChannelCallback *  pChannelCallback)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the caller graph for this function:

static UINT rdpei_on_data_received ( IWTSVirtualChannelCallback *  pChannelCallback,
wStream *  data 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT rdpei_on_new_channel_connection ( IWTSListenerCallback *  pListenerCallback,
IWTSVirtualChannel *  pChannel,
BYTE Data,
BOOL *  pbAccept,
IWTSVirtualChannelCallback **  ppCallback 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT rdpei_plugin_initialize ( IWTSPlugin *  pPlugin,
IWTSVirtualChannelManager *  pChannelMgr 
)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

static UINT rdpei_plugin_terminated ( IWTSPlugin *  pPlugin)
static

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

void rdpei_print_contact_flags ( UINT32  contactFlags)

Here is the caller graph for this function:

UINT rdpei_recv_pdu ( RDPEI_CHANNEL_CALLBACK *  callback,
wStream *  s 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_recv_resume_touch_pdu ( RDPEI_CHANNEL_CALLBACK *  callback,
wStream *  s 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the caller graph for this function:

UINT rdpei_recv_sc_ready_pdu ( RDPEI_CHANNEL_CALLBACK *  callback,
wStream *  s 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the caller graph for this function:

UINT rdpei_recv_suspend_touch_pdu ( RDPEI_CHANNEL_CALLBACK *  callback,
wStream *  s 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the caller graph for this function:

static DWORD WINAPI rdpei_schedule_thread ( LPVOID  arg)
static

Here is the caller graph for this function:

UINT rdpei_send_cs_ready_pdu ( RDPEI_CHANNEL_CALLBACK *  callback)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_send_frame ( RdpeiClientContext *  context)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

UINT rdpei_send_pdu ( RDPEI_CHANNEL_CALLBACK *  callback,
wStream *  s,
UINT16  eventId,
UINT32  pduLength 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_send_touch_event_pdu ( RDPEI_CHANNEL_CALLBACK *  callback,
RDPINPUT_TOUCH_FRAME *  frame 
)

Function description

Returns
0 on success, otherwise a Win32 error code

the time that has elapsed (in milliseconds) from when the oldest touch frame was generated to when it was encoded for transmission by the client.

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_touch_begin ( RdpeiClientContext *  context,
int  externalId,
int  x,
int  y,
int *  contactId 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_touch_end ( RdpeiClientContext *  context,
int  externalId,
int  x,
int  y,
int *  contactId 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_touch_update ( RdpeiClientContext *  context,
int  externalId,
int  x,
int  y,
int *  contactId 
)

Function description

Returns
0 on success, otherwise a Win32 error code

Here is the call graph for this function:

Here is the caller graph for this function:

UINT rdpei_write_touch_frame ( wStream *  s,
RDPINPUT_TOUCH_FRAME *  frame 
)

Function description

Returns
0 on success, otherwise a Win32 error code

the time offset from the previous frame (in microseconds). If this is the first frame being transmitted then this field MUST be set to zero.

Here is the call graph for this function:

Here is the caller graph for this function:

Variable Documentation

const char* RDPEI_EVENTID_STRINGS[]
Initial value:
=
{
"",
"EVENTID_SC_READY",
"EVENTID_CS_READY",
"EVENTID_TOUCH",
"EVENTID_SUSPEND_TOUCH",
"EVENTID_RESUME_TOUCH",
"EVENTID_DISMISS_HOVERING_CONTACT"
}