MGF Server  2.1
Multigaze framework server
 All Classes Functions
etiproto.h
1 /*
2  * etiproto.h - header file defining extension of RFB protocol for the purposes
3  * of eye-tracking information processing.
4  */
5 
6 #pragma once
7 
8 #include <map>
9 
10 
11 /*****************************************************************************
12  *
13  * Message types
14  *
15  *****************************************************************************/
16 
17 /* server -> client */
18 //Gaze Data messages
19 #define etiServerGazeSample 201 //send new eye tracking sample
20 #define etiServerGazeFixation 202 //send new eye tracking fixation
21 #define etiServerGazeBlink 203 //send new eye tracking blink
22 
23 //Client "control" messages
24 #define etiServerNick 205 //send new nickname
25 #define etiServerDescription 206 //send new description
26 #define etiServerAdd 207 //send add client to the tracking list
27 #define etiServerRemove 208 //send remove client from the tracking list
28 
29 #define etiServerMessage 209 //send message to the client
30 #define etiServerPoke 210 //send client poke
31 
32 /* client -> server */
33 //Gaze Data messages
34 #define etiClientGazeSample 251 //send new eye tracking sample
35 #define etiClientGazeFixation 252 //send new eye tracking fixation
36 #define etiClientGazeBlink 253 //send new eye tracking blink
37 
38 //Client "control" messages
39 #define etiClientNick 255 //send new nickname
40 #define etiClientDescription 256 //send new description
41 #define etiClientAdd 257 //send add client to the tracking list
42 #define etiClientRemove 258 //send remove client from the tracking list
43 
44 #define etiClientMessage 259 //send message
45 #define etiClientPoke 260 //send poke
46 
47 
48 /*****************************************************************************
49  *
50  * Server -> client message definitions
51  *
52  *****************************************************************************/
53 
54 /*-----------------------------------------------------------------------------
55  * etiServerGazeSample - Send gaze data sample.
56  *
57  * This message is followed by nPoints structures of etiGazeSample structures
58  */
59 typedef struct _etiServerGazeSampleMsg {
60  CARD8 type; // always = etiServerGazeSample
61  CARD8 pad1;
62  CARD16 id;
63  CARD16 pad2;
64  CARD16 nPoints;
66 
67 #define sz_etiServerGazeSampleMsg 8
68 
69 /*-----------------------------------------------------------------------------
70  * etiServerGazeFixation - Send gaze data fixation.
71  *
72  * This message is followed by nCount structures of etiGazeFixation structures
73  */
74 typedef struct _etiServerGazeFixationMsg {
75  CARD8 type; // always = etiServerGazeFixation
76  CARD8 pad1;
77  CARD16 id;
78  CARD16 pad2;
79  CARD16 nCount;
81 
82 #define sz_etiServerGazeFixationMsg 8
83 
84 /*-----------------------------------------------------------------------------
85  * etiServerGazeBlink - Send gaze data blink.
86  *
87  * This message is followed by nCount structures of etiGazeBlink structures
88  */
89 typedef struct _etiServerGazeBlinkMsg {
90  CARD8 type; // always = etiServerGazeBlink
91  CARD8 pad1;
92  CARD16 id;
93  CARD16 pad2;
94  CARD16 nCount;
96 
97 #define sz_etiServerGazeBlinkMsg 8
98 
99 /*-----------------------------------------------------------------------------
100  * etiServerNickMsg - send a client's new nickname that will be shown next to the
101  * eye mark.
102  *
103  * This message send number of symbols in the nickname and is followed by "length"
104  * characters
105  */
106 
107 typedef struct _etiServerNickMsg {
108  CARD8 type; /* always etiServerNick */
109  CARD8 length;
110  CARD16 id;
112 
113 #define sz_etiServerNickMsg 4
114 
115 /*-----------------------------------------------------------------------------
116  * etiServerDescriptionMsg - send a client's new description that will be shown
117  * in eye clients options.
118  *
119  * This message send number of symbols in the description and is followed by "length"
120  * characters
121  */
122 
123 typedef struct _etiServerDescriptionMsg {
124  CARD8 type; /* always etiServerDescription */
125  CARD8 length;
126  CARD16 id;
128 
129 #define sz_etiServerDescriptionMsg 4
130 
131 /*-----------------------------------------------------------------------------
132  * etiServerAdd - add a new client to the list of trackable marks.
133  *
134  * This message send the ID of the client to add. This message is followed by
135  * lengthNick + lengthDesc symbols, where lengthNick - length of server nickname,
136  * lengthDesc = length of description
137  */
138 typedef struct _etiServerAddMsg {
139  CARD8 type; /* always etiServerAdd */
140  CARD8 pad1;
141  CARD16 id;
142  CARD8 lengthNick;
143  CARD8 lengthDesc;
144  CARD16 pad2;
146 
147 #define sz_etiServerAddMsg 8
148 
149 /*-----------------------------------------------------------------------------
150  * etiServerRemove - remove a client from the list of trackable marks.
151  *
152  * This message send the ID of the client to remove
153  */
154 typedef struct _etiServerRemoveMsg {
155  CARD8 type; /* always etiServerRemove */
156  CARD8 pad1;
157  CARD16 id;
159 
160 #define sz_etiServerRemoveMsg 4
161 
162 /*-----------------------------------------------------------------------------
163  * etiServerMessageMsg - send a message to the client.
164  *
165  * This message send number of symbols in the description and is followed by "length"
166  * characters
167  */
168 
169 typedef struct _etiServerMessageMsg {
170  CARD8 type; // always etiServerDescription
171  CARD8 pad1;
172  CARD16 pad2;
173  CARD16 id; //source ID, 0 - means that message directly from the server
174  CARD16 length;
176 
177 #define sz_etiServerMessageMsg 8
178 
179 /*-----------------------------------------------------------------------------
180  * etiServerPoke - poke the client
181  *
182  * This message contain an ID of the client which mark should be poked
183  */
184 typedef struct _etiServerPokeMsg {
185  CARD8 type; // always = etiServerPoke
186  CARD8 pad;
187  CARD16 id;
189 
190 #define sz_etiServerPokeMsg 4
191 
192 
193 /*****************************************************************************
194  *
195  * Client -> server message definitions
196  *
197  *****************************************************************************/
198 
199 /*-----------------------------------------------------------------------------
200  * etiClientGazeSample - Send gaze data sample.
201  *
202  * This message is followed by nPoints structures of etiGazeSample structures
203  */
204 typedef struct _etiClientGazeSampleMsg {
205  CARD8 type; // always = etiClientGazeSample
206  CARD8 pad;
207  CARD16 nPoints;
209 
210 #define sz_etiClientGazeSampleMsg 4
211 
212 /*-----------------------------------------------------------------------------
213  * etiClientGazeFixation - Send gaze data fixation.
214  *
215  * This message is followed by nPoints structures of etiGazeFixation structures
216  */
218  CARD8 type; // always = etiClientGazeFixation
219  CARD8 pad;
220  CARD16 nPoints;
222 
223 #define sz_etiClientGazeFixationMsg 4
224 
225 /*-----------------------------------------------------------------------------
226  * etiClientGazeBlink - Send gaze data blink.
227  *
228  * This message is followed by nPoints structures of etiGazeBlink structures
229  */
230 typedef struct _etiClientGazeBlinkMsg {
231  CARD8 type; // always = etiClientGazeBlink
232  CARD8 pad;
233  CARD16 nPoints;
235 
236 #define sz_etiClientGazeBlinkMsg 4
237 
238 /*-----------------------------------------------------------------------------
239  * etiClientNickMsg - send a client's new nickname that will be shown next to the
240  * eye mark.
241  *
242  * This message send number of symbols in the nickname and is followed by "length"
243  * characters
244  */
245 
246 typedef struct _etiClientNickMsg {
247  CARD8 type; /* always etiClientNick */
248  CARD8 length;
249  //followed by *length* chars
251 
252 #define sz_etiClientNickMsg 2
253 
254 /*-----------------------------------------------------------------------------
255  * etiClientDescriptionMsg - send a client's new description that will be shown
256  * in eye clients options.
257  *
258  * This message send number of symbols in the description and is followed by "length"
259  * characters
260  */
261 
262 typedef struct _etiClientDescriptionMsg {
263  CARD8 type; /* always etiClientDescription */
264  CARD8 length;
265  //followed by *length* chars
267 
268 #define sz_etiClientDescriptionMsg 2
269 
270 /*-----------------------------------------------------------------------------
271  * etiClientAdd - add a new client to the list of trackable marks.
272  *
273  * This message send the ID of the client to add, length of the nickname and length of description.
274  * Its followed by lengthNick characters of client nickname and lengthDesc characters of client description
275  */
276 typedef struct _etiClientAddMsg {
277  CARD8 type; /* always etiClientAdd */
278  CARD8 pad1;
279  CARD8 lengthNick;
280  CARD8 lengthDesc;
282 
283 #define sz_etiClientAddMsg 4
284 
285 /*-----------------------------------------------------------------------------
286  * etiClientRemove - remove a client from the list of trackable marks.
287  *
288  * This message send the ID of the client to remove
289  */
290 typedef struct _etiClientRemoveMsg {
291  CARD8 type; /* always etiClientRemove */
293 
294 #define sz_etiClientRemoveMsg 1
295 
296 /*-----------------------------------------------------------------------------
297  * etiClientMessageMsg - send a message to the client.
298  *
299  * This message send number of symbols in the description and is followed by "length"
300  * characters
301  */
302 
303 typedef struct _etiClientMessageMsg {
304  CARD8 type; // always etiClientMessage
305  CARD8 pad;
306  CARD16 length;
308 
309 #define sz_etiClientMessageMsg 4
310 
311 /*-----------------------------------------------------------------------------
312  * etiClientPoke - poke the client
313  *
314  * This message contain an ID of the client which mark should be poked
315  */
316 typedef struct _etiClientPokeMsg {
317  CARD8 type; // always = etiClientPoke
319 
320 #define sz_etiClientPokeMsg 1