/** * FreeRDP: A Remote Desktop Protocol Implementation * Serial Port Device Service Virtual Channel * * Copyright 2011 O.S. Systems Software Ltda. * Copyright 2011 Eduardo Fiss Beloni * * 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 __SERIAL_CONSTANTS_H #define __SERIAL_CONSTANTS_H /* http://www.codeproject.com/KB/system/chaiyasit_t.aspx */ #define SERIAL_TIMEOUT_MAX 4294967295u /* DR_CONTROL_REQ.IoControlCode */ enum DR_PORT_CONTROL_REQ { IOCTL_SERIAL_SET_BAUD_RATE = 0x001B0004, 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, /* GET_CHARS and SET_CHARS are swapped in the RDP docs [MS-RDPESP] */ IOCTL_SERIAL_GET_CHARS = 0x001B0058, IOCTL_SERIAL_SET_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, /* according to [MS-RDPESP] it should be 0x001B0084, but servers send 0x001B006C */ IOCTL_SERIAL_GET_COMMSTATUS = 0x001B006C, 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, }; enum SERIAL_PURGE_MASK { SERIAL_PURGE_TXABORT = 0x00000001, SERIAL_PURGE_RXABORT = 0x00000002, SERIAL_PURGE_TXCLEAR = 0x00000004, SERIAL_PURGE_RXCLEAR = 0x00000008, }; enum SERIAL_WAIT_MASK { SERIAL_EV_RXCHAR = 0x0001, /* Any Character received */ SERIAL_EV_RXFLAG = 0x0002, /* Received certain character */ SERIAL_EV_TXEMPTY = 0x0004, /* Transmitt Queue Empty */ SERIAL_EV_CTS = 0x0008, /* CTS changed state */ SERIAL_EV_DSR = 0x0010, /* DSR changed state */ SERIAL_EV_RLSD = 0x0020, /* RLSD changed state */ SERIAL_EV_BREAK = 0x0040, /* BREAK received */ SERIAL_EV_ERR = 0x0080, /* Line status error occurred */ SERIAL_EV_RING = 0x0100, /* Ring signal detected */ SERIAL_EV_PERR = 0x0200, /* Printer error occured */ SERIAL_EV_RX80FULL = 0x0400,/* Receive buffer is 80 percent full */ SERIAL_EV_EVENT1 = 0x0800, /* Provider specific event 1 */ SERIAL_EV_EVENT2 = 0x1000, /* Provider specific event 2 */ }; enum SERIAL_MODEM_STATUS { SERIAL_MS_DTR = 0x01, SERIAL_MS_RTS = 0x02, SERIAL_MS_CTS = 0x10, SERIAL_MS_DSR = 0x20, SERIAL_MS_RNG = 0x40, SERIAL_MS_CAR = 0x80, }; enum SERIAL_HANDFLOW { SERIAL_DTR_CONTROL = 0x01, SERIAL_CTS_HANDSHAKE = 0x08, SERIAL_ERROR_ABORT = 0x80000000, }; enum SERIAL_FLOW_CONTROL { SERIAL_XON_HANDSHAKE = 0x01, SERIAL_XOFF_HANDSHAKE = 0x02, SERIAL_DSR_SENSITIVITY = 0x40, }; enum SERIAL_CHARS { SERIAL_CHAR_EOF = 0, SERIAL_CHAR_ERROR = 1, SERIAL_CHAR_BREAK = 2, SERIAL_CHAR_EVENT = 3, SERIAL_CHAR_XON = 4, SERIAL_CHAR_XOFF = 5, }; enum SERIAL_ABORT_IO { SERIAL_ABORT_IO_NONE = 0, SERIAL_ABORT_IO_WRITE = 1, SERIAL_ABORT_IO_READ = 2, }; enum SERIAL_STOP_BITS { SERIAL_STOP_BITS_1 = 0, SERIAL_STOP_BITS_2 = 2, }; enum SERIAL_PARITY { SERIAL_NO_PARITY = 0, SERIAL_ODD_PARITY = 1, SERIAL_EVEN_PARITY = 2, }; #endif