1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
|
/*
* BRLTTY - A background process providing access to the console screen (when in
* text mode) for a blind person using a refreshable braille display.
*
* Copyright (C) 1995-2025 by The BRLTTY Developers.
*
* BRLTTY comes with ABSOLUTELY NO WARRANTY.
*
* This is free software, placed under the terms of the
* GNU Lesser General Public License, as published by the Free Software
* Foundation; either version 2.1 of the License, or (at your option) any
* later version. Please see the file LICENSE-LGPL for details.
*
* Web Page: http://brltty.app/
*
* This software is maintained by Dave Mielke <dave@mielke.cc>.
*/
#ifndef BRLTTY_INCLUDED_USB_CP2101
#define BRLTTY_INCLUDED_USB_CP2101
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef enum {
USB_CP2101_CTL_EnableInterface = 0x00,
USB_CP2101_CTL_SetBaudDivisor = 0x01,
USB_CP2101_CTL_GetBaudDivisor = 0x02,
USB_CP2101_CTL_SetLineControl = 0x03,
USB_CP2101_CTL_GetLineControl = 0x04,
USB_CP2101_CTL_SetBreak = 0x05,
USB_CP2101_CTL_SendImmediateCharacter = 0x06,
USB_CP2101_CTL_SetModemHandShaking = 0x07,
USB_CP2101_CTL_GetModemStatus = 0x08,
USB_CP2101_CTL_SetXon = 0x09,
USB_CP2101_CTL_SetXoff = 0x0A,
USB_CP2101_CTL_SetEventMask = 0x0B,
USB_CP2101_CTL_GetEventMask = 0x0C,
USB_CP2101_CTL_SetSpecialCharacter = 0x0D,
USB_CP2101_CTL_GetSpecialCharacters = 0x0E,
USB_CP2101_CTL_GetProperties = 0x0F,
USB_CP2101_CTL_GetSerialStatus = 0x10,
USB_CP2101_CTL_Reset = 0x11,
USB_CP2101_CTL_Purge = 0x12,
USB_CP2101_CTL_SetFlowControl = 0x13,
USB_CP2101_CTL_GetFlowControl = 0x14,
USB_CP2101_CTL_EmbedEvents = 0x15,
USB_CP2101_CTL_GetEventState = 0x16,
USB_CP2101_CTL_SetSpecialCharacters = 0x19,
USB_CP2101_CTL_GetBaudRate = 0x1D,
USB_CP2101_CTL_SetBaudRate = 0x1E,
USB_CP2101_CTL_VendorSpecific = 0xFF
} USB_CP2101_ControlRequest;
typedef uint32_t USB_CP2101_BaudRate;
typedef uint16_t USB_CP2101_BaudDivisor;
#define USB_CP2101_BAUD_BASE 0X384000
typedef uint16_t USB_CP2101_LineControl;
#define USB_CP2101_STOP_SHIFT 0
#define USB_CP2101_STOP_WIDTH 4
#define USB_CP2101_PARITY_SHIFT 4
#define USB_CP2101_PARITY_WIDTH 4
#define USB_CP2101_DATA_SHIFT 8
#define USB_CP2101_DATA_WIDTH 8
#define USB_CP2101_DATA_MINIMUM 5
#define USB_CP2101_DATA_MAXIMUM 8
typedef enum {
USB_CP2101_STOP_1,
USB_CP2101_STOP_1_5,
USB_CP2101_STOP_2
} USB_CP2101_StopBits;
typedef enum {
USB_CP2101_PARITY_NONE,
USB_CP2101_PARITY_ODD,
USB_CP2101_PARITY_EVEN,
USB_CP2101_PARITY_MARK,
USB_CP2101_PARITY_SPACE
} USB_CP2101_Parity;
typedef struct {
uint32_t handshakeOptions;
uint32_t dataFlowOptions;
uint32_t xonThreshold;
uint32_t xoffThreshold;
} PACKED USB_CP2101_FlowControl;
typedef enum {
USB_CP2101_FLOW_HSO_DTR_MASK = 0X00000003, // DTR line usage
USB_CP2101_FLOW_HSO_DTR_INACTIVE = 0X00000000, // DTR is held inactive
USB_CP2101_FLOW_HSO_DTR_ACTIVE = 0X00000001, // DTR is held active
USB_CP2101_FLOW_HSO_DTR_CONTROLLED = 0X00000002, // DTR is controlled
USB_CP2101_FLOW_HSO_CTS_INTERPRET = 0X00000008, // CTS is interpreted
USB_CP2101_FLOW_HSO_DSR_INTERPRET = 0X00000010, // DSR is interpreted
USB_CP2101_FLOW_HSO_DCD_INTERPRET = 0X00000020, // DCD is interpreted
USB_CP2101_FLOW_HSO_DSR_DISCARD = 0X00000040 // DSR low discards data
} USB_CP2101_ControlHandshake;
typedef enum {
USB_CP2101_FLOW_DFO_AUTO_TRANSMIT = 0X00000001, // respond to XON/XOFF from device
USB_CP2101_FLOW_DFO_AUTO_RECEIVE = 0X00000002, // send XON/XOFF to device
USB_CP2101_FLOW_DFO_ERROR_CHARACTER = 0X00000004, // enable insertion of error special-character
USB_CP2101_FLOW_DFO_STRIP_NULS = 0X00000008, // discard received NUL characters
USB_CP2101_FLOW_DFO_BREAK_CHARACTER = 0X00000010, // enable insertion of break special-character
USB_CP2101_FLOW_DFO_RTS_MASK = 0X000000C0, // RTS line usage
USB_CP2101_FLOW_DFO_RTS_INACTIVE = 0X00000000, // RTS is statically inactive
USB_CP2101_FLOW_DFO_RTS_ACTIVE = 0X00000040, // RTS is statically active
USB_CP2101_FLOW_DFO_RTS_RCV_FLOW = 0X00000080, // RTS is used for receive flow control
USB_CP2101_FLOW_DFO_RTS_XMT_ACTIVE = 0X000000C0, // RTS signals transmit active
USB_CP2101_FLOW_DFO_AUTO_RCV_ALWAYS = 0X80000000 // send XON/XOFF to device even when suspended
} USB_CP2101_FlowReplace;
typedef struct {
uint8_t eof; // indicates end-of-file on input
uint8_t error; // inserted when an error is detected
uint8_t brk ; // inserted when a break is detected
uint8_t event; // sets bit 2 of the event-occurred mask
uint8_t xon; // sent to resume input
uint8_t xoff; // sent to suspend input
} PACKED USB_CP2101_SpecialCharacters;
typedef struct {
uint32_t errors;
uint32_t holdReasons;
uint32_t inputCount;
uint32_t outputCount;
uint8_t eofReceived;
uint8_t waitForImmediate;
uint8_t reserved;
} PACKED USB_CP2101_SerialStatus;
typedef enum {
USB_CP2101_SS_ERR_BREAK_SIGNAL = 0X00000001,
USB_CP2101_SS_ERR_FRAMING_ERROR = 0X00000002,
USB_CP2101_SS_ERR_HARDWARE_OVERRUN = 0X00000004,
USB_CP2101_SS_ERR_QUEUE_OVERRUN = 0X00000008,
USB_CP2101_SS_ERR_PARITY_ERROR = 0X00000010
} USB_CP2101_SerialError;
typedef enum {
USB_CP2101_SS_HLD_XMT_CTS_WAIT = 0X00000001,
USB_CP2101_SS_HLD_XMT_DSR_WAIT = 0X00000002,
USB_CP2101_SS_HLD_XMT_DCD_WAIT = 0X00000004,
USB_CP2101_SS_HLD_XMT_XON_WAIT = 0X00000008,
USB_CP2101_SS_HLD_XMT_XOFF_SENT = 0X00000010,
USB_CP2101_SS_HLD_XMT_BRK_WAIT = 0X00000020,
USB_CP2101_SS_HLD_RCV_DSR_WAIT = 0X00000040,
} USB_CP2101_HoldReason;
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* BRLTTY_INCLUDED_USB_CP2101 */
|