winpr-comm: first import of comm_ioctl.h and the REMOTE_SERIAL_DRIVER type.
This commit is contained in:
parent
21f9bfeb6c
commit
6fcc1b4478
@ -101,6 +101,24 @@ UINT32 serial_tty_control(SERIAL_TTY* tty, UINT32 IoControlCode, wStream* input,
|
||||
IoCtlAccess = ((IoControlCode >> 14) & 0x3);
|
||||
IoCtlDeviceType = ((IoControlCode >> 16) & 0xFFFF);
|
||||
|
||||
/* NB: MS-RDPESP's recommendation:
|
||||
*
|
||||
* <2> Section 3.2.5.1.6: Windows Implementations use IOCTL
|
||||
* constants for IoControlCode values. The content and values
|
||||
* of the IOCTLs are opaque to the protocol. On the server
|
||||
* side, the data contained in an IOCTL is simply packaged and
|
||||
* sent to the client side. For maximum compatibility between
|
||||
* the different versions of the Windows operating system, the
|
||||
* client implementation only singles out critical IOCTLs and
|
||||
* invokes the applicable Win32 port API. The other IOCTLS are
|
||||
* passed directly to the client-side driver, and the
|
||||
* processing of this value depends on the drivers installed
|
||||
* on the client side. The values and parameters for these
|
||||
* IOCTLS can be found in [MSFT-W2KDDK] Volume 2, Part
|
||||
* 2—Serial and Parallel Drivers, and in [MSDN-PORTS].
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* FILE_DEVICE_SERIAL_PORT 0x0000001B
|
||||
* FILE_DEVICE_UNKNOWN 0x00000022
|
||||
|
@ -372,6 +372,14 @@ WINPR_API BOOL IsCommDevice(LPCTSTR lpDeviceName);
|
||||
WINPR_API HANDLE CommCreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
|
||||
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile);
|
||||
|
||||
|
||||
/**
|
||||
* FIXME: to be moved in comm_ioctl.h
|
||||
*/
|
||||
BOOL CommDeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize,
|
||||
LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@ -20,7 +20,15 @@ set(MODULE_PREFIX "WINPR_COMM")
|
||||
|
||||
set(${MODULE_PREFIX}_SRCS
|
||||
comm.c
|
||||
comm.h)
|
||||
comm.h
|
||||
comm_ioctl.c
|
||||
comm_ioctl.h
|
||||
comm_serial_sys.c
|
||||
comm_serial_sys.h
|
||||
comm_sercx_sys.c
|
||||
comm_sercx_sys.h
|
||||
comm_sercx2_sys.c
|
||||
comm_sercx2_sys.h)
|
||||
|
||||
if(MSVC AND (NOT MONOLITHIC_BUILD))
|
||||
set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} module.def)
|
||||
|
@ -26,11 +26,12 @@
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <termios.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <freerdp/utils/debug.h>
|
||||
@ -348,11 +349,12 @@ BOOL GetCommState(HANDLE hFile, LPDCB lpDCB)
|
||||
goto error_handle;
|
||||
}
|
||||
|
||||
lpLocalDcb->fBinary = TRUE; /* TMP: should the raw mode be tested? */
|
||||
lpLocalDcb->fBinary = TRUE; /* TMP: TODO: seems equivalent to the raw mode */
|
||||
|
||||
lpLocalDcb->fParity = (currentState.c_iflag & INPCK) != 0;
|
||||
|
||||
|
||||
|
||||
memcpy(lpDCB, lpLocalDcb, lpDCB->DCBlength);
|
||||
return TRUE;
|
||||
|
||||
@ -943,6 +945,12 @@ HANDLE CommCreateFileA(LPCSTR lpDeviceName, DWORD dwDesiredAccess, DWORD dwShare
|
||||
}
|
||||
|
||||
|
||||
/* TMP: TODO: FIXME: this information is at least need for
|
||||
* get/set baud. Is possible to pull this information? to be
|
||||
* forced with a comand line argument.
|
||||
*/
|
||||
pComm->remoteSerialDriverId = RemoteSerialDriverUnknown;
|
||||
|
||||
return (HANDLE)pComm;
|
||||
|
||||
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@ -26,14 +27,28 @@
|
||||
|
||||
#include "../handle/handle.h"
|
||||
|
||||
/**
|
||||
* IOCTLs table according the remote serial driver:
|
||||
* http://msdn.microsoft.com/en-us/library/windows/hardware/dn265347%28v=vs.85%29.aspx
|
||||
*/
|
||||
typedef enum _REMOTE_SERIAL_DRIVER_ID
|
||||
{
|
||||
RemoteSerialDriverUnknown = 0,
|
||||
RemoteSerialDriverSerialSys,
|
||||
RemoteSerialDriverSerCxSys,
|
||||
RemoteSerialDriverSerCx2Sys /* default fallback */
|
||||
} REMOTE_SERIAL_DRIVER_ID;
|
||||
|
||||
struct winpr_comm
|
||||
{
|
||||
WINPR_HANDLE_DEF();
|
||||
|
||||
int fd;
|
||||
REMOTE_SERIAL_DRIVER_ID remoteSerialDriverId;
|
||||
};
|
||||
typedef struct winpr_comm WINPR_COMM;
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#endif /* WINPR_COMM_PRIVATE_H */
|
||||
|
182
winpr/libwinpr/comm/comm_ioctl.c
Normal file
182
winpr/libwinpr/comm/comm_ioctl.c
Normal file
@ -0,0 +1,182 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2011 O.S. Systems Software Ltda.
|
||||
* Copyright 2011 Eduardo Fiss Beloni <beloni@ossystems.com.br>
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <freerdp/utils/debug.h>
|
||||
|
||||
#include "comm.h"
|
||||
#include "comm_ioctl.h"
|
||||
#include "comm_serial_sys.h"
|
||||
#include "comm_sercx_sys.h"
|
||||
#include "comm_sercx2_sys.h"
|
||||
|
||||
|
||||
/**
|
||||
* FIXME: to be used through winpr-io's DeviceIoControl
|
||||
*
|
||||
* ERRORS:
|
||||
* ERROR_INVALID_HANDLE
|
||||
* ERROR_NOT_SUPPORTED lpOverlapped is not supported
|
||||
*/
|
||||
BOOL CommDeviceIoControl(HANDLE hDevice, DWORD dwIoControlCode, LPVOID lpInBuffer, DWORD nInBufferSize,
|
||||
LPVOID lpOutBuffer, DWORD nOutBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped)
|
||||
{
|
||||
|
||||
WINPR_COMM* pComm = (WINPR_COMM*) hDevice;
|
||||
PREMOTE_SERIAL_DRIVER pRemoteSerialDriver = NULL;
|
||||
|
||||
if (!pComm || pComm->Type != HANDLE_TYPE_COMM || !pComm->fd )
|
||||
{
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (lpOverlapped != NULL)
|
||||
{
|
||||
SetLastError(ERROR_NOT_SUPPORTED);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (lpBytesReturned == NULL)
|
||||
{
|
||||
SetLastError(ERROR_INVALID_DATA); /* since we doesn't suppport lpOverlapped != NULL */
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
*lpBytesReturned = 0; /* will be ajusted otherwise */
|
||||
|
||||
/* remoteSerialDriver to be use ... */
|
||||
switch (pComm->remoteSerialDriverId)
|
||||
{
|
||||
case RemoteSerialDriverSerialSys:
|
||||
pRemoteSerialDriver = SerialSys();
|
||||
break;
|
||||
|
||||
case RemoteSerialDriverSerCxSys:
|
||||
pRemoteSerialDriver = SerCxSys();
|
||||
break;
|
||||
|
||||
case RemoteSerialDriverSerCx2Sys:
|
||||
pRemoteSerialDriver = SerCx2Sys();
|
||||
break;
|
||||
|
||||
case RemoteSerialDriverUnknown:
|
||||
default:
|
||||
DEBUG_WARN("Unknown remote serial driver (%d), using SerCx2.sys", pComm->remoteSerialDriverId);
|
||||
pRemoteSerialDriver = SerCx2Sys();
|
||||
break;
|
||||
}
|
||||
|
||||
assert(pRemoteSerialDriver != NULL);
|
||||
|
||||
switch (dwIoControlCode)
|
||||
{
|
||||
case IOCTL_SERIAL_SET_BAUD_RATE:
|
||||
{
|
||||
PSERIAL_BAUD_RATE pBaudRate = (PSERIAL_BAUD_RATE)lpInBuffer;
|
||||
|
||||
assert(nInBufferSize == sizeof(SERIAL_BAUD_RATE));
|
||||
if (nInBufferSize < sizeof(SERIAL_BAUD_RATE))
|
||||
{
|
||||
SetLastError(ERROR_INVALID_DATA);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (pRemoteSerialDriver->set_baud_rate)
|
||||
{
|
||||
return pRemoteSerialDriver->set_baud_rate(pBaudRate);
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_WARN(_T("unsupported IoControlCode: Ox%x (remote serial driver: %s)"), dwIoControlCode, pRemoteSerialDriver->name);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
default:
|
||||
DEBUG_WARN("unsupported IoControlCode: Ox%x", dwIoControlCode);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* IOCTL_SERIAL_GET_BAUD_RATE 0x001B0050 */
|
||||
/* IOCTL_SERIAL_SET_LINE_CONTROL 0x001B000C */
|
||||
/* IOCTL_SERIAL_GET_LINE_CONTROL 0x001B0054 */
|
||||
/* IOCTL_SERIAL_SET_TIMEOUTS 0x001B001C */
|
||||
/* IOCTL_SERIAL_GET_TIMEOUTS 0x001B0020 */
|
||||
/* IOCTL_SERIAL_SET_CHARS 0x001B0058 */
|
||||
/* IOCTL_SERIAL_GET_CHARS 0x001B005C */
|
||||
/* IOCTL_SERIAL_SET_DTR 0x001B0024 */
|
||||
/* IOCTL_SERIAL_CLR_DTR 0x001B0028 */
|
||||
/* IOCTL_SERIAL_RESET_DEVICE 0x001B002C */
|
||||
/* IOCTL_SERIAL_SET_RTS 0x001B0030 */
|
||||
/* IOCTL_SERIAL_CLR_RTS 0x001B0034 */
|
||||
/* IOCTL_SERIAL_SET_XOFF 0x001B0038 */
|
||||
/* IOCTL_SERIAL_SET_XON 0x001B003C */
|
||||
/* IOCTL_SERIAL_SET_BREAK_ON 0x001B0010 */
|
||||
/* IOCTL_SERIAL_SET_BREAK_OFF 0x001B0014 */
|
||||
/* IOCTL_SERIAL_SET_QUEUE_SIZE 0x001B0008 */
|
||||
/* IOCTL_SERIAL_GET_WAIT_MASK 0x001B0040 */
|
||||
/* IOCTL_SERIAL_SET_WAIT_MASK 0x001B0044 */
|
||||
/* IOCTL_SERIAL_WAIT_ON_MASK 0x001B0048 */
|
||||
/* IOCTL_SERIAL_IMMEDIATE_CHAR 0x001B0018 */
|
||||
/* IOCTL_SERIAL_PURGE 0x001B004C */
|
||||
/* IOCTL_SERIAL_GET_HANDFLOW 0x001B0060 */
|
||||
/* IOCTL_SERIAL_SET_HANDFLOW 0x001B0064 */
|
||||
/* IOCTL_SERIAL_GET_MODEMSTATUS 0x001B0068 */
|
||||
/* IOCTL_SERIAL_GET_DTRRTS 0x001B0078 */
|
||||
/* IOCTL_SERIAL_GET_COMMSTATUS 0x001B0084 */
|
||||
/* IOCTL_SERIAL_GET_PROPERTIES 0x001B0074 */
|
||||
/* IOCTL_SERIAL_XOFF_COUNTER 0x001B0070 */
|
||||
/* IOCTL_SERIAL_LSRMST_INSERT 0x001B007C */
|
||||
/* IOCTL_SERIAL_CONFIG_SIZE 0x001B0080 */
|
||||
/* IOCTL_SERIAL_GET_STATS 0x001B008C */
|
||||
/* IOCTL_SERIAL_CLEAR_STATS 0x001B0090 */
|
||||
/* IOCTL_SERIAL_GET_MODEM_CONTROL 0x001B0094 */
|
||||
/* IOCTL_SERIAL_SET_MODEM_CONTROL 0x001B0098 */
|
||||
/* IOCTL_SERIAL_SET_FIFO_CONTROL 0x001B009C */
|
||||
|
||||
/* IOCTL_PAR_QUERY_INFORMATION 0x00160004 */
|
||||
/* IOCTL_PAR_SET_INFORMATION 0x00160008 */
|
||||
/* IOCTL_PAR_QUERY_DEVICE_ID 0x0016000C */
|
||||
/* IOCTL_PAR_QUERY_DEVICE_ID_SIZE 0x00160010 */
|
||||
/* IOCTL_IEEE1284_GET_MODE 0x00160014 */
|
||||
/* IOCTL_IEEE1284_NEGOTIATE 0x00160018 */
|
||||
/* IOCTL_PAR_SET_WRITE_ADDRESS 0x0016001C */
|
||||
/* IOCTL_PAR_SET_READ_ADDRESS 0x00160020 */
|
||||
/* IOCTL_PAR_GET_DEVICE_CAPS 0x00160024 */
|
||||
/* IOCTL_PAR_GET_DEFAULT_MODES 0x00160028 */
|
||||
/* IOCTL_PAR_QUERY_RAW_DEVICE_ID 0x00160030 */
|
||||
/* IOCTL_PAR_IS_PORT_FREE 0x00160054 */
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#endif /* _WIN32 */
|
73
winpr/libwinpr/comm/comm_ioctl.h
Normal file
73
winpr/libwinpr/comm/comm_ioctl.h
Normal file
@ -0,0 +1,73 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2011 O.S. Systems Software Ltda.
|
||||
* Copyright 2011 Eduardo Fiss Beloni <beloni@ossystems.com.br>
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef WINPR_COMM_IOCTL_H_
|
||||
#define WINPR_COMM_IOCTL_H_
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include <winpr/io.h>
|
||||
#include <winpr/tchar.h>
|
||||
#include <winpr/wtypes.h>
|
||||
|
||||
#include "comm.h"
|
||||
|
||||
/* Ntddser.h http://msdn.microsoft.com/en-us/cc308432.aspx
|
||||
* Ntddpar.h http://msdn.microsoft.com/en-us/cc308431.aspx
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#define IOCTL_SERIAL_SET_BAUD_RATE 0x001B0004
|
||||
|
||||
|
||||
|
||||
typedef struct _SERIAL_BAUD_RATE
|
||||
{
|
||||
ULONG BaudRate;
|
||||
} SERIAL_BAUD_RATE, *PSERIAL_BAUD_RATE;
|
||||
|
||||
|
||||
/**
|
||||
* A function might be NULL if not supported by the underlying remote driver.
|
||||
*
|
||||
* FIXME: better have to use input and output buffers for all functions?
|
||||
*/
|
||||
typedef struct _REMOTE_SERIAL_DRIVER
|
||||
{
|
||||
REMOTE_SERIAL_DRIVER_ID id;
|
||||
TCHAR *name;
|
||||
BOOL (*set_baud_rate)(PSERIAL_BAUD_RATE pBaudRate);
|
||||
|
||||
} REMOTE_SERIAL_DRIVER, *PREMOTE_SERIAL_DRIVER;
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#endif /* WINPR_COMM_IOCTL_H_ */
|
45
winpr/libwinpr/comm/comm_sercx2_sys.c
Normal file
45
winpr/libwinpr/comm/comm_sercx2_sys.c
Normal file
@ -0,0 +1,45 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2011 O.S. Systems Software Ltda.
|
||||
* Copyright 2011 Eduardo Fiss Beloni <beloni@ossystems.com.br>
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
||||
#include "comm_sercx2_sys.h"
|
||||
#include "comm_serial_sys.h"
|
||||
|
||||
|
||||
/* specific functions only */
|
||||
static REMOTE_SERIAL_DRIVER _SerCx2Sys =
|
||||
{
|
||||
.id = RemoteSerialDriverSerCx2Sys,
|
||||
.name = _T("SerCx2.sys"),
|
||||
.set_baud_rate = NULL,
|
||||
};
|
||||
|
||||
|
||||
PREMOTE_SERIAL_DRIVER SerCx2Sys()
|
||||
{
|
||||
/* _SerCxSys completed with default SerialSys functions */
|
||||
PREMOTE_SERIAL_DRIVER serialSys = SerialSys();
|
||||
|
||||
_SerCx2Sys.set_baud_rate = serialSys->set_baud_rate;
|
||||
|
||||
return &_SerCx2Sys;
|
||||
}
|
39
winpr/libwinpr/comm/comm_sercx2_sys.h
Normal file
39
winpr/libwinpr/comm/comm_sercx2_sys.h
Normal file
@ -0,0 +1,39 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef COMM_SERCX2_SYS_H
|
||||
#define COMM_SERCX2_SYS_H
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include "comm_ioctl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
WINPR_API PREMOTE_SERIAL_DRIVER SerCx2Sys();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#endif /* COMM_SERCX2_SYS_H */
|
44
winpr/libwinpr/comm/comm_sercx_sys.c
Normal file
44
winpr/libwinpr/comm/comm_sercx_sys.c
Normal file
@ -0,0 +1,44 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2011 O.S. Systems Software Ltda.
|
||||
* Copyright 2011 Eduardo Fiss Beloni <beloni@ossystems.com.br>
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
|
||||
#include "comm_serial_sys.h"
|
||||
|
||||
/* specific functions only */
|
||||
static REMOTE_SERIAL_DRIVER _SerCxSys =
|
||||
{
|
||||
.id = RemoteSerialDriverSerCxSys,
|
||||
.name = _T("SerCx.sys"),
|
||||
.set_baud_rate = NULL,
|
||||
};
|
||||
|
||||
|
||||
|
||||
PREMOTE_SERIAL_DRIVER SerCxSys()
|
||||
{
|
||||
/* _SerCxSys completed with default SerialSys functions */
|
||||
PREMOTE_SERIAL_DRIVER serialSys = SerialSys();
|
||||
|
||||
_SerCxSys.set_baud_rate = serialSys->set_baud_rate;
|
||||
|
||||
return &_SerCxSys;
|
||||
}
|
41
winpr/libwinpr/comm/comm_sercx_sys.h
Normal file
41
winpr/libwinpr/comm/comm_sercx_sys.h
Normal file
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef COMM_SERCX_SYS_H
|
||||
#define COMM_SERCX_SYS_H
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include "comm_ioctl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
WINPR_API PREMOTE_SERIAL_DRIVER SerCxSys();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
|
||||
#endif /* COMM_SERCX_SYS_H */
|
43
winpr/libwinpr/comm/comm_serial_sys.c
Normal file
43
winpr/libwinpr/comm/comm_serial_sys.c
Normal file
@ -0,0 +1,43 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2011 O.S. Systems Software Ltda.
|
||||
* Copyright 2011 Eduardo Fiss Beloni <beloni@ossystems.com.br>
|
||||
* Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "comm_serial_sys.h"
|
||||
|
||||
static BOOL _set_baud_rate(PSERIAL_BAUD_RATE pBaudRate)
|
||||
{
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
static REMOTE_SERIAL_DRIVER _SerialSys =
|
||||
{
|
||||
.id = RemoteSerialDriverSerialSys,
|
||||
.name = _T("Serial.sys"),
|
||||
.set_baud_rate = _set_baud_rate,
|
||||
};
|
||||
|
||||
|
||||
PREMOTE_SERIAL_DRIVER SerialSys()
|
||||
{
|
||||
return &_SerialSys;
|
||||
}
|
40
winpr/libwinpr/comm/comm_serial_sys.h
Normal file
40
winpr/libwinpr/comm/comm_serial_sys.h
Normal file
@ -0,0 +1,40 @@
|
||||
/**
|
||||
* WinPR: Windows Portable Runtime
|
||||
* Serial Communication API
|
||||
*
|
||||
* Copyright 2014 Hewlett-Packard Development Company, L.P.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#ifndef COMM_SERIAL_SYS_H
|
||||
#define COMM_SERIAL_SYS_H
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include "comm_ioctl.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
WINPR_API PREMOTE_SERIAL_DRIVER SerialSys();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _WIN32 */
|
||||
|
||||
#endif /* COMM_SERIAL_SYS_H */
|
Loading…
Reference in New Issue
Block a user