BrlAPI 0.8

brlapi_protocol.h
Go to the documentation of this file.
1 /*
2 * libbrlapi - A library providing access to braille terminals for applications.
3 *
4 * Copyright (C) 2002-2020 by
5 * Samuel Thibault <Samuel.Thibault@ens-lyon.org>
6 * Sébastien Hinderer <Sebastien.Hinderer@ens-lyon.org>
7 *
8 * libbrlapi comes with ABSOLUTELY NO WARRANTY.
9 *
10 * This is free software, placed under the terms of the
11 * GNU Lesser General Public License, as published by the Free Software
12 * Foundation; either version 2.1 of the License, or (at your option) any
13 * later version. Please see the file LICENSE-LGPL for details.
14 *
15 * Web Page: http://brltty.app/
16 *
17 * This software is maintained by Dave Mielke <dave@mielke.cc>.
18 */
19
24 #ifndef BRLAPI_INCLUDED_PROTOCOL
25 #define BRLAPI_INCLUDED_PROTOCOL
26
27 #ifdef __cplusplus
28 extern "C" {
29 #endif /* __cplusplus */
30
31 #include "brlapi.h"
32
33 /* this is for UINT32_MAX */
34 #include <inttypes.h>
35 #ifndef UINT32_MAX
36 #define UINT32_MAX (4294967295U)
37 #endif /* UINT32_MAX */
38
39 /* The type size_t is defined there! */
40 #include <unistd.h>
41
52 #define BRLAPI_PROTOCOL_VERSION ((uint32_t) 8)
56 #define BRLAPI_MAXPACKETSIZE 4096
57
58 #define BRLAPI_PACKET_VERSION 'v'
59 #define BRLAPI_PACKET_AUTH 'a'
60 #define BRLAPI_PACKET_GETDRIVERNAME 'n'
61 #define BRLAPI_PACKET_GETMODELID 'd'
62 #define BRLAPI_PACKET_GETDISPLAYSIZE 's'
63 #define BRLAPI_PACKET_ENTERTTYMODE 't'
64 #define BRLAPI_PACKET_SETFOCUS 'F'
65 #define BRLAPI_PACKET_LEAVETTYMODE 'L'
66 #define BRLAPI_PACKET_KEY 'k'
67 #define BRLAPI_PACKET_IGNOREKEYRANGES 'm'
68 #define BRLAPI_PACKET_ACCEPTKEYRANGES 'u'
69 #define BRLAPI_PACKET_WRITE 'w'
70 #define BRLAPI_PACKET_ENTERRAWMODE '*'
71 #define BRLAPI_PACKET_LEAVERAWMODE '#'
72 #define BRLAPI_PACKET_PACKET 'p'
73 #define BRLAPI_PACKET_ACK 'A'
74 #define BRLAPI_PACKET_ERROR 'e'
75 #define BRLAPI_PACKET_EXCEPTION 'E'
76 #define BRLAPI_PACKET_SUSPENDDRIVER 'S'
77 #define BRLAPI_PACKET_RESUMEDRIVER 'R'
78 #define BRLAPI_PACKET_PARAM_VALUE (('P'<<8) + 'V')
79 #define BRLAPI_PACKET_PARAM_REQUEST (('P'<<8) + 'R')
80 #define BRLAPI_PACKET_PARAM_UPDATE (('P'<<8) + 'U')
83 #define BRLAPI_DEVICE_MAGIC (0xdeadbeefL)
84
86 typedef struct {
87 uint32_t size;
88 brlapi_packetType_t type;
89 } brlapi_header_t;
90
92 #define BRLAPI_HEADERSIZE sizeof(brlapi_header_t)
93
95 typedef struct {
96 uint32_t protocolVersion;
97 } brlapi_versionPacket_t;
98
100 typedef struct {
101 uint32_t type;
102 unsigned char key;
103 } brlapi_authClientPacket_t;
104
105 typedef struct {
106 uint32_t type[1];
107 } brlapi_authServerPacket_t;
108
109 #define BRLAPI_AUTH_NONE 'N'
110 #define BRLAPI_AUTH_KEY 'K'
111 #define BRLAPI_AUTH_CRED 'C'
114 typedef struct {
115 uint32_t code;
116 brlapi_packetType_t type;
117 unsigned char packet;
118 } brlapi_errorPacket_t;
119
121 typedef struct {
122 uint32_t magic;
123 unsigned char nameLength;
124 char name;
125 } brlapi_getDriverSpecificModePacket_t;
126
128 #define BRLAPI_WF_DISPLAYNUMBER 0X01
129 #define BRLAPI_WF_REGION 0X02
130 #define BRLAPI_WF_TEXT 0X04
131 #define BRLAPI_WF_ATTR_AND 0X08
132 #define BRLAPI_WF_ATTR_OR 0X10
133 #define BRLAPI_WF_CURSOR 0X20
134 #define BRLAPI_WF_CHARSET 0X40
137 typedef struct {
138 uint32_t flags;
139 unsigned char data;
140 } brlapi_writeArgumentsPacket_t;
141
143 #define BRLAPI_PVF_GLOBAL 0X01
145 #define BRLAPI_MAXPARAMSIZE (BRLAPI_MAXPACKETSIZE - (sizeof(uint32_t) + sizeof(brlapi_param_t) + 2*sizeof(uint32_t)))
146
148 typedef struct {
149 uint32_t flags;
150 brlapi_param_t param;
151 uint32_t subparam_hi;
152 uint32_t subparam_lo;
153 unsigned char data[BRLAPI_MAXPARAMSIZE];
154 } brlapi_paramValuePacket_t;
155
157 #define BRLAPI_PARAMF_GET 0X100
158 #define BRLAPI_PARAMF_SUBSCRIBE 0X200
159 #define BRLAPI_PARAMF_UNSUBSCRIBE 0X400
162 typedef struct {
163 uint32_t flags;
164 brlapi_param_t param;
165 uint32_t subparam_hi;
166 uint32_t subparam_lo;
167 } brlapi_paramRequestPacket_t;
168
171 typedef union {
172 unsigned char data[BRLAPI_MAXPACKETSIZE];
173 brlapi_versionPacket_t version;
174 brlapi_authClientPacket_t authClient;
175 brlapi_authServerPacket_t authServer;
176 brlapi_errorPacket_t error;
177 brlapi_getDriverSpecificModePacket_t getDriverSpecificMode;
178 brlapi_writeArgumentsPacket_t writeArguments;
179 brlapi_paramValuePacket_t paramValue;
180 brlapi_paramRequestPacket_t paramRequest;
181 uint32_t uint32;
182 } brlapi_packet_t;
183
184 /* brlapi_writePacket */
200 ssize_t brlapi_writePacket(brlapi_fileDescriptor fd, brlapi_packetType_t type, const void *buf, size_t size);
201
202 /* brlapi_readPacketHeader */
219 ssize_t brlapi_readPacketHeader(brlapi_fileDescriptor fd, brlapi_packetType_t *packetType);
220
221 /* brlapi_readPacketContent */
242 ssize_t brlapi_readPacketContent(brlapi_fileDescriptor fd, size_t packetSize, void *buf, size_t bufSize);
243
244 /* brlapi_readPacket */
266 ssize_t brlapi_readPacket(brlapi_fileDescriptor fd, brlapi_packetType_t *type, void *buf, size_t size);
267
268 /* brlapi_fd_mutex */
294 #ifdef __MINGW32__
295 #include <windows.h>
296 extern HANDLE brlapi_fd_mutex;
297 #else /* __MINGW32__ */
298 #include <pthread.h>
299 extern pthread_mutex_t brlapi_fd_mutex;
300 #endif /* __MINGW32__ */
301
302 /* @} */
303
304 #ifdef __cplusplus
305 }
306 #endif /* __cplusplus */
307
308 #endif /* BRLAPI_INCLUDED_PROTOCOL */
brlapi_authClientPacket_t::key
unsigned char key
Definition: brlapi_protocol.h:102
brlapi_paramValuePacket_t::subparam_hi
uint32_t subparam_hi
Definition: brlapi_protocol.h:151
brlapi_fileDescriptor
int brlapi_fileDescriptor
Definition: brlapi.h:159
brlapi_packet_t::authClient
brlapi_authClientPacket_t authClient
Definition: brlapi_protocol.h:174
brlapi_readPacketContent
ssize_t brlapi_readPacketContent(brlapi_fileDescriptor fd, size_t packetSize, void *buf, size_t bufSize)
brlapi_authServerPacket_t
Definition: brlapi_protocol.h:105
brlapi_versionPacket_t::protocolVersion
uint32_t protocolVersion
Definition: brlapi_protocol.h:96
brlapi_readPacketHeader
ssize_t brlapi_readPacketHeader(brlapi_fileDescriptor fd, brlapi_packetType_t *packetType)
brlapi_readPacket
ssize_t brlapi_readPacket(brlapi_fileDescriptor fd, brlapi_packetType_t *type, void *buf, size_t size)
brlapi_header_t::size
uint32_t size
Definition: brlapi_protocol.h:87
brlapi_getDriverSpecificModePacket_t::nameLength
unsigned char nameLength
Definition: brlapi_protocol.h:123
brlapi_paramRequestPacket_t::subparam_lo
uint32_t subparam_lo
Definition: brlapi_protocol.h:166
brlapi_writeArgumentsPacket_t::flags
uint32_t flags
Definition: brlapi_protocol.h:138
BRLAPI_MAXPACKETSIZE
#define BRLAPI_MAXPACKETSIZE
Definition: brlapi_protocol.h:56
brlapi_errorPacket_t::code
uint32_t code
Definition: brlapi_protocol.h:115
brlapi_errorPacket_t::type
brlapi_packetType_t type
Definition: brlapi_protocol.h:116
brlapi_paramValuePacket_t::param
brlapi_param_t param
Definition: brlapi_protocol.h:150
brlapi_authClientPacket_t
Definition: brlapi_protocol.h:100
brlapi.h
Types, defines and functions prototypes for BrlAPI&#39;s library.
brlapi_getDriverSpecificModePacket_t
Definition: brlapi_protocol.h:121
brlapi_errorPacket_t::packet
unsigned char packet
Definition: brlapi_protocol.h:117
brlapi_paramValuePacket_t
Definition: brlapi_protocol.h:148
brlapi_packet_t::uint32
uint32_t uint32
Definition: brlapi_protocol.h:181
brlapi_writePacket
ssize_t brlapi_writePacket(brlapi_fileDescriptor fd, brlapi_packetType_t type, const void *buf, size_t size)
brlapi_param_t
brlapi_param_t
Definition: brlapi_param.h:36
brlapi_errorPacket_t
Definition: brlapi_protocol.h:114
brlapi_packetType_t
uint32_t brlapi_packetType_t
Definition: brlapi.h:1293
brlapi_versionPacket_t
Definition: brlapi_protocol.h:95
brlapi_paramRequestPacket_t::param
brlapi_param_t param
Definition: brlapi_protocol.h:164
brlapi_packet_t
Definition: brlapi_protocol.h:171
brlapi_packet_t::version
brlapi_versionPacket_t version
Definition: brlapi_protocol.h:173
brlapi_fd_mutex
pthread_mutex_t brlapi_fd_mutex
brlapi_packet_t::error
brlapi_errorPacket_t error
Definition: brlapi_protocol.h:176
brlapi_writeArgumentsPacket_t
Definition: brlapi_protocol.h:137
brlapi_writeArgumentsPacket_t::data
unsigned char data
Definition: brlapi_protocol.h:139
brlapi_packet_t::writeArguments
brlapi_writeArgumentsPacket_t writeArguments
Definition: brlapi_protocol.h:178
brlapi_packet_t::paramRequest
brlapi_paramRequestPacket_t paramRequest
Definition: brlapi_protocol.h:180
brlapi_paramRequestPacket_t
Definition: brlapi_protocol.h:162
brlapi_paramRequestPacket_t::flags
uint32_t flags
Definition: brlapi_protocol.h:163
brlapi_authClientPacket_t::type
uint32_t type
Definition: brlapi_protocol.h:101
brlapi_paramValuePacket_t::flags
uint32_t flags
Definition: brlapi_protocol.h:149
brlapi_getDriverSpecificModePacket_t::name
char name
Definition: brlapi_protocol.h:124
brlapi_getDriverSpecificModePacket_t::magic
uint32_t magic
Definition: brlapi_protocol.h:122
BRLAPI_MAXPARAMSIZE
#define BRLAPI_MAXPARAMSIZE
Definition: brlapi_protocol.h:145
brlapi_header_t::type
brlapi_packetType_t type
Definition: brlapi_protocol.h:88
brlapi_packet_t::authServer
brlapi_authServerPacket_t authServer
Definition: brlapi_protocol.h:175
brlapi_paramRequestPacket_t::subparam_hi
uint32_t subparam_hi
Definition: brlapi_protocol.h:165
brlapi_paramValuePacket_t::subparam_lo
uint32_t subparam_lo
Definition: brlapi_protocol.h:152
brlapi_header_t
Definition: brlapi_protocol.h:86
brlapi_packet_t::getDriverSpecificMode
brlapi_getDriverSpecificModePacket_t getDriverSpecificMode
Definition: brlapi_protocol.h:177
brlapi_packet_t::paramValue
brlapi_paramValuePacket_t paramValue
Definition: brlapi_protocol.h:179